6

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

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

4

3 回答 3

7

1972 年 4 月 14 日至 15 日,在 MIT 的数据和文件传输研讨会上决定在 FTP 中使用单独的控制和数据连接。

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

  • TENEX 系统上使用的 CPYNET 协议关闭了控制连接并打开了一个可能不同字节大小的新连接。字节大小的选择对于某些计算机可能很重要,例如:36 位 PDP-10。
  • TELNET 之上的 Ad-hoc 协议,其中接收进程必须检查每个字节被认为很慢。建议使用单独的连接来避免这种开销。
  • 在数据传输协议(相当于 FTP 中的现代数据连接)中,块模式被认为成本太高,仅提供控制/数据分离和 EOF 指示。同样,建议打开/关闭单独的数据连接作为替代方案(这也将允许选择适当的字节大小)。
  • 对于 FTP 的实用性,效率被认为很重要,并且再次建议使用可能不同字节大小的单独连接,并指出关闭连接可能是由于 EOF 指示或错误导致的模棱两可。
  • 对于在 TIP/IMP(终端接口消息处理器)中使用,其中一些没有文件系统,并且有设备侦听特定的套接字,允许将数据发送到指定的套接字被认为是方便的。

RFC327:“数据和文件传输研讨会笔记”,于 4 月 27 日发布,简要总结了研讨会中的讨论和做出的决定。文件传输的速度和效率被认为很重要,字节大小和数据格式转换被认为是影响速度和效率的一些最重要的因素。最后,决定使用单独的控制和数据连接。做出了其他决定:控制连接将是 TELNET 连接,控制连接将使用 ASCII 人类可读的命令和响应,并且 DTP(数据传输协议)将不再作为单独的实体存在,并成为在FTP的数据连接。

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

附录

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

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

于 2013-09-09T23:53:45.310 回答
0

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

于 2013-09-09T15:05:41.237 回答
0

因为这不是 FTP 的工作方式。

此外,这种安排还有一些好处,包括:

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

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

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

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

于 2013-09-09T15:07:30.947 回答