FTP 的主动模式( active )和被动模式( passive )

FTP 是一种档传输协议 (File Transfer Protocol),它的联机模式有两种:主动模式( active )和被动模式( passive )。以下说明 FTP 的联机是怎样建立的。

active模式(一般预设的模式)

  1. FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求联机。当顺利完成 Three-Way Handshake 之后,联机就成功建立,但这仅是命令通道的建立。
  2. 当两端需要传送数据的时候,client 透过命令通道用一个 port command 告诉 server,client可以用另一个TCP port 做数据信道。
  3. 然后 server 用 port 20 和刚才 client 所告知的 TCP port 建立数据联机。请注意:连线方向这是从 server 到 client 的,TCP 封包会有一个 SYN flag。
  4. 然后 client 会返回一个带 ACK flag的确认封包﹐并完成另一次的 Three-Way Handshake 手续。这时候,数据信道才能成功建立。
  5. 开始数据传送。

passive模式

  1. FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求联机,并完成命令通道的建立。
  2. 当两端需要传送数据的时候,client 透过命令通道送一个 PASV command 给 server,要求进入 passive 传输模式。
  3. 然后 server 像上述的正常模式之第 2 步骤那样,挑一个TCP port ,并用命令通道告诉 client。
  4. 然后 client 用另一个TCP port 呼叫刚才 server 告知的 TCP port 来建立数据信道。此 时封包带 SYN flag。
  5. server 确认后回应一个 ACK 封包。并完成所有交握手续?成功建立数据信道。
  6. 开始数据传送。

在实际使用上, active mode 用来登入一些开设在主机上及没有安装防火墙的 FTP server,或是开设于 client side 的 FTP server!

Passive mode (简称 PASV)用来登入一些架设于防火墙保护下而又是开设于主机上的 FTP server!

如果您觉得太深奥而弄不清楚, 那就先用预设的 active mode 登入, 失败改用 passive mode 登入就是了。