3.2 建立数据连接 传输数据的机制是由建立数据连接到适当端口以及选择传输参数组成的。用户数据传输进程与服务端数据传输进程都有默认的数据端口。用户进程的默认数据端口与控制端口是同一端口。服务端进程的默认数据端口是与控制端口紧邻的端口(例如,21-1)。
传输比特大小是8位。这个大小只与数据的真实传输有关;与主机的文件系统的数据表示无关。
被动数据传输进程(可能是用户数据传输进程或服务端数据传输进程)应该在发送传输请求命令前“监听”数据端口。FTP请求命令决定了数据传输的方向。服务端,根据接收的传输请求,将在相应端口初始化数据连接。当连接建立后,数据传输就在两个数据传输进程之间进行,并且服务端协议解释器发送确认信息给用户解释器。
每个FTP实现必须支持使用默认数据端口,并且只有用户协议解释器可以初始化一个非默认端口的改变。
用户可以通过PORT命令来指定一个改变的端口。用户可能想要把一个文件丢到TAC line printer上,或从第三方主机上获得。在下面的情况中,用户协议解释器与两个服务端协议解释器建立了命令连接。一个服务端被告之(通过FTP命令)“监听”一个连接,而这个连接是由另一个服务端初始化的。然后用户协议解释器发送给一个服务端协议解释器PORT命令以指明另一个服务端的数据端口。最后,向两边发送适当的传输命令。在用户控制与服务端之间准确的命令顺序和响应请参见FTP Replies章节。
总的来说,是由服务端负责维护数据连接的——初始化连接与关闭连接。例外情况是,当客户端数据传输进程在传输模式下通过EOF标识指示关闭连接。服务端必须在以下情况关闭数据连接:
1. 服务端在传输模式下完成发送数据,这要求通过关闭连接来指示EOF。
2. 服务端接收到来自用户的ABORT命令。
3. 用户使用命令指明端口改变。
4. 控制连接合法或不合法地关闭了。
5. 不可恢复的错误状况发生。
服务端要关闭数据连接必须向用户返回250或226指示。
发表于 @
2008年07月11日 21:48:00 | | 编辑|
举报| 收藏