Skip to main content

3.2 建立数据连接 (Establishing Data Connections)

传输数据的机制包括将数据连接设置到适当的端口并选择传输参数。用户和服务器DTP都有默认数据端口。用户进程默认数据端口与控制连接端口相同 (即U)。服务器进程默认数据端口是与控制连接端口相邻的端口 (即L-1)。

传输字节大小为8位字节。此字节大小仅与数据的实际传输相关; 它与主机文件系统中数据的表示无关。

被动数据传输进程 (这可以是user-DTP或第二个server-DTP) 应在发送传输请求命令之前在数据端口上"侦听"。FTP请求命令确定数据传输的方向。服务器在接收到传输请求后, 将发起到端口的数据连接。建立连接后, 数据传输在DTP之间开始, 服务器PI向用户PI发送确认回复。

每个FTP实现都必须支持使用默认数据端口, 并且只有USER-PI可以发起更改为非默认端口。

用户可以通过使用PORT命令指定备用数据端口。用户可能希望将文件转储到TAC行式打印机或从第三方主机检索。在后一种情况下, 用户PI与两个服务器PI建立控制连接。然后告诉一个服务器 (通过FTP命令) "侦听"另一个将发起的连接。用户PI向一个服务器PI发送PORT命令, 指示另一个的数据端口。最后, 两者都被发送适当的传输命令。用户控制器和服务器之间发送的命令和回复的确切序列在FTP回复部分中定义。

一般来说, 维护数据连接是服务器的责任--发起它和关闭它。此规则的例外是当user-DTP在需要关闭连接以指示EOF的传输模式下发送数据时。服务器必须在以下条件下关闭数据连接:

  1. 服务器已完成在需要关闭以指示EOF的传输模式下发送数据。
  2. 服务器从用户接收ABORT命令。
  3. 端口规范被用户的命令更改。
  4. 控制连接合法或以其他方式关闭。
  5. 发生不可恢复的错误条件。

否则, 关闭是服务器选项, 服务器必须仅通过250或226回复向用户进程指示执行此选项。