FTP傳輸的PASV和Port 模式

FTP一般有兩個連接,傳輸命令和數據傳送。
FTP服務程式一般會支援兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode)。
先假設客戶端為C,服務端為S.
Port模式:
當客戶端C向服務端S連接後,使用的是Port模式,那麼客戶端C會發送一條命令告訴服務端S(客戶端C在本地打開了一個 port N在等著你進行數據連接),當服務端S收到這個Port命令後,就會向客戶端打開的那個 portN進行連接,數據連接便產生。
Pasv模式:
當客戶端C向服務端S連接後,服務端S會發訊息給客戶端C,訊息是(服務端S在本地打開了一個 portM,你可以連接我了),當客戶端C收到這個訊息後,就可以向服務端S的M port進行連接,連接成功後,數據連接也建立了。
從上面的解釋中了解兩種模式主要的不同是數據連接建立的不同,對於Port模式,是客戶端C在本地打開一個 port等服務端S去連接建立數據連接;
而Pasv模式就是服務端S打開一個 port等待客戶端C去建立一個數據連接。
簡單的說︰
一個就是FTP Server打開一個 port,Client可以去連接這個 port來建立連接。這就是PASV模式。
一個就是FTP Client打開一個 port,Server去連接這個 port來建立連接。這就是PORT模式。
FTP是一種檔案傳輸協定,它支援兩種模式,一種模式叫做Standard (也就是Active,主動模式),一種是 Passive (也就是PASV,被動模式)。
Standard模式 FTP 的客戶端發送 PORT 命令到FTP server。
Passive模式FTP的客戶端發送 PASV命令到 FTP Server。
處理防火牆和其他網路連接問題時最常見的一個難題是主動FTP與被動FTP的區別以及如何支援它們。
FTP是僅TCP的服務,不支援UDP。 與眾不同的是FTP使用2個 port,一個數據 port(20)和一個命令/控制 port(21)。
但當我們發現根據(FTP工作)模式的不同,數據 port並不總是20時,混亂產生了。


被動FTP詳述
為了解決伺服器發起到客戶的連接的問題,人們開發了一種不同的FTP連接模式。就是所謂的被動模式,或者叫做PASV,當客戶端通知伺服器它處於被動模式時才啟用。
在被動模式FTP中,命令連接和數據連接都由客戶端,這樣就可以解決從伺服器到客戶端的數據 port的入方向連接被防火牆過濾掉的問題。
當開啟一個FTP連接時,客戶端打開兩個任意的非特定本地 port(N > 1024和N+1)。第一個 port連接伺服器的21 port,但與主動模式的FTP不同,客戶端不會提交PORT命令並允許伺服器來回連它的數據 port,而是提交PASV命令。
這樣做的結果是伺服器會開啟一個任意的非特定 port(P > 1024),並發送PORT P命令給客戶端。然後客戶端發起從本地 portN+1到伺服器的 portP的連接用來傳送數據。
對於伺服器端的防火牆來說,必須允許下面的通訊才能支援被動模式的FTP:

1.從任何 port到伺服器的21 port (客戶端初始化的連接 S<-C)
2.伺服器的21 port到任何大於1024的 port (伺服器附應到客戶端的控制 port的連接 S->C)
3.從任何 port到伺服器的大於1024 port (入;客戶端初始化數據連接到伺服器指定的任意 port S<-C)
4.伺服器的大於1024 port到遠程的大於1024的 port(出;伺服器發送ACK附應和數據到客戶端的數據 port S->C)

主動FTP詳述
客戶端從一個任意的非特定 portN(N>1024)連接到FTP伺服器的命令 port,也就是21 port。
然後客戶端開始監聽 portN+1,並發送FTP命令“port N+1”到FTP伺服器。接著伺服器會從它自己的數據 port(20)連接到客戶端指定的數據 port(N+1)。
針對FTP伺服器前面的防火牆來說,必須允許以下通訊才能支援主動模式FTP︰

1.任何 port到FTP伺服器的21 port (客戶端初始化的連接 S<-C)
2.FTP伺服器的21 port到大於1024的 port(伺服器附應客戶端的控制 port S->C)
3.FTP伺服器的20 port到大於1024的 port(伺服器端初始化數據連接到客戶端的數據 port S->C)
4.大於1024 port到FTP伺服器的20 port(客戶端發送ACK附應到伺服器的數據 port S<-C)

總結:
主動FTP︰
命令連接︰客戶端 >1024 port -> 伺服器 21 port
數據連接︰客戶端 >1024 port <- 伺服器 20 port
被動FTP︰
命令連接︰客戶端 >1024 port -> 伺服器 21 port
數據連接︰客戶端 >1024 port -> 伺服器 >1024 port
主動與被動FTP優缺點總結︰
主動FTP對FTP伺服器的管理有利,但對客戶端的管理不利。因為FTP伺服器企圖與客戶端的高位隨機 port建立連接,而這個 port很有可能被客戶端的防火牆阻塞掉。
被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連接,其中一個連到一個高位隨機 port,而這個 port很有可能被伺服器端的防火牆阻塞掉。
折衷的辦法:
既然FTP伺服器的管理員需要他們的伺服器有最多的客戶連接,那麼必須支援被動FTP。可以透過為FTP伺服器指定一個有限的 port範圍來減小伺服器高位 port的暴露。
這樣,不在這個範圍的任何 port會被伺服器的防火牆阻塞。雖然這沒有消除所有針對伺服器的危險,但它大大減少了危險。

留言

這個網誌中的熱門文章

隱藏檔案 及 將已註冊完的軟體取消註冊

notepad++ for procomm plus

ARP