【问题标题】:When should an FTP server connect to FTP client after PORT command?在 PORT 命令之后,FTP 服务器应该何时连接到 FTP 客户端?
【发布时间】:2014-08-02 07:37:41
【问题描述】:

我想为我的 FTP 服务器添加对 PORT 命令的支持。我正在阅读 RFC 959,但我不知道何时可以安全地连接到 FTP 客户端。例如,考虑这个序列:

PORT 127,0,0,1,34,34
LIST

FTP 客户端是在发出 PORT 命令之前开始侦听,还是在发出 LIST 命令之后开始侦听?因为如果服务器在收到 PORT 后立即尝试连接客户端,可能会失败,因为客户端可能还没有开始监听。

规范是怎么说的?服务器可以立即连接,还是应该等到它收到将使用数据连接的命令后?

【问题讨论】:

  • PORT 命令指示服务器连接到该端口。除非客户端已经在监听该端口,否则发出它是没有意义的。一方面,它无法知道端口是否可用。
  • @EJP 你只需要绑定一个端口来查看它是否可用,你不必监听它。

标签: ftp


【解决方案1】:

在收到请求数据传输的命令之前,服务器不应连接到客户端,例如LISTRETR。请参阅RFC 959 的第 7 节,其中显示了典型的操作顺序(早期的 RFC 没有正式的 MUST/MAY/SHOULD 规范)。

但是,由于PORT 命令中使用的端口通常是临时端口,因此客户端需要打开一个套接字来让操作系统分配一个端口号。这意味着在发送PORT 命令时,端口必须是打开的。但是,它可能还没有调用listen()

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多