FTP的主動模式和被動模式

2022-06-06 11:09:06 字數 1588 閱讀 7833

最近做乙個專案用到ftp和其它系統進行檔案傳輸,結果在ftp網路連線的問題上花了很多時間,由於太久沒搞多ftp,忘記了ftp不單單開放21埠,客戶端採用不同連線模式對網路有不同。在此重溫一下ftp的主動模式和被動模式的相關知識。

在使用ftp時,如果客戶端機器和ftp伺服器雙方之間的所有埠都是開放的,那連線不存在問題。如果客戶端與伺服器之間有防火牆,如果沒配置好防火策略和採用合適的連線模式,會導致登入成功,但無法list列表的問題。要避免出現這樣的問題,首先要了解ftp的工作模式。

1.ftp的port(主動模式)和pasv(被動模式)

(1) port(主動模式)

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客戶端軟體決定。

FTP主動模式和被動模式

ftp主動模式和被動模式 ftp是僅基於tcp的服務,不支援udp。與眾不同的是ftp使用2個埠,乙個資料埠和乙個命令埠 也可叫做控制埠 通常來說這兩個埠是21 命令埠 和20 資料埠 但ftp工作方式的不同,資料埠並不總是20。這就是主動與被動ftp的最大不同之處。一 主動ftp 主動方式的ftp...

ftp 主動模式和被動模式

專案中使用ftp client連線ftp伺服器上傳檔案時,遇到ftp能連線上,但是上傳失敗,執行 ftp.storefile filename,input 返回false,新增 ftp.enterlocalpassivemode 切換為被動模式上傳成功。折騰了幾個小時,於是覺得有必要了解下ftp主動...

ftp主動模式和被動模式

ftp是檔案傳輸協議的簡稱,ftp傳輸協議有著眾多的優點所以傳輸檔案時使用ftp協議的軟體很多,ftp協議使用的埠是21 也稱為控制埠 其實還有乙個資料埠20,根據ftp工作方式的不同,資料埠也不都是20,主動模式的被動模式使用的資料埠是不一樣的,下面我就一步一步介紹主動ftp模式和被動ftp模式的...