(轉)FTP的PORT(主動模式)和PASV(被動模式)


http://my.oschina.net/binny/blog/17469(轉)

以前才用Linux的時候,用Ftp的時候就遇到鏈接成功,就是查看不到服務器上的數據,之前大致查了下明白了,現在看到一篇比較清楚的文章轉載記錄下,加深印象;其實簡單來講就是:主動模式的FTP是指服務器主動連接客戶端的分配的隨機數據端口(1024+),被動模式的FTP是指服務器被動地等待客戶端連接自己的隨機數據端口(1024+);

 

 1.FTP的PORT(主動模式)和PASV(被動模式)

    (1) PORT(主動模式)也叫Standard模式

    PORT中文稱為主動模式,工作的原理: FTP客戶端連接到FTP服務器的21控制端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,客戶端隨機開放一個端口(1024以上),發送 PORT命令到FTP服務器,告訴服務器客戶端采用主動模式並開放端口;FTP服務器收到PORT主動模式命令和端口號后,通過服務器的20數據端口和客戶端開放的端口連接,發送數據,原理如下圖:

    (2) PASV(被動模式)

    PASV是Passive的縮寫,中文成為被動模式,工作原理:FTP客戶端連接到FTP服務器的21控制端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,發送PASV命令到FTP服務器, 服務器在本地隨機開放一個端口(1024以上),然后把開放的端口告訴客戶端, 客戶端再連接到服務器開放的端口進行數據傳輸,原理如下圖:

 

    2.兩種模式的比較

     從上面的運行原來看到,主動模式和被動模式的不同簡單概述為: 主動模式傳送數據時是“服務器”連接到“客戶端”的端口;被動模式傳送數據是“客戶端”連接到“服務器”的端口。

    主動模式需要客戶端必須開放端口給服務器,很多客戶端都是在防火牆內,開放端口給FTP服務器訪問比較困難。

    被動模式只需要服務器端開放端口給客戶端連接就行了。

    3.不同工作模式的網絡設置

    我在實際項目中碰到的問題是,FTP的客戶端和服務器分別在不同網絡,兩個網絡之間有至少4層的防火牆,服務器端只開放了21控制端口, 客戶端機器沒開放任何端口。FTP客戶端連接采用的被動模式,結果客戶端能登錄成功,但是無法LIST列表和讀取數據。很明顯,是因為服務器端沒開放被動模式下的隨機端口導致。

    由於被動模式下,服務器端開放的端口隨機,但是防火牆要不能全部開放,解決的方案是,在ftp服務器配置被動模式下開放隨機端口在 50000-60000之間(范圍在ftp服務器軟件設置,可以設置任意1024上的端口段),然后在防火牆設置規則,開放服務器端50000-60000之間的端口端。

    主動模式下,客戶端的FTP軟件設置主動模式開放的端口段,在客戶端的防火牆開放對應的端口段。

 

    4.如何設置 工作模式?

    哈哈,有人可能會問FTP服務器如何設置工作模式?實時上FTP服務器一般都支持主動和被動模式,連接采用何種模式是有FTP客戶端軟件決定。

 

   5. VSFTP關於主動模式被動模式的配置

   pasv_enable=YES    //開啟被動模式,默認是YES

具體可以查下VSFTP的主動被動模式相關配置,有說明。也可以參考:http://liang29731611.iteye.com/blog/1585135


免責聲明!

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



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