FTP被動模式和主動模式

文件傳輸協議File Transfer Protocol,縮寫:FTP
FTP服務器使用21號端口來監聽連接,客戶端用隨機端口來發送和接收數據,21端口用來建立信令通道,20端口用來建立數據通道(被動模式PASV用不上20端口)。
客戶端使用兩種模式來和服務器通信:被動模式,主動模式。現在許多設備默認採用被動模式。
(使用FTP數據都是以明文方式傳輸的,用戶名,密碼也能直接看到。也有很多加密信道的高級協議,例如SFTP,SSH File Transfer Protocol的縮寫,安全文件傳送協議。)
FTP被動模式和主動模式

被動模式下抓包
FTP被動模式和主動模式
FTP被動模式和主動模式
解析:
被動模式中控制連接和被動連接都是由客戶端主動發起。
(No.1)客戶端使用隨機端口65068主動向服務器的21端口發送TCP請求(No.1,2,3)控制通道TCP連接建立。
FTP被動模式和主動模式
(No.4--10)服務器會發給客戶端一條標語,同時讓客戶端輸入用戶名,密碼,交互後發送一條用戶已登錄標語。
FTP被動模式和主動模式
FTP被動模式和主動模式
(No11--13)登錄成功後客戶端會自動發送PWD命令查詢當前所處的絕對路徑,服務器迴應在根目錄。客戶端每60秒自動執行一次PWD
FTP被動模式和主動模式
注:以上主動模式和被動模式都相同。

例如每次客戶端執行dir,都需要服務器使用數據連接回復給客戶端結果的時候。會先觸發客戶端向服務器發送PASV命令(No.14),現在基本默認都是被動模式。(設置binary和ASCII傳輸模式時,並不會觸發主,被模式協商,因爲修改傳輸模式是使用控制通道完成的)。(No.14,15)是默認的PASV模式。客戶端發送PASA命令給服務器,服務器迴應給客戶端連接我隨機生成的這個50799端口。
有點拗口,是客戶端先輸入dir,get,put等需要建立數據通道的命令,來觸發客戶端向服務器發送pasv命令(No.14),等數據通道TCP建立完成之後,客戶端纔會把(No.19)dir,get,put等命令通過控制通道發送給服務器。
FTP被動模式和主動模式
注:本地默認passive打開,在敲一下passive,就關閉了。這時候會使用port主模式建立數據通道。開關passive模式並不會觸發服務器和客戶端之間的報文交互,只是打開關閉本地passive模式。
FTP被動模式和主動模式

(No.16--18)客戶端主動向服務器發起數據TCP連接,建立數據通道。
FTP被動模式和主動模式
(No.19--29)客戶端發送dir查看目錄,服務器返回結果(這裏wireshark自動把dir解析成了list)。
FTP被動模式和主動模式

客戶端先執行的dir命令,才觸發的(No.14--18)主動模式的協商,數據通道建立完成之後,客戶端再把dir(No.19)命令發送給服務器,服務器發回顯信息(No.20)125 ASCII mode data connection already open, transfer starting for *.給客戶端。(默認是ASCII傳輸模式,可以手動改成BINARY)
FTP被動模式和主動模式

(No.21-25)使用數據通道傳輸數據
FTP被動模式和主動模式
(No.21,22)裏面的數據就是客戶端執行dir,服務器返回的結果,\r是回車Carriage Return,\n是換行newline
FTP被動模式和主動模式

(No.26)客戶端使用控制通道回覆給服務器ack(No.26的ack229是No.20的Seq:158+Len:71)。(No.27)服務器發送標語226 Transfer complete.給客戶端,告訴客戶端傳輸完成,關閉數據通道。(No.28)客戶端回覆給服務器Ack。傳輸通道每傳輸完一次數據,都會關閉。需要再次傳輸數據的時候,服務器和客戶端會使用新的隨機端口號,來建立數據通道。過程和(No.14--28)一樣。
FTP被動模式和主動模式
(No.29-34)每隔9秒,服務器使用控制通道向客戶發送一次keep-alive保持控制通道的TCP連接。客戶端迴應ack。
FTP被動模式和主動模式
(No.35)客戶端向服務器發送quit命令,(No.36)服務器迴應客戶端221 Server closing.標語,告訴客戶端,service closing control connection。(No.37)釋放連接。
FTP被動模式和主動模式

========================================================

主動模式的數據通道建立:
FTP被動模式和主動模式
被動模式的數據通道建立:
FTP被動模式和主動模式
主動模式和被動模式的區別:
主動模式和被動模式建立控制通道相同,維護控制通道,拆除控制通道也相同。只有數據通道的建立不同。主動模式建立數據通道是客戶端把隨機端口發給服務器,由服務器來發起TCP連接。被動模式建立數據通道是服務器把隨機端口發給客戶端,由客戶端來發起TCP連接。
主動模式--1.客戶端把自己隨機產生的端口號通過控制通道發送給服務器。2.服務器回覆確認。3.客戶端把dir,get,put等命令發送給服務器。4.服務器用自己的20號端口和客戶端發來的隨機端口,建立數據通道。
被動模式--1.客戶端用控制通道發送PASV命令告訴服務器,我用被動模式。2.服務器用控制通道把自己的隨機端口號發給客戶端。3.客戶端自己又產生一個新的隨機端口號來和服務器發來的這個隨機端口號進行TCP數據通道的建立。4.數據通道建立完成之後才把LIST命令發送給服務器。

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