FTP協議的主動模式和被動模式的區別

2022-06-24 02:33:12 字數 3965 閱讀 3312

最近準備做乙個《ftpcopy系列教程》,主要講解ftp協議主動模式和被動模式的區別、以及ftp伺服器的安裝部署,然後通過幾個常用例項演示,詳細講解如何使用ftpcopy進行資料自動備份。

ftp的中文名稱是「檔案傳輸協議」,是file transfer protocol三個英文單詞的縮寫。ftp協議是tcp/ip協議組中的協議之一,其傳輸效率非常高,在網路上傳輸大的檔案時,經常採用該協議。

(1)伺服器端需要安裝ftp服務軟體,常用的有filezilla server、iis、serv-u、ossftp等等。

(2)ftp客戶端軟體就比較多了,常用的有filezilla、flashfxp、winscp、甚至在瀏覽器和windows資源管理器中輸入ftp位址都可以當做ftp客戶端來使用。我們的ftpcopy也屬於ftp客戶端。

預設情況下,伺服器21埠作為命令埠,20埠為資料埠。但被動模式下就有所差別了。

剛接觸ftp的朋友,經常搞不清楚ftp的主動模式和被動模式,造成連線被防火牆攔截,下面我們就詳細了解下ftp的這兩種模式:

首先,來了解下ftp的主動模式,主動模式是ftp的預設模式,也稱為port模式。

1. 在主動模式下,客戶端會開啟n和n+1兩個埠,n為客戶端的命令埠,n+1為客戶端的資料埠。

第一步,客戶端使用埠n連線ftp伺服器的命令埠21,建立控制連線並告訴伺服器我這邊開啟了資料埠n+1。

第二步,在控制連線建立成功後,伺服器會使用資料埠20,主動連線客戶端的n+1埠以建立資料連線。這就是ftp主動模式的連線過程。

我們可以看到,在這條紅色的資料連線建立的過程中,伺服器是主動的連線客戶端的,所以稱這種模式為主動模式。

上面這張圖是通過netstat命令檢視到的ftp主動模式下tcp的連線資訊,首先客戶端使用49195埠連線伺服器21埠建立控制連線,然後伺服器使用20埠連線客戶端49197埠建立資料連線

這裡需要補充下,客戶端的命令埠和資料埠實際中並不是有些文章寫道的n和n+1的關係,兩個埠比較接近而已。

2. 主動模式有什麼利弊呢?

主動模式對ftp伺服器的管理有利,因為ftp伺服器只需要開啟21埠的「准入」和20埠的「准出」即可。

但這種模式對客戶端的管理不利,因為ftp伺服器20埠連線客戶端的資料埠時,有可能被客戶端的防火牆攔截掉。

3. 如何解決客戶端防火牆攔截「資料連線」的建立呢?

(1)如果防火牆開啟了「攔截通知」,在使用ftp軟體連線伺服器時,防火牆會彈出下面這個提醒,只需要點選「允許訪問」就可以建立連線了。

(2)如果防火牆沒有開啟「攔截通知」,則需要我們的應用程式新增到防火牆的「允許的程式」列表中。如圖所示,允許flashfxp.exe和winscp以主動模式連線ftp伺服器。

上面所講的是ftp主動模式,簡單的理解就是伺服器的資料埠20主動連線客戶端的資料埠,來建立資料連線,用來傳輸資料,這個資料連線的建立有可能被客戶端防火牆攔截掉。為了解決這個問題就衍生出另外一種連線模式---被動模式。被動模式也稱為passive模式。

1. 被動模式是如何運作的呢?來看下這張圖

第一步,客戶端的命令埠n主動連線伺服器命令埠21,並傳送pasv命令,告訴伺服器用「被動模式」,控制連線建立成功後,伺服器開啟乙個資料埠p,通過port命令將p埠告訴客戶端。

第二步,客戶端的資料埠n+1去連線伺服器的資料埠p,建立資料連線

我們可以看到,在這條紅色的資料連線建立的過程中,伺服器是被動的等待客戶端來連線的,所以稱這種模式為被動模式。

上面這張圖是通過netstat命令檢視到的「被動模式」下的tcp連線情況,首先客戶端49222埠去連線伺服器的21埠,建立控制連線。然後客戶端的49224埠連線伺服器的6008埠去建立資料連線

這裡有兩點需要補充

2. 被動模式有什麼利弊呢?

被動模式對ftp客戶端的管理有利,因為客戶端的命令埠和資料埠都是「准出」,windows防火牆對於「准出」一般是不攔截的,所以客戶端不需要任何多餘的配置就可以連線ftp伺服器了。

但對伺服器端的管理不利。因為客戶端資料埠連到ftp伺服器的資料埠p時,很有可能被伺服器端的防火牆阻塞掉。

4. 如何解決伺服器端防火牆攔截「資料連線」的建立呢?

為了解決p埠的「准入」不被伺服器防火牆攔截,需要在伺服器端設定p埠的範圍,並在防火牆中開啟這個範圍埠的「准入」。這張圖是在filezilla server中指定被動模式的資料埠範圍為6000-7000,然後在windows防火牆中配置6000-700埠允許「准入」。

1. 合理的設定ftp賬號和許可權

2. 伺服器21埠新增21埠限定

無論是主動模式還是被動模式,第一步都是客戶端連線伺服器的21埠建立控制連線。因此我們可以在防火牆的21埠上設定ip限定,僅允許我們的備份電腦的ip或ip段連線伺服器21埠,這樣其他人就無法使用ftp暴力破解ftp賬號和密碼了。

3. 禁止ftp伺服器管理控制台的遠端管理功能

ftp管理控制台並不是所有ftp軟體都支援遠端訪問的,比如iis中設定ftp需要在iis中設定,它的控制台就是iis,只有登入伺服器系統才可以設定iis。

預設情況下filezilla server的控制台是只允許本機登入的,我們不需要做任何設定,保持預設配置即可。

這裡我們還是有必要了解下如何開啟filezilla server控制台的遠端訪問:

(1)防火牆開啟14147埠的「准入」,14147埠為filezilla server控制台埠;

(2)配置ftp伺服器的ip位址;

(3)配置允許訪問filezilla server控制台的終端。

這樣我們配置的192.168.25.1就可以遠端連線192.168.25.133伺服器上的控制台,進行賬號和許可權設定等。

1. ftp主動模式下防火牆設定

(1)伺服器沒有「物理防火牆」的情況下,只需要在伺服器作業系統中開啟21埠的准入,20埠的準出缺省是允許的(windows系統防火牆預設是不攔截「准出」的)。

(2)伺服器有「物理防火牆」的情況下,需要在「物理防火牆」中開啟21埠的准入,20埠的准出。

(3)客戶端需要設定「允許應用程式通過防火牆」(winscp.exe、flashfxp等)

2. ftp主動模式下防火牆設定

(1)伺服器需要開啟21埠准入,並設定被動模式資料埠範圍p,並在防火牆中開啟p的准入。

(2)客戶端一般不需要設定任何防火牆,因為n和n+1一般是可以出去的。

注:

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模式的...