主動模式FTP與被動模式FTP該如何選擇

2021-10-06 01:37:02 字數 3576 閱讀 9389

無論是主動模式還是被動模式,其要進行檔案傳輸都必須依次建立兩個連線,分別為命令連線與資料鏈結。而主動模式與被動模式的差異主要體現在資料鏈結通道上。為了說明兩者的差異,這塊主要對這個資料鏈結進行比較詳細的說明。 

當ftp客戶端需要登陸到ftp伺服器上的時候,伺服器與客戶端需要進行一系列的身份驗證過程,這個過程就叫做命令連線。如在客戶端向伺服器發起連線請求的時候,客戶端會隨即的選擇某個tcp埠來跟ftp伺服器的21號埠進行連線,這主要是通過tcp三方握手來實現的。當三方握手完成之後,客戶端與伺服器之間便建立了命令連線通道。不過這個通道的用途是非常有限的,其主要用來傳輸ftp的相關指令。如檢視檔案列表、刪除檔案等等,而不能夠用來在客戶 端與服務端進行檔案傳輸。為此這個通道就被稱之為命令通道。而跟資料傳輸相關的為資料通道。 

一、主動模式的實現與特點。 

二、被動模式的實現與特點。 

被動操作模式在建立命令連線通道的時候,跟主動操作模式是相同的。兩者主要的差異就在於資料傳輸通道的建立上面。但是如果使用者需要進行資料傳輸的時候, 則ftp客戶端會通過命令通道告訴ftp伺服器,如會向伺服器發出乙個pasv指令。這個指令就是告訴伺服器,要採用被動模式建立連線。如果採用被動操作模式,伺服器會選擇自身的乙個埠來進行監聽連線(而在主動操作模式下是利用客戶端的乙個埠來進行監聽連線),並再次利用命令連線通道告訴客戶端「我為你開啟了哪個埠,你要建立資料連線的話就跟我的哪個埠聯絡」。客戶端在接到這個資訊後,就會在自己作業系統上選擇乙個資料連線的通訊埠,與伺服器提 供的埠進行三方握手,並最終建立起可以進行資料傳輸的通道。 

可見,從技術上來說,主動模式與被動操作模式的主要差異就在於誰開啟乙個埠來進行監聽連線,誰等待(提供埠)、誰主動。雖然在技術上的差異比較小,但是其在具體的應用上卻有很大的不同。 

三、兩者該如何選擇? 

當企業的網路環境不同,兩個操作模式的應用效果是不同的。這主要是主動操作模式與被動操作模式在資料的傳輸通道建立上有一定的差異。從以上的分析中我們可以看出,在主動操作模式下,ftp伺服器的20號埠是主動同客戶端聯絡,建立資料傳輸通道的。而在被動操作模式下,則ftp伺服器是被動的等待,等待客戶端與其的20號埠建立連線。不要小看這個細小的差異,這個差異卻決定了兩者應用環境的不同。 

一般來說,如果這個ftp伺服器只對企業的內部區域網客戶提供檔案傳輸的服務,那麼基本上兩者的應用效果沒有很大的差異。但是如果企業網路外部的使用者也需要通過網際網路與ftp伺服器進行檔案傳輸的話,就會有很大的不同。這主要是因為,在資料通道建立的過程中,客戶端會在另乙個埠上監聽等待連線,並利用命令連線通道告訴伺服器其監聽的埠號。然後企業的邊界路由器會將ftp的ip位址轉換為合法的公網ip位址(假設企業由於公網ip位址有限,在邊界路由器上通過nat服務向外部使用者提供ftp連線)。如果此時採用的是自動操作模式的話,則在連線這個資料通道的過程中ftp伺服器會主動跟邊界路由器的埠進行通訊(因為ftp伺服器認為這台邊界路由器,其實就是nat伺服器,就是ftp客戶段)。但是實際上不是,而且也有可能沒有啟用這個埠。為此客戶端與ftp伺服器之間的連線最終沒有建立起來。所以說,如果採用主動操作模式的話,當ftp伺服器部署在nat等伺服器後面的時候,則ftp伺服器與客戶端之間只能夠建立命令連線通道,而無法建立起資料傳輸通道。如果ftp伺服器與客戶端之間還有防火牆的話,在連線的過程中也會出現以上類似的情況。 

而如果是採用被動操作模式的話,是客戶端主動跟伺服器的20號埠進行連線的。為此在資料傳輸通道建立的過程中,即使中間有nat伺服器或者防火牆,也 會準確無誤的連線到ftp伺服器的資料傳輸介面。所以說,如果在客戶端與ftp伺服器之間存在防火牆或者nat伺服器等類似裝置的話,那麼在ftp伺服器部署的時候,最好採用被動操作模式。否則的話,很可能只能夠建立命令連線通道,而無法進行資料傳輸。 

在 ftp伺服器部署的時候,其預設採用的是主動操作模式。如果企業ftp伺服器的使用者都是在內部網路中的,即不用像外部網路的使用者提供ftp連線的需求,那 麼採用這個預設操作方式就可以了。但是如果一些出差在外的員工或者員工在家庭辦公時也需要訪問企業內部的ftp伺服器,而此時出於安全的考慮或者公網ip 位址數量的限制,企業往往會把ftp伺服器部署在防火牆或者nat伺服器的後面,此時這個主動操作模式就不行了。如果企業中通過網際網路來訪問企業內部 ftp伺服器的員工比較多的時候,那麼最好能夠一勞永逸的解決這個問題,即在ftp伺服器上進行設定,強制客戶端在連線的時候採用被動操作模式。相反如果 使用者比較少的話,而且使用者又具有一定的計算機知識,那麼可以不在伺服器上進行設定。而是在連線的過程中,通過ftp客戶端來設定。如在某些ftp客戶端 上,會有乙個passive transfers等類似的選項。選中這個選項就表示以被動操作方式進行傳輸。而沒有選中這個選項的客戶端則仍然採用主動操作模式來進行連線。

ftp模式說明:

ftp是基於tcp的服務,使用2個埠,乙個資料埠和乙個命令埠(也可叫做控制埠)。

固定的命令埠:21

資料埠:(取決於連線模式)20或者》1024其它埠

主動ftp

主動方式的ftp是這樣的:客戶端從乙個任意的非特權埠n(n>1024)連線到ftp伺服器的命令埠,也就是21埠。然後客戶端開始監聽埠n+1,並傳送ftp命令"port n+1"到ftp伺服器。接著伺服器會從它自己的資料埠(20)連線到客戶端指定的資料埠(n+1)。

針對ftp伺服器前面的防火牆來說,必須允許以下通訊才能支援主動方式ftp:

1. 任何埠到ftp伺服器的21埠 (客戶端初始化的連線 s<-c)

2. ftp伺服器的21埠到大於1024的埠(伺服器響應客戶端的控制埠 s->c)

3. ftp伺服器的20埠到大於1024的埠(伺服器端初始化資料連線到客戶端的資料埠 s->c)

4. 大於1024埠到ftp伺服器的20埠(客戶端傳送ack響應到伺服器的資料埠 s<-c)

總結:伺服器主動連線客戶端

命令連線:客戶端》1024埠-> 伺服器21埠

資料連線:客戶端》1024埠<- 伺服器20埠

被動ftp

為了解決伺服器發起到客戶的連線的問題,人們開發了一種不同的ftp連線方式。這就是所謂的被動方式,或者叫做pasv,當客戶端通知伺服器它處於被動模式時才啟用。

在被動方式ftp中,命令連線和資料連線都由客戶端,這樣就可以解決從伺服器到客戶端的資料埠的入方向連線被防火牆過濾掉的問題。當開啟乙個 ftp連線時,客戶端開啟兩個任意的非特權本地埠(n > 1024和n+1)。第乙個埠連線伺服器的21埠,但與主動方式的ftp不同,客戶端不會提交port命令並允許伺服器來回連它的資料埠,而是提交 pasv命令。這樣做的結果是伺服器會開啟乙個任意的非特權埠(p > 1024),並傳送port p命令給客戶端。然後客戶端發起從本地埠n+1到伺服器的埠p的連線用來傳送資料。

對於伺服器端的防火牆來說,必須允許下面的通訊才能支援被動方式的ftp:

1. 從任何埠到伺服器的21埠 (客戶端初始化的連線 s<-c)

2. 伺服器的21埠到任何大於1024的埠 (伺服器響應到客戶端的控制埠的連線 s->c)

3. 從任何埠到伺服器的大於1024埠 (入;客戶端初始化資料連線到伺服器指定的任意埠 s<-c)

4. 伺服器的大於1024埠到遠端的大於1024的埠(出;伺服器傳送ack響應和資料到客戶端的資料埠 s->c)

總結:客戶端主動連線客戶端

命令連線:客戶端》1024埠-> 伺服器21埠

資料連線:客戶端》1024埠-> 伺服器》1024埠

FTP主動與被動模式

首先要知道ftp只支援tcp協議,不支援udp協調的。ftp主動模式與被動模式 主動模式 port 客戶端向服務端的ftp埠 預設是21 傳送請求,服務端ftp守護程序 執行緒收到請求後,建立一條命令鏈結。當需要傳輸資料時,客戶端通過這個命令鏈結傳送命令給服務端port命令,告訴服務端 我建立了乙個...

FTP主動模式與被動模式

ftp最權威的參考見rfc 959,有興趣的朋友可以仔細閱讀 ftp使用2個tcp埠,首先是建立乙個命令埠 控制埠 然後再產生乙個資料埠。主動模式使用tcp 21和20兩個埠。被動模式會工作在大於1024隨機埠。1 主動模式 port模式 客戶端從乙個任意的非特權埠n n 1024 連線到ftp伺服...

FTP主動模式與被動模式

一般來說,客戶端有乙個 socket 用來連線 ftp 伺服器的相關埠,它負責 ftp 命令的傳送和接收返回的響應資訊。一些操作如 登入 改變目錄 刪除檔案 依靠這個連線傳送命令就可完成。伺服器的命令埠號一般是21。如果使用主動模式,通常客戶端會傳送乙個埠號給伺服器端,並在這個埠監聽。伺服器需要連線...