天天看點

FTP主動模式(Port)和被動模式(Passive)的差別

由于項目需求,需要接受一些資料,由于雙方都是内網,對方提出建立一個ftp伺服器,我去連接配接下載下傳檔案,然後在入庫。

搭完ftp用戶端之後一切正常,部署在内網伺服器也一切正常,過了一段時間,由于内網伺服器損壞,又重新申請了一個一模一樣的伺服器,ftp用戶端部署完之後 ftp連接配接正常,但是不能下載下傳檔案。一開始以為是端口問題(某個端口忘記開了),但是換成已經開放的端口還是不行。突然想起ftp有主動模式和被動模式,主動模式是用戶端開放端口。而被動模式是服務端開放端口。之前部署的時候用的是主動模式,一直沒有問題。這次把主動模式換成了被動模式,重新部署之後,下載下傳檔案恢複正常。

下面介紹一下主動模式和被動模式的差別:

1、FTP的PORT(主動模式):

 PORT中文稱為主動模式,工作的原理: FTP用戶端(1024以上端口)連接配接到FTP伺服器的21端口,發送使用者名和密碼登入,

登入成功後要list清單或者讀取資料時,用戶端随機開放一個端口(1024以上),發送 PORT指令到FTP伺服器,告訴伺服器用戶端采用主動模式并開放端口;

FTP伺服器收到PORT主動模式指令和端口号後,通過伺服器的20端口和用戶端開放的端口連接配接,發送資料,原理如下圖:

FTP主動模式(Port)和被動模式(Passive)的差別

2、PASV(被動模式):

 PASV是Passive的縮寫,中文成為被動模式,工作原理:FTP用戶端(1024以上端口)連接配接到FTP伺服器的21端口,發送使用者名和密碼登入,登入成功後要list清單或者讀取資料時,

發送PASV指令到FTP伺服器, 伺服器在本地随機開放一個端口(1024以上),然後把開放的端口告訴用戶端, 用戶端再連接配接到伺服器開放的端口進行資料傳輸,原理如下圖:

FTP主動模式(Port)和被動模式(Passive)的差別

兩種模式的比較:

     從上面的運作原來看到,主動模式與被動模式,建立連接配接的過程是一樣的,差别在于資料傳輸。

    主動模式傳送資料時是“伺服器(20端口)連接配接到用戶端的端口;

 被動模式傳送資料是用戶端連接配接到伺服器的端口(1024以上端口)。

    主動模式需要用戶端必須開放端口給伺服器,很多用戶端都是在防火牆内,開放端口給FTP伺服器通路比較困難。被動模式隻需要伺服器端開放端口給用戶端連接配接就行了。