为什么 FTP 协议设计为使用多个端口?

为什么 FTP 协议设计为使用多个端口?

问题就在标题中。我之所以想知道这一点,是因为我正在编写一个 tcp 服务,我想探索一些原因,因为它们可能会对我的工作有所帮助。

答案1

我期望使用不同的端口可以简化单独预期数据连接的处理,该连接将采用与控制连接不同的格式。我相信这将允许接收方简单地开始处理数据,而不必检查它是否是连接启动,如果使用端口 21,则需要这样做。

这将允许上一个示例中的换行打印机开始接收要打印的文本。但是,我不确定当时它是如何实际使用的(终端上的程序会将端口 20 转发到换行打印机,因为可能有一个 FTP 守护程序已经在监听 21?)

至于为什么要建立另一个连接,主要有三个原因:

传输效率是影响 FTP 实用性的一个重要因素。如果使用不适当的传输策略(例如,字节大小不适当),文件传输可能非常昂贵(就 CPU 时间而言)并且速度很慢(实时)。应尽一切努力优化数据传输。一个好的策略可能是允许通过单独的连接传输文件或关闭并重新打开连接(可能使用不同的字节大小)。

[4] 我们考虑使用两个全双工链路,一个用于控制信息,另一个用于数据。 在协作进程之间
使用单独的控制链路将简化中止、错误 恢复和同步。

修改 FTP 以允许以指定模式和类型将数据发送到指定套接字是理想的。这样,TIP 用户就会发现,在高速行式打印机上获取文件列表、从读卡器输入文件以及在卡片或磁带上保存备份都非常方便。

答案2

过度工程可能是主要原因。

分离控制/数据连接的一个(不常用的)优点是客户端可以在两个服务器之间启动传输,而无需数据通过客户端。

答案3

过度设计并非如此。它是这样设计的,以便允许不同的操作模式。如今,主动 FTP 很少使用,因为在这种模式下,服务器会连接回客户端。但在当时 - 在 80 年代 - 它运行得很好。如今,被动 FTP 在防火墙后面非常有用,在这种模式下,客户端会连接到服务器打开的端口;客户端通常不再直接可访问,因为它们前面有防火墙/NAT/设备。所以这种模式也是有意义的。

维基百科文章有详细的信息:http://en.wikipedia.org/wiki/FTP

答案4

FTP 使用一个端口进行数据传输(20),另一个端口用于发送命令(21),GET、DIR、PUT 等...

您可以在这里找到更详细的解释:http://slacksite.com/other/ftp.html

呼呼!

相关内容