ftp的主動模式與被動模式


FTP傳輸有兩種工作模式,Active Mode和Passive Mode(主動模式和被動模式),簡單描述連接過程如下:

  主動模式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時, 客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了***端口,你過來連接我”。於是服務器從20端口向客戶端的***端口發送連接請求,建立一條數據鏈路來傳送數據。  

  被動模式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時, 服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了***端口,你過來連接我”。於是客戶端向服務器的***端口發送連接請求,建立一條數據鏈路來傳送數據。 

了解模式的目的,是為了了解端口。使用 FTP 傳輸時,至少會使用到兩個 Port 來建立連接通道:

  • 一個為指令通道(Command Channel),默認使用 Port 21 建立,用來傳輸 FTP 指令,例如:列出清單(LIST)、變更目錄(CWD)、取得目前的目錄(PWD)、......等。

  • 另一個為數據通道(DATA Channel),默認使用 Port 20,但是會因 FTP Client 選擇使用的模式不同而有所不同。

主動模式 ( Active mode )

  FTP Client 跟 FTP Server 聯機后,會主動利用 PORT 指令提出 DATA Channel 聯機的要求,如下: 

1
2
指令:PORT 10,18,53,171,17,114
回應:200 Port command successful.

      這里的 PORT 指令是由 FTP Client 送出的,當需要建立 DATA Channel 時,FTP Server 會主動利用 Server 主機的 Port 20 發出聯機到 FTP Client 的主機,而 PORT 指令后的參數說明如下:

      前四個數字是 FTP Client 的 IP 地址:10.18.53.171

      后兩個數字是 FTP Client 接受聯機的端口號,端口號的計算方式是 (第五個數字 * 256 + 第六個數字),以此范例來說,FTP Client 接受的聯機端口號是 17 * 256 + 114 = 4,466

      由此可知,如果 FTP Client 處於 NAT 的環境下的話,FTP Server 幾乎無法正常的聯機到 FTP Client 的主機,所以現在大部分的聯機模式幾乎都建議用戶使用被動模式(Passive mode)。

被動模式 ( Passive mode )

  FTP Client 跟 FTP Server 聯機后,會主動利用 PASV 指令提出 DATA Channel 聯機的要求,如下:

1
2
指令:PASV
回應:227 Entering Passive Mode(59,37,124,43,158,251)

  你可以看到由 FTP Client 送出的 PASV 指令並沒有送出其他的參數,而是在 FTP Server 響應的時候出現了(59,37,124,43,158,251) 字符串,當需要建立 DATA Channel 時,這時就會由 FTP Client 主動連至 FTP Server 動態開放的 Port 供 FTP Client 連接,其中 (59,37,124,43,158,251) 的說明如下:

      前四個數字是 FTP Server 的 IP 地址:59.37.124.43

      后兩個數字是 FTP Server 接受聯機的端口號,端口號的計算方式是 (第五個數字 * 256 + 第六個數字),以此范例來說,FTP Server 可接受的聯機端口號是 158 * 256 + 251 = 40,699

      由此可知,使用被動模式(Passive mode)對 FTP Server 的系統管理員來說,可掌控的部分是比較多的,因為 FTP Server 無法決定用戶是否可使用主動模式聯機,但若改使用被動模式聯機的話,就幾乎能讓所有人正常的使用。

需要注意的是FTP Client每次下指令傳輸數據時,都會建立一次 Data Connection,指令包括取得遠程的檔案清單(LIST)時回傳的檔案列表、下載文件、或上傳檔案。

 

原文鏈接: https://www.cnblogs.com/duanxz/p/5121190.html


免責聲明!

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



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