ftp-主動模式(PORT)和被動模式(PASV)


簡介

FTP是File Transfer Protocol(文件傳輸協議)的縮寫,用來在兩台計算機之間互相傳送文件。相比於HTTP,FTP協議要復雜得多。復雜的原因,是因為FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。
FTP協議有兩種工作方式:PORT方式和PASV方式,分別對應主動式和被動式。
在主動模式下,FTP客戶端隨機開啟一個大於1024的端口N向服務器的21號端口發起連接,然后開放N+1號端口進行監聽,並向服務器發出PORT N+1命令。服務器接收到命令后,會用其本地的FTP數據端口(通常是20)來連接客戶端指定的端口N+1,進行數據傳輸。

在被動模式下,FTP庫戶端隨機開啟一個大於1024的端口N向服務器的21號端口發起連接,同時會開啟N+1號端口。然后向服務器發送PASV命令,通知服務器自己處於被動模式。服務器收到命令后,會開放一個大於1024的端口P進行監聽,然后用PORT P命令通知客戶端,自己的數據端口是P。客戶端收到命令后,會通過N+1號端口連接服務器的端口P,然后在兩個端口之間進行數據傳輸。

總的來說,主動模式的FTP是指服務器主動連接客戶端的數據端口,被動模式的FTP是指服務器被動地等待客戶端連接自己的數據端口。

被動模式的FTP通常用在處於防火牆之后的FTP客戶端訪問外界FTP服務器的情況,因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之后主機,而只允許由防火牆之后的主機發起的連接請求通過。因此,在這種情況下不能使用主動模式的FTP傳輸,因為FTP服務端向客戶端發起的主動建立連接請求將被防火牆攔截,而被動模式的FTP可以良好的工作。

主動模式

工作過程:

  1. 客戶端以隨機非特權端口N,就是大於1024的端口,對server端21端口發起連接

  2. 客戶端開始監聽 N+1端口;

  3. 服務端會主動以20端口連接到客戶端的N+1端口。

優點:

服務端配置簡單,利於服務器安全管理,服務器只需要開放21端口

缺點:

如果客戶端開啟了防火牆,或客戶端處於內網(NAT網關之后), 那么服務器對客戶端端口發起的連接可能會失敗。

被動模式

 

 被動模式的FTP是指服務器被動地等待客戶端連接自己的數據端口。

工作過程:

  1. 客戶端以隨機非特權端口連接服務端的21端口

  2. 服務端開啟一個非特權端口為被動端口,並返回給客戶端

  3. 客戶端以非特權端口+1的端口主動連接服務端的被動端口

缺點:服務器配置管理稍顯復雜,不利於安全,服務器需要開放隨機高位端口以便客戶端可以連接,因此大多數FTP服務軟件都可以手動配置被動端口的范圍

優點:對客戶端網絡環境沒有要求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM