问题在于标题。 我想知道这个的原因是因为我正在编写一个tcp服务,并想探索一些原因,因为他们可能会对我的工作有所了解。
我期望使用不同的端口简化了单独的预期数据连接的处理,这将与控制连接的格式不同。 我相信这样可以让接收者简单地开始处理数据,而不必检查它是否是连接启动,如果使用端口21则需要完成。
这将允许最后一个项目符号的换行打印机的示例开始接收文本打印。 但是,我不确定当时是如何实际使用的(terminal上的程序会将端口20转发到它们的换行打印机,因为可能有一个FTP守护进程已经在监听21?)
至于另一个连接的原因,主要有三个原因:
传输效率是影响FTP实用性的重要因素。 如果使用不恰当的传输策略(例如,不合适的字节大小),文件传输可能非常昂贵(以CPU时间为单位),而且速度较慢(实时)。 应该尽力优化数据传输。 一个好的策略可能是允许通过单独的连接传输文件,或者closures并重新打开连接(也许使用不同的字节大小)。
[4]我们考虑使用两个全双工链路,一个用于控制
信息,其他的数据。 使用一个单独的控制链接
合作过程之间会简化中止,错误
恢复和同步。
可以修改FTP以允许以指定的模式和types将数据发送到指定的套接字。 TIP用户可以很方便地在高速行式打印机上获取他们的文件列表,从读卡器input他们的文件,并在卡片或磁带上进行备份。
过度工程可能是主要原因。
分离控制/数据连接的一个(不经常使用的)优点是,客户端可以在两个服务器之间开始传送,而不需要通过客户端传送数据。
过度工程并非如此。 它是这样devise的,以便允许不同的操作模式。 主动FTP现在很less使用,因为在这种模式下,服务器连接回客户端。 但是当时 – 在80年代 – 它工作得很好。 被动FTP在当今防火墙背后非常有用,在这种模式下,客户端连接到由服务器打开的端口; 客户端通常无法直接访问,因为他们前面有防火墙/ NAT /设备。 所以这种模式也是有道理的。
维基百科的文章有很好的,详细的信息: http : //en.wikipedia.org/wiki/FTP
FTP使用一个端口进行数据传输(20)和其他发送命令(21),GET,DIR,PUT等。
更详细的解释可以在这里find: http : //slacksite.com/other/ftp.html
HTH!