FTP之主動模式vs被動模式

2022-07-08 21:30:15 字數 2259 閱讀 1245

背景說明

關於ftp

ftp是基於tcp的乙個服務。它之所以特別是特別在它使用了兩個埠,乙個用來傳送資料,乙個用來傳送命令。大家通常理解的,是用來傳送命令的使用21埠,用來傳送資料的使用20埠。但實際上並不是總是用20埠進行資料傳輸的,這還是要看使用的模式。

ftp:主動模式

在主動模式中,ftp客戶端使用乙個非分配埠(n>1023)與ftp服務端的21命令埠建立連線,並開始傾聽n+1埠,同時通過21埠將n+1埠告訴ftp服務端。ftp服務端獲取到客戶端告訴它的n+1埠後,使用資料傳輸的20埠與ftp客戶端n+1埠建立連線,從而進行資料傳輸。圖示如下:

第一步:ftp客戶端通過1026埠(n>1023)與ftp服務端的21埠建立通訊,並告訴ftp服務端它監聽的資料傳輸埠是1027。

第二步:ftp服務端傳送ack給ftp客戶端的1026埠。

第三步:ftp服務端通過資料埠20埠與ftp客戶端1027埠建立連線。

第四步:ftp客戶端傳送ack給ftp服務端以確認建立連線。

根據上述描述,站在ftp服務端防火牆的角度,需要開通以下網路關係:

ftp客戶端任意埠到ftp服務端21埠。

ftp服務端21埠到ftp客戶端的大於1023埠。

ftp服務端20埠到ftp客戶端的大於1023埠。

ftp客戶端大於1023埠到ftp服務端20埠。

可以看出,ftp主動模式最大的問題是,ftp客戶端不是直接建立到ftp服務端20資料傳輸埠的連線,而只是告訴ftp服務端自己監控的埠,由ftp服務端建立連線。這會造成ftp客戶端的防火牆認為這是乙個外部建立的連線而被攔截掉。

ftp:被動模式

為了解決主動模式中由於ftp服務端建立連線造成的問題,所以ftp有另一種模式——被動模式。在ftp被動模式中,ftp客戶端負責建立命令傳輸和資料傳輸兩條連線,從而解決防火牆攔截ftp服務端建立連線到ftp客戶端的問題。當ftp客戶端建立ftp連線的時候,ftp客戶端會開通隨機的兩個埠n和n+1(n>1023)。其中,n埠與ftp服務端21埠建立通訊,並傳送pasv命令到ftp服務端。ftp服務端接收到pasv命令之後,會隨機建立乙個埠p(p>1023),並將埠p返回給ftp客戶端。ftp客戶端拿到p埠後,就會通過n+1埠與p埠建立資料傳輸連線。圖示如下:

第一步:ftp客戶端與ftp服務端命令傳輸埠21建立通訊,並傳輸pasv命令。

第二步:ftp服務端通過21埠響應ftp客戶端1026埠,並告訴ftp客戶端它將監聽2024埠作為資料傳輸埠。

第三步:ftp客戶端1027埠與ftp服務端2024埠建立連線。

第四步:ftp服務端通過2024埠返回ack確認給ftp客戶端1027埠。

根據上述描述,站在ftp服務端防火牆的角度,需要開通以下網路關係:

1.ftp客戶端任意埠到ftp服務端21埠。

2.ftp服務端21埠到ftp客戶端的大於1023埠。

3.ftp客戶端任意埠到ftp服務端的大於1023埠。

4.ftp服務端大於1023埠到ftp客戶端大雨1023埠。

由此可見,被動模式解決了主動模式在客戶端上面開通網路關係的問題。但存在另乙個問題,就是ftp客戶端需要開通網路關係到ftp服務端的所有大於1023埠,這可能也是網路安全不允許的。不過現在有些ftp可以指定乙個範圍的埠,以達到控制安全的作用。

乙個細節

在使用ftp命令列開啟ftp連線進行通訊的時候,有時候會有這樣的響應:

port 192,168,150,80,14,178

227 entering passive mode (192,168,150,90,195,149)

這些響應中,那串數子頭4個是ip位址,後兩位是表示埠,埠的計算是將第5位數乘以256加上第六位數。如192,168,150,90,195,149,則埠為195*256+149=50069。

參考資料

active ftp vs. passive ftp, a definitive explanation

這篇文章很詳細,看不明我寫的中文的,可以看這篇英文的。

mysql 主動 被動模式 ftp主動模式被動模式

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

FTP主動模式及被動模式

起初,ftp並不是應用於ip網路上的協議,而是arpanet網路中計算機間的檔案傳輸協議,arpanet是美國國防部組建的老網路,於1960 1980年使用。在那時,ftp的主要功能是在主機間高速可靠地傳輸檔案。目前ftp仍然保持其可靠性,即使在今天,它還允許檔案遠端訪問。這使得使用者可以在某個系統...

FTP主動模式及被動模式

ftp主動模式及被動模式 ftp的特殊性 大多數的tcp服務是使用單個的連線,一般是客戶向伺服器的乙個周知埠發起連線,然後使用這個連線進行通訊。但是,ftp協議卻有所不同,它使用雙向的多個連線,而且使用的埠很難預計。一般,ftp連線包括 乙個控制連線 control connection 這個連線用...