为什么我们需要ftp服务器和ftp客户端之间的两个连接

时间:2013-09-09 14:41:45

标签: ftp

根据FTP协议(rfc 959),当ftp客户端连接到ftp服务器时,应该在ftp客户端和ftp服务器之间建立控制连接。当ftp客户端发送{LIST,RETR,STOR等}请求时,应首先建立客户端与服务器之间的数据连接,并在数据连接中传输ftp数据。

所以,我的问题是:为什么我们需要第二个连接 - 数据连接?为什么不能在控制连接中传输所有请求,响应和ftp数据?

3 个答案:

答案 0 :(得分:5)

决定在FTP中进行单独的控制和数据连接是在1972年4月14日至15日在麻省理工学院的数据和文件传输研讨会上进行的。

RFC310“数据和文件传输协议的另一种看法”于4月3日发布,为研讨会做准备。该RFC的一些相关信息:

  • TENEX系统上使用的CPYNET协议关闭了控制连接并打开了一个可能具有不同字节大小的新协议。对于某些计算机,字节大小的选择可能很重要,例如:36位PDP-10。
  • 在TELNET之上的Ad-hoc协议,其中接收过程必须检查每个字节被认为是慢的。建议使用单独的连接来避免这种开销。
  • 在数据传输协议(相当于FTP中的现代数据连接)中,块模式被认为太昂贵,只是为了提供控制/数据分离和EOF指示。同样,建议打开/关闭单独的数据连接作为替代方案(这也允许选择适当的字节大小)。
  • 对于FTP有用性,效率被认为是重要的,并且建议再次建立可能具有不同字节大小的单独连接,注意关闭连接的模糊性可能是由于EOF指示或错误。
  • 用于TIPs / IMPs(终端接口消息处理器),其中一些没有文件系统,并且设备监听特定套接字,允许将数据发送到指定的套接字被认为很方便。
RFC327:4月27日发布的“数据和文件传输研讨会说明”简要总结了研讨会上的讨论和决策。文件传输的速度和效率被认为是重要的,字节大小和数据格式转换被认为是影响速度和效率的一些最重要的因素。最后,决定使用单独的控制和数据连接。做出了其他决定:控制连接将是TELNET连接,控制连接将使用ASCII人类可读命令和响应,DTP(数据传输协议)将作为单独的实体停止存在,并成为使用的协议FTP的数据连接。

最后,RFC354:1972年7月8日发布的“文件传输协议”成为FTP RFC的第一个具有独立控制和数据连接的版本。它使用了SOCK命令,而不是我们熟悉的PORTPASV命令。

附录

服务器间文件传输(AKA FTP bounce / FXP)出现在1953年8月12日发布的RFC542“ARPA网络文件传输协议”上,引入了PASV命令。

最后,1980年6月发布的RFC765“文件传输协议”被修改为使用TCP而不是NCP,更改了SOCK命令的PORT命令。

答案 1 :(得分:0)

当您有单独的数据连接时,您可以直接在两个FTP服务器之间传输文件,而不是通过客户端计算机传输文件。人们今天不使用此功能,但过去在数据传输速度非常慢的情况下它可能很有用。

答案 2 :(得分:0)

因为这不是FTP的工作原理。

此外,这项安排也有一些好处,包括:

  • 控制连接上不需要复杂的框架。

  • 处理特殊情况,例如取消数据连接,更简单。

  • 您可以一次运行多个传输,而无需建立多个控制连接。

  • 它启用了一种称为FXP的技巧,可以让你让两个FTP服务器直接在彼此之间交换数据。