網路規劃與管理技術第 五章 應用系統協定與分析 上一頁    下一頁

5-2 檔案傳輸系統分析

內容:

  • 5-2-1 FTP 系統簡介

  • 5-2-2 FTP 傳輸模式

  • 5-2-3 FTP 服務命令

  • 5-2-4 FTP 系統規劃與建置

  • 5-2-5 FTP 協定分析 - Packet Tracer

  • 5-2-6 FTP 資料傳遞封包分析

  • 5-2-7 FTP 終止連線封包分析

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 連線來傳輸檔案,著名埠口 20tcp/20)做為傳輸資料使用,而另外埠口 21tcp/21)做為傳輸控制訊息使用,以下分別介紹這兩個連線的管理。

5-5 FTP 建立連線方式,其中包含控制連線與資料連線,控制連線運作如下:

5-5 FTP 連線方式

1. FTP 檔案傳輸系統採用主從式模式,FTP 伺服端隨時監視埠口 21tcp/21)是否有連線要求。FTP 客戶端需要連線時,便由著名埠口 21 連結到 FTP 伺服器。

2. 主從雙方都模擬成 NTV 終端機系統,可由使用者介面輸入 FTP 命令,並將該命令以直譯(Interpret)方式,編譯成 ASCII 命令,再傳送給對方。因此,主從雙方皆具有『使用者協定直譯器』(User Protocol Interpreter, User PI)和『伺服端協定直譯器』(Server Protocol Interpreter, Server PI

3. 伺服端同意連線後(驗證使用者名稱及密碼),便建立並保持著控制連線,以便隨時交換訊息,當需要傳輸檔案時,再建立資料連線,傳輸後立即釋放該資料連線,一般伺服端的資料連線都建立在埠口 2020/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 告訴 ServerClient端欲利用哪一埠口做資料連線。

3. FTP Server 利用 20/tcp 埠口向 Client 所告知的埠口建立資料連線( Three-Way Handshake)

4. 由雙方即可利用資料連線傳輸資料

5. Active 的缺點:一般 FTP Server 主機都設有防火牆防護,伺服端不太可能允許發送 TCP SYN 向外要求連線的訊息,因此,一般 Internet 網路較少使用。

5-6 FTP Server 主動要求建立資料連線的運作圖,FTP Client 以埠口 10731073/tcp)連結到 Server 端的埠口 2121/tcp),此為控制連線。但當需要傳輸資料時,FTP Client 發出 PORT 163,15,2,62,4,50 來告訴 Server 端,欲傳輸資料的 IP 位址(163.15.2.62)和埠口位址(1074 = 4 *256 +50)。FTP Server 再由埠口 2020/tcp)要求建立資料連線到 Client 端的 1074 埠口。

5-6 伺服器主動之運作圖

(B) 客戶端主動

FTP 協定的預設是伺服器主動狀態,但有些情況必須由客戶端主動連接,在這種情況下 FTP Client 可利用 PASVPassive 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)有一定的封裝格式。常用命令如下:

STORFTP Client儲存檔案於 Server 端,也就是 Client 端上傳一個檔案到 Server 端,如:STOR file1.dat

RETRFTP 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模擬伺服器主機。於該主機上可選擇開啟多種服務,譬如: HTTPDHCPDNSFTP 等伺服器功能,本範例選擇開啟 FTP 服務。

(2) PC-PT模擬客戶端主機。該主機上提供多種客戶端套件,譬如:TerminalCommand PromptWeb BrowserEmail 等等。本範例選擇使用 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 位址設定與連接埠口位置,如下表所示:(主機上網路參數請自行設定)

 裝置

 IP 位址

 連接埠口

 HTTP_Server

 192.168.0.250

 SW1(fa0/24)

 FTP_Server

 192.168.0.251

 SW1(fa0/23)

 PC0

 192.168.0.1

 SW1(fa0/1)

 Default gateway = 192.168.0.254DNS = 168.95.1.1

依照上表所建置的網路圖,如下所示:[請下載: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 傳輸模式,吾人先將它的運作程序歸納如下:

  • FTP Server 開啟埠口 21/tcp,並等待客戶端要求連線。

  • FTP Client 利用一個大於 1023 ( 1030) 埠口向 FTP Server 要求連線 (1030 => 21)

  • FTP Sever 回應同意連線,並告知 Data Channel 為埠口 1040/tcp(Server 21/tcp => Client 1030/tcp)

  • FTP Client 利用 1050 埠口向 FTP Server 1040 要求連線。(Client 1050/tcp => Server 1040/tcp)

  • FTP Server 回應同意資料連線。(Server 1040/tcp => Client 1050/tcp)

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 封包

得到下列結果:

  • Ethernet II 標頭 Type = 0x0800

  • IP 標頭PRO = 0x06SRC IP = 192.168.0.1DES IP = 192.168.0.251

  • TCP 標頭Source Port = 1025DES Port = 21

(B) 分析 TCP Connect Response 封包

得到下列結果:

  • Ethernet II 標頭 Type = 0x0800

  • IP 標頭PRO = 0x06SRC IP = 192.168.0.251DES IP = 192.168.0.1

  • TCP 標頭Source Port = 21DES Port = 1025

(C) 分析 FTP Response 封包

得到下列結果:

  • Ethernet II 標頭 Type = 0x0800

  • IP 標頭PRO = 0x06SRC IP = 192.168.0.251DES IP = 192.168.0.1

  • TCP 標頭Source Port = 21DES Port = 1025

  • FTP 封包code=220Message = Welcome to PT FTP Server

(D) 分析 FTP Command  封包

得到下列結果:

  • IP 標頭PRO = 0x06SRC IP = 192.168.0.1DES IP = 192.168.0.251

  • TCP 標頭Source Port = 1025DES Port = 21

  • FTP 封包FTP Command:USER

(D) 其它 FTP Command Response 封包

接著 FTP Server 要求 Client 端輸入帳號與密碼,會出現一連串的 FTP Command FTP Response 封包交互傳遞,請自行觀察分析。

5-2-6 FTP 資料傳遞封包 分析

接著上述的實驗, PC0 上會出現等待命令的 Prompt,則輸入 dir,要求顯示伺服端命令,如下:

Packet Tracer 擷取到封包如下:

(A) FTP CommandType 封包

此封包為 FTP Client 要求是否同意制定 Data Channel 的型態?(PORT or PASV)

得到下列結果:

  • IP 標頭PRO = 0x06SRC IP = 192.168.0.1DES IP = 192.168.0.251

  • TCP 標頭Source Port = 1025DES Port = 21

  • FTP 封包 FTP CommandTYPE

(B) FTP Commandokay 封包

此封包是 FTP Sever 同意 Client 制定 Data Channel 的型態。

得到下列結果:

  • IP 標頭PRO = 0x06SRC IP = 192.168.0.251DES IP = 192.168.0.1

  • TCP 標頭Source Port = 21DES Port = 1025

  • FTP 封包: FTP Commandokay

(C) FTP CommandPASV 封包

此封包是 FTP Client 制定 Data Channel 的型態為 PASV

得到下列結果:

  • IP 標頭:PRO = 0x06SRC IP = 192.168.0.1DES IP = 192.168.0.251

  • TCP 標頭:Source Port = 1025DES Port = 21

  • FTP 封包: FTP CommandPASV

(D) FTP ResponseMessage192,168,0,251,4,4

此封包是 FTP Server 同意使用 PASV Mode 傳輸,並告知 Data Channel 埠口是 1028

得到下列結果:

  • IP 標頭:PRO = 0x06SRC IP = 192.168.0.251DES IP = 192.168.0.1

  • TCP 標頭:Source Port = 21DES Port = 1025

  • FTP 封包: FTP ResponseMessage192,168,0,251,4,4(192.168.0.251:1028)

(E) FTP CommandLIST 封包

此封包是 FTP Client Sever 端下 dir 命令,要求顯示目錄內容。

得到下列結果:

  • IP 標頭:PRO = 0x06SRC IP = 192.168.0.1DES IP = 192.168.0.251

  • TCP 標頭:Source Port = 1025DES Port = 21

  • FTP 封包: FTP CommandLIST

(F) FTP Responsetransfer starting

此封包是 FTP Sever 端同意並開始傳送資料。

得到下列結果:

  • IP 標頭:PRO = 0x06SRC IP = 192.168.0.251DES IP = 192.168.0.1

  • TCP 標頭:Source Port = 21DES Port = 1025

  • FTP 封包: FTP Commandtransfer starting

(G) TCP Connect Request

此封包是 FTP Client 端要求建立資料傳輸的 TCP 連線。

得到下列結果:

  • IP 標頭:PRO = 0x06SRC IP = 192.168.0.1DES IP = 192.168.0.251

  • TCP 標頭:Source Port = 1026DES Port = 1028(FTP Server 告知的埠口)

(H) TCP Data Transfer

上述要求連線後,會有一連串的三向式聯絡法封包,就不再敘述。建立連線後,即開始 FTP Dtat 傳輸,但它還是採用 TCP Data Transfer 封包傳送,如下:

得到下列結果:

  • IP 標頭:PRO = 0x06SRC IP = 192.168.0.151DES IP = 192.168.0.1

  • TCP 標頭:Source Port = 1028DES Port = 1026

  • TCP Data

5-2-7 FTP 終止連線封包 分析

請自行擷取下列封包練習:

  • TCP Data Channel 終止連線封包。

  • Client 端輸入 > quit 命令後,擷取 FTP 終止連線封包。

翻轉工作室:粘添壽

 

網路規劃與管理技術:

 

 

翻轉電子書系列: