重溫FTP的主動模式和被動模式

    最近作一個項目用到FTP和其它系統進行文件傳輸,結果在FTP網絡鏈接的問題上花了不少時間,因爲過久沒搞多FTP,忘記了FTP不僅僅開放21端口,客戶端採用不一樣鏈接模式對網絡有不一樣。在此重溫一下FTP的主動模式和被動模式的相關知識。服務器

    在使用FTP時,若是客戶端機器和FTP服務器雙方之間的全部端口都是開放的,那鏈接不存在問題。若是客戶端與服務器之間有防火牆,若是沒配置好防火策略和採用合適的鏈接模式,會致使登陸成功,但沒法List列表的問題。要避免出現這樣的問題,首先要了解FTP的工做模式。網絡

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

    (1) PORT(主動模式)orm

    PORT中文稱爲主動模式,工做的原理: FTP客戶端鏈接到FTP服務器的21端口,發送用戶名和密碼登陸,登陸成功後要list列表或者讀取數據時,客戶端隨機開放一個端口(1024以上),發送 PORT命令到FTP服務器,告訴服務器客戶端採用主動模式並開放端口;FTP服務器收到PORT主動模式命令和端口號後,經過服務器的20端口和客戶端開放的端口鏈接,發送數據,原理以下圖:class

    (2) PASV(被動模式)登錄

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

 

    2.兩種模式的比較服務器端

     從上面的運行原來看到,主動模式和被動模式的不一樣簡單概述爲: 主動模式傳送數據時是「服務器」鏈接到「客戶端」的端口;被動模式傳送數據是「客戶端」鏈接到「服務器」的端口。ftp

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

    被動模式只須要服務器端開放端口給客戶端鏈接就好了。

    3.不一樣工做模式的網絡設置

    我在實際項目中碰到的問題是,FTP的客戶端和服務器分別在不一樣網絡,兩個網絡之間有至少4層的防火牆,服務器端只開放了21端口, 客戶端機器沒開聽任何端口。FTP客戶端鏈接採用的被動模式,結果客戶端能登陸成功,可是沒法LIST列表和讀取數據。很明顯,是由於服務器端沒開放被動模式下的隨機端口致使。

    因爲被動模式下,服務器端開放的端口隨機,可是防火牆要不能所有開放,解決的方案是,在ftp服務器配置被動模式下開放隨機端口在 50000-60000之間(範圍在ftp服務器軟件設置,能夠設置任意1024上的端口段),而後在防火牆設置規則,開放服務器端50000-60000之間的端口端。

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

    4.如何設置 工做模式?

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

相關文章
相關標籤/搜索