FTP主動模式與被動模式

在主動模式ftp客戶端從一個隨機的非特權端口N(N>;1024)連接到ftp服務器的命令端口,

就是21端口。於是客戶端開始監聽端口N+1同時發送ftp命令“port N+1”到ftp服務器。服

務器於是使用本地的數據端口也就是20端口回連到客戶端指定的數據端口(也就是N+1)。


在第1步中,客戶端的命令端口與ftp服務器的命令端口建立連接,併發送命令“PORT 1027

”。然後在第2步中,ftp服務器給客戶端的命令端口返回一個/"ACK/"。在第3步中,ftp服

務器發起一個從自己本地數據端口(20)到客戶端先前指定的數據端口的連接,然後客戶端在

第4步中給服務器端返回一個/"ACK/".


主動FTP:

   命令連接:客戶端 >;1024端口 ->; 服務器端 21端口

   數據連接:客戶端 >;1024端口 <- 服務器端 20端口


在被動FTP模式中,客戶端發起兩種連接,這解決了防火牆過濾從服務器到客戶端的入方向

的數據端口連接的問題。當開啓一個FTP連接時,客戶端打開兩個隨機非特權本地端口(N >

; 1024 和N+1)。第一個端口連接服務器的21端口,與主動FTP模式中提交PORT命令並允許

服務器來回連它的數據端口不同,客戶端會提交PASV命令。結果是服務器會開啓一個隨機的

非特權端口(P >; 1024),併發送PORT P命令給客戶端。然後客戶端發起從本地端口N+1到

服務器的端口P的連接來傳送數據


在第1步中,客戶端的命令端口與ftp服務器的命令端口建立連接,併發送命令“PASV”。然

後在第2步中,ftp服務器返回命令/"ORT 2024/",告訴客戶端哪個端口用來偵聽數據連接。

在第3步中,客戶端初始化一個從自己的數據端口到服務器端指定的數據端口的數據連接。

最後服務器在第4步中給客戶端的數據端口端返回一個/"ACK/"。


被動FTP:

   命令連接:客戶端 >;1024端口 ->; 服務器端 21端口

   數據連接:客戶端 >;1024端口 ->; 服務器端 >;1024端口



  Port模式FTP客戶端首先和FTP服務器的TCP 21端口建立連接,通過這個通道發送命令,客戶端要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。 FTP server必須和客戶端

建立一個新的連接用來傳送數據。 

  Passive模式在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是

Pasv命令。FTP服務器收到Pasv命令後,隨機打開一個高端端口(端口號大於1024)並且通知客戶端在這

個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然後FTP服務器將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。 

  很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP服

務器不支持PASV模式,因爲客戶端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能

用PORT模式登陸FTP服務器,因爲從服務器的TCP 20無法和內部網絡的客戶端建立一個新的連接,造成無

法工作。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章