被動模式下FTP的詳細工做過程

文中有不對或者有不清楚的地方,請你們告訴我,謝謝!
 
被動模式下FTP的詳細工做過程
 
PASV FTP在工做的第一步,與PORT FTP同樣,會首先使用21端口創建控制鏈接;但在第二步,由FTP客戶端主動發起創建數據傳輸鏈接請求,服務器的數據傳輸端口爲隨機端口,所以,每次創建的數據傳輸鏈接通道,服務器所使用的端口都不相同。
本示例客戶端IP是192.168.120.168,服務器IP是192.168.120.240,由於客戶端的MS-DOS不支持PASV模式,因此使用FlashFXP軟件來鏈接服務器。經過抓包工具來查看用戶從鏈接FTP服務器到退出FTP服務器通過的全部過程。
使用FlashFXP所作的操做:1.輸入FTP服務器的IP,要登入的用戶名和密碼。2.進入用戶家目錄,查看.bashrc和.bash_profile兩個文件。3.退出FTP。
 
PASV FTP的詳細工做過程:
1. 由於FTP使用的是TCP協議,因此客戶端FlashFXP在鏈接服務器192.168.120.240時,首先會經歷TCP的三次握手來創建控制通道。客戶端使用任意的端口N(>1024)來鏈接FTP服務器默認的21端口。這和PORT模式同樣。
2. 在TCP三次握手結束後,服務器端正式響應客戶端的控制鏈接請求,控制通道創建。
3. 客戶端向服務器發送含有ACK的數據段來確認控制鏈接創建併發送用戶名。
4. 服務器向客戶端發送含有ACK的數據段來確認用戶名。
5. 服務器向客戶端詢問密碼。
6. 客戶端向服務器發送含有ACK的數據段來確認併發送密碼,密碼爲明文。
7. 服務器向客戶端發送含有ACK的數據段來確認密碼收到。
8. 服務器向客戶端發送登錄成功的信息。
9. 客戶端向服務器發送含有ACK的數據段來確認併發送查詢系統類型的指令(見圖一)。
10. 服務器向客戶端發送含有ACK的數據段來確認收到指令。
11. 服務器向客戶端迴應系統的類型爲UNIX(見圖二)。
12. 客戶端向服務器發送列出服務器的全部擴展命令和擴展功能的指令(見圖三)。
13. 服務器響應客戶端的FEAT請求(見圖四)。
14. 服務器響應客戶端有EPSV(擴展PASV,支持非IPV4)的擴展功能(見圖五)。
15. 客戶端向服務器發送含有ACK的數據段來確認收到信息。
16. 服務器響應客戶端本身的其餘特性(見圖六)。MDTM:保留下載文件的日期/時間;REST STREAM:重設文件傳輸方式爲stream形式。
17. 客戶端確認收到服務器的信息。
18. 服務器響應客戶端進入到用戶的家目錄(見圖七)。
19. 客戶端確認收到服務器的信息。
20. 客戶端向服務器發送文件傳輸使用何種模式(Binary、ASCII)的指令(見圖八)。
21. 服務器迴應客戶端使用Binary模式(見圖九)。
22. 客戶端向服務器詢問.bashrc文件的大小(見圖十)。
23. 服務器迴應客戶端.bashrc文件的大小爲124字節(見圖十一)。
24. 客戶端向服務器發出PASV的指令(用來進行數據傳輸)(見圖十二)。
25. 服務器迴應客戶端使用PASV模式,而且商量數據傳輸端口用232x256+151=59543(見圖十三)。
26. 客戶端主動使用N+1端口來鏈接服務器的59543端口,而且向服務器發送含有SYN的數據段來開始進行數據傳輸鏈接的第1次握手(見圖十四)。
27. 服務器向客戶端發送含有SYN和ACK的數據段來進行第2次握手(見圖十五)。
28. 客戶端向服務器發送含有ACK的數據段來進行第3次握手(見圖十六)。
29. 3次握手過程完成,客戶端向服務器發送查看.bashrc文件的指令(見圖十七)。
30. 服務器迴應客戶端使用Binary數據傳輸模式鏈接.bashrc文件(見圖十八)。
31. 服務器開始進行數據傳輸。
32. 服務器肯定數據傳輸完畢,而後向客戶端發送含有FIN和ACK的數據段來請求斷開本次數據鏈接,第1次斷開(見圖十九)。
33. 客戶端向服務器發送含有ACK的數據段答應服務器的斷接請求,第2次斷開(見圖二十)。
34. 服務器響應客戶端文件發送完成的信息(見圖二十一)。
35. 客戶端向服務器發送含有ACK的數據段來確認收到信息。
36. 客戶端向服務器發送含有FIN和ACK的數據段來請求斷開客戶端到服務器之間的數據鏈接,第3次斷開(見圖二十二)。
37. 服務器向客戶端發送含有ACK的數據段確認斷開鏈接,第4次斷開(見圖二十三)
38. 接下來是查看.bash_profile文件的過程。其過程和查看.bashrc文件的過程同樣(在此不詳述了),只是服務器和客戶端的數據傳輸端口變了。服務器的數據傳輸端口是隨機的;客戶端的數據傳輸端口是N+2。
39. 客戶端在查看完.bash_profile文件並完全完成該次數據鏈接的4次斷開後,向服務器發送退出的指令(見圖二十四)。
40. 服務器響應客戶端的退出請求(見圖二十五)。
41. 服務器向客戶端發送含有FIN和ACK的數據段,請求斷開控制鏈接(見圖二十六)。這是第一次斷開控制鏈接。
42. 客戶端向服務器發送含有ACK的數據段來應答服務器的斷接請求(見圖二十七)。這是第二次斷開控制鏈接。
43. 客戶端向服務器發送含有FIN和ACK的數據段,請求斷開到服務器之間的控制鏈接(見圖二十八)。這是第三次斷開控制鏈接。
44. 服務器向客戶端發送含有ACK的數據段,來確認客戶端的斷接請求(見圖二十九)。這樣本次FTP控制鏈接徹底斷開。
 
經過查看本次示例(被動FTP)的詳細過程,咱們能夠獲得如下幾點結果:
1. 服務器的控制鏈接端口爲21,數據傳輸端口隨機(>1024)而且每次的數據傳輸端口都不同。
2. 客戶端的控制鏈接端口爲N(>1024),數據傳輸端口在第一次進行數據傳輸時爲N+1,在第二次數據傳輸時爲N+2,依次類推。
3. 服務器主動告訴客戶端本身的數據傳輸端口。
4. 客戶端主動用數據傳輸端口N+x去鏈接服務器的隨機數據傳輸端口。
5. 在一次FTP鏈接的過程當中,只有一次控制鏈接,卻能夠有屢次數據傳輸鏈接。
6. 無論是控制鏈接仍是數據傳輸鏈接,在每次從創建到完成都須要通過3次鏈接和4次斷開的過程。(這符合TCP協議的要求)
 
本文檔使用的圖例:
11  
圖一:客戶端發送查詢系統類型的指令
 
13
圖二:服務器響應客戶端系統類型爲UNIX
 
14
圖三:客戶端請求服務器列出它的全部擴展命令和擴展功能
 
15
圖四:服務器響應客戶端的FEAT請求
 
16
圖五:服務器響應客戶端有EPSV(擴展PASV,支持非IPV4)的擴展功能
 
18
圖六:服務器響應客戶端本身支持的其餘特性
 
20
圖七:服務器響應客戶端進入到用戶家目錄
 
22
圖八:客戶端向服務器詢問文件傳輸的模式
 
23
圖九:服務器響應客戶端使用Binary模式
 
24
圖十:客戶端向服務器詢問.bashrc文件的大小
 
25
圖十一:服務器迴應客戶端.bashrc文件的大小爲124字節
 
26
圖十二:客戶端向服務器發送PASV指令
 
27
圖十三:服務器響應客戶端使用PASV模式,而且商量數據傳輸端口用59543
 
28
圖十四:第一次數據傳輸鏈接之第一次握手
 
29
圖十五:第一次數據傳輸鏈接之第二次握手
 
30
圖十六:第一次數據傳輸鏈接之第三次握手
 
31
圖十七:客戶端向服務器發送查看.bashrc文件的指令
 
32
圖十八:服務器響應客戶端使用Binary數據傳輸模式來鏈接.bashrc文件
 
34
圖十九:服務器發送FIN和ACK請求斷開本次數據鏈接(第1次斷開)
 
35
圖二十:客戶端發送ACK答應服務器的請求(第2次斷開)
 
36
圖二十一:服務器響應客戶端文件發送完畢的信息
 
38
圖二十二:客戶端向服務器發送含有FIN和ACK的數據段請求斷開數據鏈接(第3次斷開)
 
39
圖二十三:服務器向客戶端發送含有ACK的數據段確認斷開鏈接(第4次斷開)
 
56
圖二十四:客戶端向服務器發出退出的指令
 
57
圖二十五:服務器響應客戶端的退出請求
 
58
圖二十六:服務器向客戶端發送FIN和ACK請求斷開控制鏈接(第1次斷開)
 
59
圖二十七:客戶端向服務器發送ACK答應服務器請求(第2次斷開)
 
60
圖二十八:客戶端向服務器發送FIN和ACK請求斷開控制鏈接(第3次斷開)
 
61
圖二十九:服務器向客戶端發送ACK答應斷開控制鏈接(第4次斷開)
 
62
圖三十:本次示例所有過程
 
本文檔完整的圖例,請見附件。
相關文章
相關標籤/搜索