- 论坛徽章:
- 0
|
FTP 是一种档传输协议 (File Transfer Protocol),它的连接模式有两种: \r\n主动模式( active )和被动模式( passive )。以下说明 FTP 的连接是怎样创建的: \r\n\r\n在 active 模式下 (一般缺省的模式)﹕ \r\n1. FTP client 打开一个随机选择的TCP port 调用 FTP server 的 port 21请求连接。当顺 \r\n 利完成 Three-Way Handshake 之后,连接就成功创建,但这仅是命令通道的创建 \r\n 。 \r\n2.当两端需要传送数据的时候,client 通过命令通道用一个 port command 告诉 server \r\n ,client可以用另一个TCP port 做数据通道。 \r\n3.然后 server 用 port 20 和刚才 client 所告知的 TCP port 创建数据连接。请注意:连 \r\n 线方向这是从 server 到 client 的,TCP 封包会有一个 SYN flag。 \r\n4.然后 client 会返回一个带 ACK flag的确认封包,并完成另一次的 Three-Way \r\n Handshake 手续。这时候,数据通道才能成功创建。 \r\n5.开始数据传送。 \r\n\r\n在 passive 模式下 \r\n1.FTP client 打开一个随机选择的TCP port 调用 FTP server 的 port 21请求连接,并完 \r\n 成命令通道的创建。 \r\n2.当两端需要传送数据的时候,client 通过命令通道送一个 PASV command 给 \r\n server,要求进入 passive 传输模式。 \r\n3.然后 server 像上述的正常模式之第 2 步骤那样,挑一个TCP port ,并用命令通道 \r\n 告诉 client。 \r\n4.然后 client 用另一个TCP port 调用刚才 server 告知的 TCP port 来创建数据通道。此 \r\n 时封包带 SYN flag。 \r\n5.server 确认后响应一个 ACK 封包。并完成所有交握手续、成功创建数据通道。 \r\n6.开始数据传送。 \r\n\r\n在实际使用上, active mode 用来登录一些开设在主机上及没有安装防火墙的 FTP server,或是开设於 client side 的 FTP server! \r\n\r\nPassive mode (简称 PASV)用来登录一些架设於防火墙保护下而又是开设於主机上的 FTP server! \r\n\r\n如果您觉得太深奥而弄不清楚, 那就先用缺省的 active mode 登录, 失败改用 passive mode 登录就是了。 \r\n\r\n\r\nPS: 并不是每套 FTP 软件都支持 passive mode 登录 |
|