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


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

  無論是主動模式還是被動模式,其要進行文件傳輸都必須依次建立兩個連接,分別為命令連接與數據連結。而主動模式與被動模式的差異主要體現在數據連結通道上。為了說明兩者的差異,我將主要對這個數據連結進行比較詳細的說明。 
   當FTP客戶端需要登陸到FTP服務器上的時候,服務器與客戶端需要進行一系列的身份驗證過程,這個過程就叫做命令連接。如在客戶端向服務器發起連接請 求的時候,客戶端會隨即的選擇某個TCP端口來跟FTP服務器的21號端口進行連接,這主要是通過TCP三方握手來實現的。當三方握手完成之后,客戶端與 服務器之間便建立了命令連接通道。不過這個通道的用途是非常有限的,其主要用來傳輸FTP的相關指令。如查看文件列表、刪除文件等等,而不能夠用來在客戶 端與服務端進行文件傳輸。為此這個通道就被稱之為命令通道。而跟數據傳輸相關的為數據通道。 
   到客戶端與服務器建立了連接之后,可能客戶端暫時不需要進行數據傳輸。如只是需要查看目錄下的文件或則其他相關的動作。此時之需要命令連接通道就可以完 成了。如果此時客戶端需要往FTP服務器上上傳或者下載文件的話,就需要在客戶端與服務器端再建立一條額外的數據傳輸連接。 

二、主動模式的實現與特點。 
  當客戶端發出數據傳輸的指令之后(如上傳數據或者下載文件),客戶端會啟用另外一個端口監聽等待連接,並利用先前建立的命令連接通道告訴FTP服務器其監 聽的端口號。然后FTP服務器會利用端口20和剛才的FTP客戶端所告知的端口再次進行三方握手。三次握手成功后便建立了一條數據傳輸通道。注意此時數據 連結通道建立的過程中,是FTP服務器的20號端口主動連接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服務器部署在防火牆或者NAT服務器的背 后,則采用主動操作模式的客戶端只能夠建立命令連接而無法進行文件傳輸。如果部署完FTP服務器后,系統管理員發現用戶可以連接上FTP服務器,可以查看 目錄下的文件,但是卻無法下載或者上傳文件,如果排除權限方面的限制外,那么很有可能就是這個操作模式選擇錯誤。系統管理員告訴用戶選擇合適的操作模式, 基本上就可以解決文件傳輸的問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM