5-2 檔案傳輸系統分析
5-2-1 FTP 系統簡介 『檔案傳輸協定』(File Transfer Protocol, FTP)也幾乎是和 TCP/IP 網路同時誕生,是 APARNET 網路上重要的應用系統之一。FTP 主要是應用於檔案傳輸使用,將共享檔案存放於 FTP 伺服器,讓一般使用者可以透過網路來下載或上傳。它的重點是在異質性電腦之間、以及遠距離的檔案共享使用 ,如圖 5-5-1 所示。
圖 5-5-1 FTP 系統功能 標準 Unix/Linux 版本上的 FTP 伺服器,使用者都必須具系統上的使用者名稱及密碼才可以登入。但目前 Internet 網路上共享資源愈來愈多,並且都是無條件讓使用者下載使用,如需要完整系統上的使用者名稱及密碼,將會嚴重限制使用者的方便性,因此,就有『匿名 FTP』(Anonymous FTP)的誕生。在匿名 FTP 之下,使用者以 anonymous 為使用者名稱,而以電子郵遞帳號作密碼便可登入,來從事檔案傳輸的工作,除非特殊網站,否則一般伺服器並不真正去偵測帳號的真實性,而只判斷是否有『@』來決定是否允許登入。 FTP 使用兩個 TCP 連線來傳輸檔案,著名埠口 20(tcp/20)做為傳輸資料使用,而另外埠口 21(tcp/21)做為傳輸控制訊息使用,以下分別介紹這兩個連線的管理。 圖 5-5 為 FTP 建立連線方式,其中包含控制連線與資料連線,控制連線運作如下:
圖 5-5 FTP 連線方式 1. FTP 檔案傳輸系統採用主從式模式,FTP 伺服端隨時監視埠口 21(tcp/21)是否有連線要求。FTP 客戶端需要連線時,便由著名埠口 21 連結到 FTP 伺服器。 2. 主從雙方都模擬成 NTV 終端機系統,可由使用者介面輸入 FTP 命令,並將該命令以直譯(Interpret)方式,編譯成 ASCII 命令,再傳送給對方。因此,主從雙方皆具有『使用者協定直譯器』(User Protocol Interpreter, User PI)和『伺服端協定直譯器』(Server Protocol Interpreter, Server PI)。 3. 伺服端同意連線後(驗證使用者名稱及密碼),便建立並保持著控制連線,以便隨時交換訊息,當需要傳輸檔案時,再建立資料連線,傳輸後立即釋放該資料連線,一般伺服端的資料連線都建立在埠口 20(20/tcp)。 4. 雙方透過資料連線來存取各自檔案系統(File System)中的檔案,此時會牽涉到系統檔案的讀取和寫入動作,而它是由主從式雙方各自呼叫系統函數來達成,該工作是由『使用者資料傳輸程序』(User Data Transfer Process, User DTP)和『伺服端資料傳輸程序』(Server Data Transfer Process, Server DTR)來完成。 目前 Internet 網路上有許多圖形化的『使用者介面』,譬如,Cute-FTP 或 WS-FTP 應用軟體。但一般標準化介面是模擬成有如 Telnet 般的終端機系統,由使用者在鍵盤上輸入文字命令,再經過 User PI 編譯成 FTP 命令傳送給對方。FTP 伺服軟體的文字命令也透過 Server PI 編譯成 FTP 命令,傳送給客戶端。但雙方的終端機系統並沒有像 Telnet 系統那麼複雜,選項也較為簡單。 FTP 協定運作重點說明如下: ● 交談式溝通(Interactive):客戶端與伺服器之間以請求與回應方式,客戶端以 FTP 命令向伺服端要求服務,伺服端再以 FTP 回應,給予執行結果。 ● 直譯式命令:客戶端以 ASCII 格式傳送命令給伺服端,伺服端再以直譯式解釋命令,並給予服務。 ● 沒有標準封裝格式:在 FTP 封包標頭上,並不像 DNS 協定一樣有標準欄位可以填寫。
5-2-2 FTP 傳輸模式 FTP 有Active Mode 與 Passive 兩種傳輸模式,最主要是決定如何建立資料連線。FTP 客戶端與伺服端都使用兩個埠口傳輸,基本上 FTP Server 上控制連線的埠口是 21/tcp,資料連線是 20/tcp 埠口。FTP Client 無論控制連線或資料連線都採用隨機埠口(> 1024/tcp),但隨著傳輸模式不同,FTP Server 的資料連線也可能採用其他隨機埠口。 (A) 伺服端主動 一般在主從式的應用系統上,任一事件的發生,大多是由客戶端主動要求,而伺服端才會隨著客戶端需求做出適當的反應,因此是否需要建立的決定權在於客戶端,所以建立資料連線的運作程序如下: 1. 當FTP Client 利用一個隨機埠口(>1024) 呼叫 FTP Server 的埠口 21/tcp 要求控制連線,並利用 Three-way Handshake 連線成功。 2. FTP Client 告訴 Server,Client端欲利用哪一埠口做資料連線。 3. FTP Server 利用 20/tcp 埠口向 Client 所告知的埠口建立資料連線(採 Three-Way Handshake)。 4. 由雙方即可利用資料連線傳輸資料。 5. Active 的缺點:一般 FTP Server 主機都設有防火牆防護,伺服端不太可能允許發送 TCP SYN 向外要求連線的訊息,因此,一般 Internet 網路較少使用。 圖 5-6 為 FTP Server 主動要求建立資料連線的運作圖,FTP Client 以埠口 1073(1073/tcp)連結到 Server 端的埠口 21(21/tcp),此為控制連線。但當需要傳輸資料時,FTP Client 發出 PORT 163,15,2,62,4,50 來告訴 Server 端,欲傳輸資料的 IP 位址(163.15.2.62)和埠口位址(1074 = 4 *256 +50)。FTP Server 再由埠口 20(20/tcp)要求建立資料連線到 Client 端的 1074 埠口。
圖 5-6 伺服器主動之運作圖 (B) 客戶端主動 在 FTP 協定的預設是伺服器主動狀態,但有些情況必須由客戶端主動連接,在這種情況下 FTP Client 可利用 PASV(Passive Mode)命令,要求 Server 端進入聆聽狀態等待連接。運作程序如下: 1. 當FTP Client 利用一個隨機埠口(>1024) 呼叫 FTP Server 的埠口 21/tcp 要求控制連線,並利用 Three-way Handshake 連線成功。 2. FTP Client 發送 PASV Command 給 Server,要求進入 passive 傳輸模式。 3. FTP Server 隨機選擇 TCP 埠口(>1024),利用控制連線告訴 Client 端。 4. TCP Client 呼叫 Server 告知的埠口,並利用 Three-Way handshake 建立資料連線。 5. 由雙方即可利用資料連線傳輸資料。 因此, FTP Server 的資料連線就不一定會建立在 20/tcp 埠口上,運作如圖 5-7 所示。 (4 * 256 + 16 = 1040)
圖 5-7 客戶端主動之運作圖 5-2-3 FTP 服務命令 簡單來說, FTP 控制連線是 FTP Server 與 FTP Client 之間溝通的管道,它們之間是利用交談式(Interactive) 方式溝通,由 FTP Client 下命令給 FTP Server 要求那些服務,當 FTP Server 同意服務之後,再利用資料連線傳送資料(可能 Up Load 或 Down Load)。所以雙方傳送訊息便沒有像其他應用系統(如 DNS Systen)有一定的封裝格式。常用命令如下: ● STOR:FTP Client儲存檔案於 Server 端,也就是 Client 端上傳一個檔案到 Server 端,如:『STOR file1.dat』。 ● RETR:FTP Client 向 Server 複製一個檔案,也就是由 Server 端下載一個檔案到 Client 端,如:『RETE file1.dat』。 ● STOU:(Store Unique)如同 STOR 一樣都是傳輸一個檔案到 Server 端,但 STOU 表示傳輸後在 Server 端必須是唯一的檔案名稱,也就是不可覆蓋同一檔名的檔案。 ● REST:(Restart)要求重新啟動傳輸連線。 ● DELE:(Delete)要求刪除 Server 上某一檔案。 ● RMD:(Remove Directory)要求刪除某一檔案目錄。 ● MKD:(Make Directory)要求建立一個目錄。 ● LIST:顯示檔案目錄。 ● NOOP:(No Operation)此為 dummy 命令,Server 並未執行任何工作,而回應一個執行正確的訊息。 ● ABOR:中斷前一個 FTP 命令及任何資料傳輸。 5-2-4 FTP 系統規劃與建置 (A) 網路規劃與建置 我們利用 Cisco Packet Tracer 規劃與建置網頁系統,來觀察它的運作模式。雖然如此建立的系統是模擬真實情況,但幾乎能與真實網路完全相符。吾人需選擇下列元件來建置: (1) Server-PT:模擬伺服器主機。於該主機上可選擇開啟多種服務,譬如: HTTP、DHCP、DNS、FTP 等伺服器功能,本範例選擇開啟 FTP 服務。 (2) PC-PT:模擬客戶端主機。該主機上提供多種客戶端套件,譬如:Terminal、Command Prompt、Web Browser、Email 等等。本範例選擇使用 Command Prompt 介面。 (3) 2960-24TT。模擬 24 埠口 Layer 2 交換器。作為連結 Server-PT 與 PC-PT 的設備。 另外,吾人選擇 192.168.0.0/24 私有網路區段,並指定 192.168.0.254 為 Default Gateway 與 DNS = 168.95.1.1,雖然本範例沒有用到此功能,但還是依照標準作業程序完成它。主機的 IP 位址設定與連接埠口位置,如下表所示:(主機上網路參數請自行設定)
依照上表所建置的網路圖,如下所示:[請下載:FTP Server 系統.pkt]
圖 5-8 FTP 網路系統 (B) 伺服器設定與連線 (1) 步驟 1:於 FTP_Server 上開啟 FTP 服務,如下:(得知帳號: cisco、密碼:cisco) (2) 步驟 2:於 PC0 上開啟 Desktop => Command Prompt,並輸入>ftp 192.168.0.250。輸入帳號與密碼後,可連結到 FTP 伺服器,表示建置成功。如下: 5-2-5 FTP 協定分析 (A) FTP 連線封包擷取 Packet Tracer 自動採用FTP Passive Mode 傳輸模式,吾人先將它的運作程序歸納如下:
圖 5-9 FTP 訊號流程 (1) 步驟 1:將 Packet Tracer 設定成 Simulation Mode,並將過濾封包僅選擇 FTP 與 TCP 封包。 (2) 步驟 2:將 PC0 進入 Command Prompt 模式,並輸入 > ftp 192.168.0.251 與執行。 (3) 步驟 3:將在 Packet Tracer 上按 Auto Capture/Play 擷取封包如下:
(A) 分析 TCP Connect Request 封包 得到下列結果:
(B) 分析 TCP Connect Response 封包 得到下列結果:
(C) 分析 FTP Response 封包 得到下列結果:
(D) 分析 FTP Command 封包 得到下列結果:
(D) 其它 FTP Command 與 Response 封包 接著 FTP Server 要求 Client 端輸入帳號與密碼,會出現一連串的 FTP Command 與 FTP Response 封包交互傳遞,請自行觀察分析。 5-2-6 FTP 資料傳遞封包 分析 接著上述的實驗, PC0 上會出現等待命令的 Prompt,則輸入 dir,要求顯示伺服端命令,如下: Packet Tracer 擷取到封包如下: (A) FTP Command:Type 封包 此封包為 FTP Client 要求是否同意制定 Data Channel 的型態?(PORT or PASV) 得到下列結果:
(B) FTP Command:okay 封包 此封包是 FTP Sever 同意 Client 制定 Data Channel 的型態。 得到下列結果:
(C) FTP Command:PASV 封包 此封包是 FTP Client 制定 Data Channel 的型態為 PASV。 得到下列結果:
(D) FTP Response:Message:192,168,0,251,4,4 此封包是 FTP Server 同意使用 PASV Mode 傳輸,並告知 Data Channel 埠口是 1028。 得到下列結果:
(E) FTP Command:LIST 封包 此封包是 FTP Client 向 Sever 端下 dir 命令,要求顯示目錄內容。 得到下列結果:
(F) FTP Response:transfer starting 此封包是 FTP Sever 端同意並開始傳送資料。 得到下列結果:
(G) TCP Connect Request 此封包是 FTP Client 端要求建立資料傳輸的 TCP 連線。 得到下列結果:
(H) TCP Data Transfer 上述要求連線後,會有一連串的三向式聯絡法封包,就不再敘述。建立連線後,即開始 FTP Dtat 傳輸,但它還是採用 TCP Data Transfer 封包傳送,如下: 得到下列結果:
5-2-7 FTP 終止連線封包 分析 請自行擷取下列封包練習:
|
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|