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

FTP協議

FTP(File Transfer Protocol,文件傳輸協議),是一種基於 TCP 的應用層協議,它使用兩個端口,一個數據端口和一個控制端口。通常情況下,端口 21 用作控制端口,端口 20 用作數據端口。在過去,客戶端缺省為主動模式;近來,由於Port模式的存在安全問題,許多客戶端的FTP應用缺省變為了被動模式。

主動模式

客戶端使用任意大於1023(N,假設N為1025)的端口連接到FTP服務器的21端口,然後客戶端開始監聽端口N+1,併發送FTP命令“port N+1”到FTP服務器,告訴服務器“請把數據發送給我的 N+1 端口”,服務器將從本地數據端口 (端口20) 連接回客戶端的數據端口,也就是 N+1 端口。

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

主動模式

主動模式的 FTP 的客戶端,並不會主動連接到服務器的數據端口,而是是告訴服務器它正在監聽哪個端口,然後服務器發起連接到客戶端上指定的端口。但是,這樣的連接有時候會被客戶端的防火牆阻止。

被動模式

為了解決服務器主動發起到客戶端連接會被阻止的問題,另一種更完善的工作模式出現了,它就是 FTP 的被動模式,它工作的前提是客戶端明確告知 FTP 服務器它使用被動模式。

在被動模式的 FTP 中,客戶端啟動到服務器的兩個連接,解決了防火牆阻止從服務器到客戶端的傳入數據端口連接的問題。FTP 連接建立後,客戶端在本地打開兩個隨機的非系統端口N和N+1(N > 1023)。第一個端口連接服務器上的 21 端口,但是客戶端這次將會發出PASV命令,也就是不允許服務器連接回其數據端口。這樣,服務器隨後會打開一個隨機的非系統端口P(P > 1023),並將P發送給客戶端作為 PASV 命令的響應。然後客戶端啟動從端口 N+1 到端口P的連接來傳輸數據。


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

被動模式(2001為P端口)


分享到:


相關文章: