Posted on 2014-01-28 08:54
云自無心水自閑 閱讀(585)
評論(0) 編輯 收藏
在主動模式下,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可以良好的工作。
Standard模式FTP 客戶端首先和FTP Server的TCP 21端口建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什么端口接收數據。
在傳送數據的時候,服務器端通過自己的TCP 20端口發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
Passive模式在建立控制通道的時候和Standard模式類似,當客戶端通過這個通道發送PASV 命令的時候,FTP server打開一個位于1024和5000之間的隨機端口并且通知客戶端在這個端口上傳送數據的請求, 然后FTP server 將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。