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

2021-05-24 15:55:25 字數 2546 閱讀 8021

在linux作業系統上,ftp伺服器是幾個常用的關鍵應用之一。ftp是一種檔案傳輸協議,主要用來在不同的主機之間實現檔案的傳送。通常情況下完成乙個檔案的傳輸需要有命令連線通道與資料鏈結通道兩個通道。而建立這些通道的方法不同,又有主動模式與被動模式的區分。在linux作業系統上,vsftpd是最常用的乙個ftp軟體,其支援這兩種模式。為此系統管理員需要了解這兩種連線模式的不同點,並在實際工作中根據企業的應用情況來選擇合適的模式。

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

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

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

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

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

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

三、兩者該如何選擇?

當企業的網路環境不同,兩個操作模式的應用效果是不同的。這主要是主動操作模式與被動操作模式在資料的傳輸通道建立上有一定的差異。從以上的分析中我們可以看出,在主動操作模式下,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協議,不支援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。如果使用主動模式,通常客戶端會傳送乙個埠號給伺服器端,並在這個埠監聽。伺服器需要連線...