淺談FTP協議的工作方式

4 人贊了文章

FTP概述:

FTP(File Transfer Protocol)文件傳輸協議,在TCP/IP協議族中屬於應用層協議運行於TCP協議之上是一種可靠的傳輸協議,主要功能用於實現用戶間文件分發共享,以及網路管理者在進行設備版本升級、日誌下載和配置保存等業務操作時,均會使用到FTP功能。

搭建FTP站點:

FTP協議採用C/S結構,通常我們在實現FTP功能時需要在伺服器上配置IIS來實現FTP-Server端的配置,這種配置方式適合於比較瞭解操作系統的用戶去操作;對於大部分非專業用戶來說推薦使用相應的FTP軟體來實現FTP-Server端的搭建。

常見的FTP-Server軟體有Serv-U、FileZilla 、VsFTP 等。FTP-Server搭建完成之後,Client訪問時可以通過ftp://x.x.x.x方式訪問,也可以通過第三方軟體訪問。如:SmartFTP、FireFTP、8UFTP。

關於具體的FTP-Server搭建操作步驟不再詳細贅述。

FTP的兩個TCP連接:

控制連接(TCP 21埠)主要用於實現FTP協議控制信令傳送,伺服器端打開TCP 21埠被動等待客戶端發起連接命令;客戶端則以主動方式打開隨機埠,發起連接的建立請求。

數據連接(TCP 20埠)主要用於實現應用數據傳送,伺服器的數據連接端使用埠20。伺服器執行主動打開數據連接,通常也執行主動關閉數據連接 。

FTP連接建立方式:

一、主動方式

主動方式也稱為PORT方式,是FTP協議最初定義的數據傳輸連接方式,主要特點是:

FTP客戶端通過向FTP伺服器發送PORT命令,告訴伺服器該客戶端用於傳輸數據的臨時埠號當需要傳送數據時,伺服器通過TCP埠號20與客戶端的臨時埠建立數據傳輸通道,完成數據傳輸。在建立數據連接的過程中,由伺服器主動發起連接,因此被稱為主動方式。

主動方式FTP建立交互過程

二、被動方式

被動方式也稱為PASV方式,被動方式的主要特點是:

FTP客戶端通過向FTP伺服器發送PASV命令,告訴伺服器進入被動方式。伺服器選擇臨時埠號並告知客戶端當需要傳送數據時,客戶端主動與伺服器的臨時埠號建立數據傳輸通道,完成數據傳輸。在整個過程中,由於伺服器總是被動接收客戶端的數據連接,因此被稱為被動方式。

被動方式FTP建立交互過程

FTP主動、被動方式的選擇:

當FTP伺服器與FTP客戶端均處於同一區域網內,即兩者之間互訪不存在防火牆或其他安全設備時,主動方式、被動方式均可實現FTP文件分發共享。

如果FTP伺服器處於路由器,防火牆或其他NAT設備之後,建議使用被動模式(passive mode)。因為在主動模式下傳輸數據時,由FTP發起的數據傳輸一般會被客戶端網關的防火牆阻斷。

關於主動與被動FTP優缺點的簡要總結:

 主動FTP對FTP伺服器的管理有利,但對客戶端的管理不利。因為FTP伺服器企圖與客戶端的高位隨機埠建立連接,而這個埠很有可能被客戶端的防火牆阻塞掉。

被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連接,其中一個連到一個高位隨機埠,而這個埠很有可能被伺服器端的防火牆阻塞掉。

針對上述防火牆帶來的問題,有折衷的辦法。既然FTP伺服器的管理員需要他們的伺服器有最多的客戶連接,那麼必須得支持被動FTP。我們可以通過為FTP伺服器指定一個有限的埠範圍來減小伺服器高位埠的暴露。這樣,不在這個範圍的任何埠會被伺服器的防火牆阻塞。雖然這沒有消除所有針對伺服器的危險,但它大大減少了危險。

下述內容通過實驗詳細介紹了兩種方式的建立過程:

FTP被動模式

如圖示192.168.1.1為FTP-Server,192.168.1.2為FTP-Client,使用被動方式建立過程如下:

首先FTP在進行控制連發起前,需要先進行基本用戶登錄認證以及文件列表獲取等操作;

1.由客戶端發起FTP連接請求,FTP協議基於TCP,於是先進行TCP三次握手連接,連接伺服器21埠;

2.TCP三次握手建立成功後,伺服器也知道了客戶端需要請求FTP服務,於是要求客戶端提供相應的用戶名(客戶端在進行FTP連接時需要發送用戶名和密碼信息);

3.客戶端收到伺服器的驗證需求後,立即發送用戶名 user = 1;

4.伺服器收到後,確認用戶名OK,此時需要客戶端提供password;

5.客戶端發送password=1;

6.伺服器端用戶名密碼驗證成功允許用戶登錄;

7. 客戶端登錄到伺服器之後開始發送查詢命令 「PWD」查詢FTP文件路徑;

8.伺服器回復客戶端「PWD」查詢,反饋文件路徑信息;

9.客戶端開始請求查詢伺服器發送文件的方式 ASCII/二進位;

10.伺服器對客戶端發送的文件類型查詢進行響應,回復文件傳輸方式為ASCII;

上述1-10步完成了FTP在進行控制連接操作前,基本用戶登錄認證以及文件列表獲取等內容;

11. FTP被動方式,由客戶端發送「PASV」命令;

12.伺服器收到PASV命令後,知道自己此時為被動方式,則開始生成隨機的數據埠,以提供給客戶端進行數據連接的時候使用;

13.客戶端開始發送LIST命令查詢文件列表信息;

14.在文件數據傳輸之前,先建立數據傳輸時的TCP三次握手;

15.數據傳輸的三次握手成功後,伺服器開始向客戶端通知自己已經準備就緒,馬上開始文件傳輸;

16.文件開始傳輸,在傳輸過程中有TCP對文件傳輸進行確認;

17.客戶端文件接收完畢 通過控制鏈路告知伺服器;

18.伺服器收到之後認為文件傳輸完成,此時關閉數據連接並告知客戶端;

19.客戶端收到伺服器發送來的關閉數據連接信息後,則向伺服器在進行確認FTP控制連接斷開過程;

20.由客戶端發起端開請求命令 QUIT;

21.伺服器收到請求後同意斷開 向客戶端發送goodbye;

22.TCP會話也斷開;

FTP 主動模式

連接建立發起前,基本用戶登錄認證以及文件列表獲取等內容與被動方式相同參考上述1-10步驟。

11.由客戶端發送PORT命令,同時自己隨機生成一個數據埠,並將該埠信息通過控制鏈路發送給伺服器;

12.伺服器收到PORT命令之後,此時就知道自己是處於主動模式,並開始與客戶端進行TCP連接;

13.TCP連接成功後,伺服器主動通過控制鏈路告訴客戶端自己已經準備就緒,可以發起數據連接;

14.客戶端開始發送LIST命令查詢文件列表信息;

15.伺服器回復了相應文件信息,並開始準備從數據連接發送文件;

16.伺服器開始發送文件過程,發送過程中均有TCP的確認產生;

17文件發送完成終止數據連接過程(詳細參考被動連接17-19部分);

18 終止FTP回話與被動終止方式相同(詳細參考被動連接20-22部分)。

qq:3063089331


推薦閱讀:
相關文章