FTP主動模式、被動模式介紹
主動模式
1. FTP client use TCP port 1026 for command to FTP server command port 21
2. FTP server use TCP port 21 responed to FTP client command port 1026
3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 + 1)
4. FTP client use TCP port 1027 ( 1026 + 1) for data ACK to FTP server port 20
被動模式
1. FTP client use TCP port 1026 to FTP server command port 21 via command PASV
2. FTP server use TCP port 21 to FTP client 1026 command port for reply data port 2024
3. FTP client use TCP port 1027 (N+1) to FTP server 2024 for data transmit and ACK
4. FTP server use TCP port 2024 to FTP client for data transmit and ACK
FTP是僅基于TCP的服務,不支持UDP。 與眾不同的是FTP使用2個端口,一個數據端口和一個命令端口(也可叫做控制端口)。通常來說這兩個端口是21(命令端口)和20(數據端口)。但FTP 工作方式的不同,數據端口并不總是20。這就是FTP主動與被動模式的最大不同之處。
(一)主動FTP
主動方式的FTP是這樣的:客戶端從一個任意的非特權端口N(N>1024)連接到FTP服務器的命令端口(21端口)。然后客戶端開始監聽端口N+1,并發送FTP命令“port N+1”到FTP服務器。接著服務器會從它自己的數據端口(20)連接到客戶端指定的數據端口(N+1)。
針對FTP服務器前面的防火墻來說,必須允許以下通訊才能支持主動方式FTP:
1. 任何大于1024的端口到FTP服務器的21端口。(客戶端初始化的連接)
2. FTP服務器的21端口到大于1024的端口。 (服務器響應客戶端的控制端口)
3. FTP服務器的20端口到大于1024的端口。(服務器端初始化數據連接到客戶端的數據端口)
4. 大于1024端口到FTP服務器的20端口(客戶端發送ACK響應到服務器的數據端口)
(二)被動FTP
為了解決服務器發起到客戶的連接的問題,人們開發了一種不同的FTP連接方式。這就是所謂的被動方式,或者叫做PASV,當客戶端通知服務器它處于被動模式時才啟用。
在被動方式FTP中,命令連接和數據連接都由客戶端發起,這樣就可以解決從服務器到客戶端的數據端口的入方向連接被防火墻過濾掉的問題。
當開啟一個 FTP連接時,客戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令并允許服務器來回連它的數據端口,而是提交 PASV命令。這樣做的結果是服務器會開啟一個任意的非特權端口(P > 1024),并發送PORT P命令給客戶端。然后客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。
對于服務器端的防火墻來說,必須允許下面的通訊才能支持被動方式的FTP:
1. 從任何大于1024的端口到服務器的21端口 (客戶端初始化的連接)
2. 服務器的21端口到任何大于1024的端口 (服務器響應到客戶端的控制端口的連接)
3. 從任何大于1024端口到服務器的大于1024端口 (客戶端初始化數據連接到服務器指定的任意端口)
4. 服務器的大于1024端口到遠程的大于1024的端口(服務器發送ACK響應和數據到客戶端的數據端口)
(三) 主動與被動FTP優缺點
主動FTP對FTP服務器的管理有利,但對客戶端的管理不利。因為FTP服務器企圖與客戶端的高位隨機端口建立連接,而這個端口很有可能被客戶端的防火墻阻塞掉。被動FTP對FTP客戶端的管理有利,但對服務器端的管理不利。因為客戶端要與服務器端建立兩個連接,其中一個連到一個高位隨機端口,而這個端口很有可能被服務器端的防火墻阻塞掉。
幸運的是,有折衷的辦法。既然FTP服務器的管理員需要他們的服務器有最多的客戶連接,那么必須得支持被動FTP。我們可以通過為FTP服務器指定一個有 限的端口范圍來減小服務器高位端口的暴露。這樣,不在這個范圍的任何端口會被服務器的防火墻阻塞。雖然這沒有消除所有針對服務器的危險,但它大大減少了危 險。
簡而言之:
主動模式(PORT)和被動模式(PASV)。主動模式是從服務器端向客戶端發起連接;被動模式是客戶端向服務器端發起連接。兩者的共同點是都使用 21端口進行用戶驗證及管理,差別在于傳送數據的方式不同,PORT模式的FTP服務器數據端口固定在20,而PASV模式則在1025-65535之間隨機
FTP主動模式與被動模式的解決與原理
FTP是File Transfer Protocol(文件傳輸協議)的縮寫,用來在兩臺計算機之間互相傳送文件。相比于HTTP,FTP協議要復雜得多。復雜的原因,是因為FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。
FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了XXXX端口,你過來連接我”。于是服務器從20端口向客戶端的XXXX端口發送連接請求,建立一條數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX端口,你過來連接我”。于是客戶端向服務器的XXXX端口發送連接請求,建立一條數據鏈路來傳送數據。
概括:
--------------------------------------------------------------------------------
主動模式:服務器向客戶端敲門,然后客戶端開門
被動模式:客戶端向服務器敲門,然后服務器開門
所以,如果你是如果通過代理上網的話,就不能用主動模式,因為服務器敲的是上網代理服務器的門,而不是敲客戶端的門
而且有時候,客戶端也不是輕易就開門的,因為有防火墻阻擋,除非客戶端開放大于1024的高端端口
--------------------------------------------------------------------------------
相關文章: