Ftp協議的兩種工作模式:主動模式active和被動模式passive
FTP 是一種數據傳輸協議 (File Transfer Protocol),它的連接模式有兩種: 主動模式( active )和被動模式( passive )。
以下說明FTP的連接是怎樣建立的:
在 active 模式下 (一般預設的模式):
FTP client 開啟一個隨機選擇的TCP port 呼叫 FTP server 的 port 21請求建立連接。當完成 Three-Way Handshake 之后,連接就成功建立,但這僅是命令通道的建立。
當兩端需要傳送數據資料的時候,client 透過命令通道用一個 port command 告訴 server ,client可以用另一個TCP port 做數據通道。
然后 server 用 port 20 和剛才client 所告知的 TCP port 建立數據連接。注意:連接方向是從server 到 client 的,TCP 分組中會有一個 SYN flag。
然后 client 會返回一個帶 ACK flag的確認分組,并完成另一次的 Three-Way Handshake 過程。這時候,數據連接才能成功建立。開始數據傳送。
在 passive 模式下:
FTP client 開啟一個隨機選擇的TCP port 呼叫 FTP server 的 port 21請求建立連接,完成命令通道的建立。
當兩端需要傳送數據的時候,client 通過命令通道發送一個 PASV command 給server,要求進入 passive 傳輸模式。
然后 server 像上述的正常模式之第 2 步驟那樣,挑一個TCP port ,并用命令通道告訴 client。
然后 client 用另一個TCP port 呼叫剛才 server 告知的 TCP port 來建立數據通道。此時分組中帶有 SYN flag。
server 確認后回送一個 ACK 分組。并完成所有握手過程、成功建立數據通道。
開始數據傳送。 在實際使用中, active mode 用來登入一些架設在主機上沒有安裝防火墻的 FTP server,或是架設在 client side 的 FTP server! Passive mode (簡稱 PASV)用來登陸一些架設于防火墻保護下而又是開設于主機上的 FTP server!