Page 1

資策會網路工程師班 82 期 TCP / IP 報告

FTP

指導老師:戴致禮 老師 班級:UC104 姓名:曹智銘 學號:C1000332


FTP 簡介: FTP = File Transfer Protocol ( 檔案傳輸通訊協定 ) 是 TCP/IP 所提供的標準機制,主要的 功能是在網路上使設備與設備之間進行檔案的傳輸。FTP 與其他應用協定的不同之處,在於 FTP 是在二台主機間建立二條聯線,其中一條連線做資料傳輸;另一條連線傳送命令和回應 等控制訊息。如此分開傳送使得 FTP 的運作更有效率。此外,管理者也可以在伺服器端上直 接管理所有用戶端的資料,從資料的統整性來看,可說是相當方便。FTP 使用二個 TCP 公認 的埠號,第 21 號用來做為控制連線和第 20 埠號用來做為資料連線。而 FTP 的傳輸模式,主 要可以分為二種,一種是「主動模式」另一種是「被動模式」 。以下就分別概略來說明二種傳 輸模式的差異性。 實驗環境:如下圖,並使用 Wireshark 軟體來擷取封包。

※ 主動模式 主動模式的運作原理,是由 Client 端隨機使用一個 1024 以上的通訊埠(以下說明以 Port N 表示),與 FTP 的 Server 端的命令通訊埠(port 21)建立連線,同時 Client 端自己開啟一個 N+1 的通訊埠等待 Server 端連線。Server 端接到 Client 端的命令之後,便使用資料通訊埠(port 20)主動與 Client 端的 Port N+1 建立資料連線。 首先利用 Filezilla Client 的主動模式,來與 Server 端連線:


連線後,任意操作一些檔案的傳送,並且由 Wireshark 得到以下的封包擷取畫面:

由上圖可了解到,TCP 的連線是採「三向交握」的方式。(圖:1 號標記紅框處) 由 2 號標記處 的回應訊息 220 也可得知,FTP 已經做好了連線的準備。標記 3 號處則是可以看到 Client 端是 採用 1194 號 Port (隨機產生 1024 以上的埠號),Server 端則是開啟 21 號 Port 做命令的接收與 回應。接著也可以在下圖看到,是由 Server 端主動與 Client 端提供的 Port N+1 建立資料連線, 接著並透過這個 Port 傳送資料。

所謂的主動式,就是以 Server 端為觀點來看。透過 Client 所提供的 Port (此時也包含了 Client 端的 IP 位址資訊),接著 Server 端(利用 Port 20)主動與其提供的 Port 建立資料連結。而 Client


端提供的 Port 看似是隨機產生,但其實不然,實際上是有因可循的。我們由下方的圖示可以 看出紅線處所標示的 Port 的部分:前方 192.168.8.12 為 Client 端的 IP 位址,其後方的值 4 , 54, 其中 4 代表 IPv4,後方的 54 才是隨機產生的。但如何讓此 Port 去大於 1023 呢 ? 我們可以 256 x 4 + 38 的演算方式可以得到 1078,即是要讓 Server 端主動建立連結的 Port。

※ 被動模式 不論命令連線或是資料連線都是由 Client 端建立,當 Client 端開啟 FTP 連線時,Client 端程 式先在本機開兩個大於 1023 的通訊埠 (N、N+1),利用 Port N 與 Server 端的 Port 21 建立連 線。不同於主動模式的連線方式,Client 端這次不再提供 N+1 Port 與 IP 位址給伺服器,而是 送出 PASV 的命令。Server 端收到 PASV 的命令之後,即開啟一個大於 1023 的通訊埠 (Port P), 並將這個通訊埠連同 Server 端的 IP 回覆給 Client 端,被動等待 Client 端來連線,Client 端即利 用 Port N+1 與 Server 端所提供的 Port P 建立資料連線。


我們利用 Filezilla Client 的被動模式,來與 Server 端連線:

由 Wireshakr 封包擷取程式,則可以得到以下的相關訊息:

由上方的封包圖可以看出,先由 Client 端發送 PASV 指令給 Server 端 (Port 21),說明要使用被 動模式,接著便由 Server 端提供資料連結的 Prot 給 Client 端(此時也夾帶了 Server 端的 IP 位址 資訊),並等待 Client 端來與其建立連線。

再由上圖可知,接著便是由 Client 端用 N+1 的 Port 來與 Server 端提供的 Port 來建立資料連結。 而 Server 端所提供的 1095 Port,我們也可以利用 256 x 4 + 71 的演算來得到相同的結果。


※ 結論 主動式的資料連接埠,是由 Client 端來提供的,且 Server 端是固定使用 21 埠來建立傳輸連結。 而被動式的資料連接埠,則是以 Client 端發出 PASV 命令後,由 Server 端來提供一個隨機產生 的埠,來與 Client 端建立傳輸連結。 主動式 FTP: 命令連結 Client 端 Port N (隨機) → Server 端 Port 21 資料連結 Server 端 Port 20 → Client 端 Port N + 1 被動式 FTP: 命令連結 Client 端 Port N (隨機) → Server 端 Port 21 資料連結 Client 端 Port N + 1 → Server 端 Port P (隨機) 補充: 1. 上述的 N 與 P,都必須大於 1023。 2. 由下方的封包圖我們可以發現,FTP 的傳輸事實上是不太安全的,因為他是使用「明碼」 的方式,所以透過 Wireshark 這種看封包的軟體,就可以很輕易的看到使用者所使用的登 入帳號、以及登入密碼。


FTP 應用於 OSI 七層 實體層 ( Physical Layer ):將各個位元從某一節點傳輸到下一個節點。 雖然 Wireshark 軟體無法辨識實體網路架構 & 傳輸媒介規格,但可以由下方的封包圖中看見 最底層有位訊號的記載。

資料鏈結層 ( Data-Link Layer ):將訊框從某一節點傳輸到另一節點。 由下圖可以看到,資料鏈結層將實體層傳來的資料組成「訊框」 ,並加上來源端 & 目的端的 MAC Address,然後再傳輸到上一層的實體媒介,傳送過程中會進行偵錯與復原。

網路層 ( Network Layer ):負責封包從來源主機到目的地主機的傳遞。 此層收到下一層傳來的訊框以後,再加上來源端 & 目的端的 IP 位址等資訊,基本上就成為 了封包。並且會為此封包規劃出最佳的傳輸路徑 (協定)。


傳輸層 ( Transport Layer ):負責從某個程序到另一個程序之間的訊息傳遞。 此層會對封包進行一些動作,諸如:加入服務點位址(埠址)、切割與再重組封包(編訂資料區 段序號)、確立連線的型式(此為 TCP 連線導向型)、流量控制、錯誤偵測。FTP 是屬於 TCP 服 務的一種,可靠性傳送的確認機制是以「三向交握」的方法來確認,目的在於雙方必須知道 對方的第一個封包的序號。

交談層 ( Session Layer ):負責對話控制和同步。 此層定義了如何連接和掛斷連接,以及在網路上面的數據如何交換。這層所負責的是建立和 管理電腦與電腦之間的溝通模式,也就是在資料真正進行傳送之前設定並建立好連線。而 FTP 在此層可以概略說明是定義了連線的情求和結束、傳送和接收狀態的設定… 等等動作。 表示層 ( Presentation Layer ):負責轉譯、壓縮和加密。 此層是把資料轉換為用戶能理解的形式,以及資料結構的確認協調資料交換格式。FTP 允許 你選擇以二進制或 ASCII 格式傳輸。如果選擇二進制,那麼發送方和接收方將不改變文件的 內容。如果選擇 ASCII,傳送者會把檔案從原本自己的表示法轉換成 NVT ASCII 的字元,而 接收者把 NVT ASCII 自元轉換成自己的表示法。 應用層 ( Application Layer ):負責提供服務給使用者。 此層式與使用者直接面對面的層級,也就是使用者或使用者程式與網路溝通的操作介面。例 如:FTP 給使用者操作的介面。( 本文章一開始介紹的 Filezilla Server、Filezilla Client 即是。)

參考文獻: TCP / IP 課本、TCP / IP 講義 資策會 Life 知識庫 http://u940105.site90.com/?p=1727 (網站) http://phorum.com.tw/ShowPost/5609.aspx (網站)

ftp  

iosd[rhgi0so[ipngkpsm"PGIjsw

Read more
Read more
Similar to
Popular now
Just for you