用實例講解 FTP 主動和被動模式

 
作者:vkvi 來源:千一網絡(原創) 時間:2009-7-2
 

FTP 連接

FTP 連接有兩種:控制連接和數據連接。

  • 控制連接也可以叫命令連接,是 FTP 命令用的。客戶端使用 1024 以後的端口(1025-65535,下同)與服務端 21 端口相連。
  • 數據連接是數據(比如上傳的文件、列表的目錄數據等)用的,客戶端仍然使用 1024 以後的端口與服務器端相連,此時服務器端端口號就取決於主動模式還是被動模式了,並且誰先發起連接也取決於主動模式還是被動模式。

數據連接模式

數據連接模式分爲主動模式和被動模式,默認是被動模式。主動模式就是服務端主動發起連接;被動模式就是客戶端主動發起連接,服務端處於被動狀態。

主動模式(Active ['æktiv] Mode)

客戶端仍然 1024 以後的端口,服務端使用 20 端口。

Command: PORT 192,168,1,5,19,89
Response: 200 PORT command successful.

可以看出客戶端要傳送或接收之前會發送一個 PORT 命令,表示使用主動模式,後面有逗號隔開的 6 個數字,前四個數字表示客戶端 IP,後兩個數字表示客戶端端口號(計算方法爲:19*256+89)。

服務端收到 PORT 命令後會迴應一個 200,表示主動模式 OK 了。

模式確定後,服務端就開始向客戶端發起連接。

被動模式(passive ['pæsiv] Mode)

客戶端、服務端都使用 1024 以後的端口。

Command: PASV
Response: 227 Entering Passive Mode (61,128,128,68,128,233)

可以看出客戶端要傳送或接收之前會發送一個 PASV 命令,沒有附帶參數,表示使用被動模式。

服務端收到後會迴應一個 227,用以響應 PASV 命令,後面有逗號隔開的 6 個數字,前四個數字表示服務端 IP,後兩個數字表示服務端端口號(計算方法爲:128*256+233)。

模式確定後,客戶端就開始向服務端發起連接。

主動被動模式的優缺點

主動模式是服務端用 20 端口去連客戶端 1024 以後的端口,如果客戶端防火牆禁掉了這些高位端口,服務端是連不上去的。

被動模式是客戶端用 1024 以後的端口去連服務端 1024 以後的端口,如果服務端防火牆禁掉了這些高位端口,客戶端是連不上去的。

有人問 IIS 支持主動模式還是被動模式?

其實你用主動和被動模式都可以連接 IIS 的 FTP,問題不在於 IIS 支不支持,而在於防火牆,一般設置來說:防火牆對出去的端口不怎麼嚴,對進來的端口有嚴格控制,這就得看看使用主動還是被動了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章