【问题标题】:Is an FTP error (503 Bad sequence of commands) the result of a client issue or a server issueFTP 错误(503 错误的命令序列)是客户端问题还是服务器问题的结果
【发布时间】:2016-06-06 07:17:55
【问题描述】:

我有一个在 AWS 虚拟服务器上运行的 FTP 服务器。在一天的时间里,我们有大约 100 个用户连接到它,上传图像和其他文件。除了一个之外,其他所有工作都完美无缺。文件进来了,没问题。

我们有 1 个单用户导致生成以下日志行 - 用户名和 IP 已被有意删除,并添加了“***”以突出显示错误行:

> 227 Entering Passive Mode (54,79,122,6,195,96)
> STOR media/UV1358A_3.jpg
> 150 Opening data channel for file upload to server of "/media/UV1358A_3.jpg"
> 226 Successfully transferred "/media/UV1358A_3.jpg"
> PASV
> 227 Entering Passive Mode (54,79,122,6,195,141)
> STOR media/UV1358A_4.jpg
> 150 Opening data channel for file upload to server of "/media/UV1358A_4.jpg"
> PASV
> 227 Entering Passive Mode (54,79,122,6,195,136)
> 226 Successfully transferred ""
> STOR media/UV1358A_5.jpg
***********************************************
> 503 Bad sequence of commands.
***********************************************
> PASV
> 227 Entering Passive Mode (54,79,122,6,195,80)
> PORT 122,99,115,5,212,227
> 200 Port command successful
> PORT 122,99,115,5,226,227
> 200 Port command successful
> PORT 122,99,115,5,130,124
> 200 Port command successful
> STOR media/UV1358A_9.jpg
> 150 Opening data channel for file upload to server of "/media/UV1358A_9.jpg"
> PORT 122,99,115,5,152,62
> 200 Port command successful
> STOR media/UV1358A_10.jpg
> 150 Opening data channel for file upload to server of "/media/UV1358A_10.jpg"
> PORT 122,99,115,5,161,49
> 200 Port command successful

我们在 Windows 2012 机器上使用 FileZilla Server 0.9.55。

我的问题,如标题所述,本质上是..这是我们在服务器端的问题,还是他们的问题? 这个 503 错误是否总是由 FTP 客户端搞砸了,还是 FTP 服务器可能解释错误?

我很高兴回到客户那里并说“这是我们的问题”,但我怀疑这不是我们的问题。

谢谢

【问题讨论】:

    标签: ftp filezilla ftp-server


    【解决方案1】:

    客户端在等待上一次传输(STOR 命令)完成(226 响应)之前发送PASV 命令以启动另一个文件传输:


    第一次传输开始:

    > PASV
    < 227 Entering Passive Mode (54,79,122,6,195,141)
    > STOR media/UV1358A_4.jpg
    < 150 Opening data channel for file upload to server of "/media/UV1358A_4.jpg"
    

    PASV 命令用于在第一次传输完成之前进行另一次传输:

    > PASV
    < 227 Entering Passive Mode (54,79,122,6,195,136)
    

    第一次传输现在才完成。消息中的文件名丢失,因为 FileZilla 服务器在处理无序的PASV 命令时重置文件传输数据(包括文件名)(实际上它应该更好地拒绝PASV 命令已经使用503)。

    > 226 Successfully transferred ""
    

    另一个转移的请求。失败是因为 FileZilla 服务器在第一次文件传输完成时忘记了乱序的PASV 命令。

    > STOR media/UV1358A_5.jpg
    < 503 Bad sequence of commands.
    

    【讨论】:

    • 感谢马丁的详细回复。客户说他们正在使用 PHP 的内置 FTP 库。我将在这里冒险并说他们只是使用单线程循环来处理要上传的文件。他们已经说过他们可以顺利地将文件上传到数百个其他客户的 ftp 服务器,而我们是唯一一个麻烦的,所以他们最终不会进行任何调试来尝试解决问题。
    • 如果您使用非阻塞 API (ftp_nb_fput),PHP FTP 库不会以上述方式保护您不违反协议。我能够轻松地重现这一点。使用多线程代码也可能会重现这种情况,尽管我没有尝试过。
    • 您不是在地理位置上靠近客户吗?这可能会导致其他服务器的差异。如果延迟较低,出现这种竞争条件的机会就会增加。
    • 马丁,我不知道他们的服务器和我们的服务器在哪里。我们的在 AWS 并由其他人照顾,所以我不确定物理位置,但真的“不应该”重要吗?无论哪种方式,我认为连接到服务器的 ftp 客户端(或站点代码)有责任以正确的顺序发送各种命令,与框架无关。这就是我对原始问题的理解。 :-)
    • 当然,没关系。我只是想建议可能的客户端错误如何仅在您的服务器上出现。
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2011-11-13
    • 2019-06-26
    相关资源
    最近更新 更多