TCP/IP 與 Internet 網路:第十二章 檔案傳輸系統 上一頁 下一頁
12-2 FTP 協定
FTP 協定是採用 TCP 連線來製作,應用模式同樣是主從式(Client/Server)架構,雙方通訊亦使用 Socket 通訊端點(如第十二章介紹)。
FTP 使用兩個 TCP 連線來傳輸檔案,著名埠口 20(tcp/20)做為傳輸資料使用,而另外埠口 21(tcp/21)做為傳輸控制訊息使用,以下分別介紹這兩個連線的管理。
12-2-1 FTP 控制連線
圖 12-1 為 FTP 建立連線方式,其中包含控制連線與資料連線,控制連線運作如下:
圖 12-1 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 系統那麼複雜,選項也較為簡單。
12-2-2 FTP 資料連線
資料連線是當需要傳輸資料時,才建立而成,當傳輸資料完畢後,該連線就自動消失,下次需要傳輸資料時再建立(FTP 控制連線並未中斷)。資料連線是用來銜接 User DTP 和 Server DTP,其中牽涉到檔案的開啟、讀取、寫入等等有關作業系統本身的系統呼叫(System Call)的部分,FTP 利用獨立連線來達成,可省略掉許多處理程序,這也是 FTP 和 Telnet 最大的不同點。資料連線有 3 個功能:
(1) 由 FTP Client 傳送一個檔案到 FTP Server。
(2) 由 FTP Server 傳送一個檔案到 FTP Client。
(3) 由 FTP Server 傳送一檔案或目錄清單到 Client 端。
當主從雙方連線後,即一直保持著控制連線,而資料連線則會隨時依需要建立,或關閉(資料傳送完畢或 ABOR 命令中斷),又在 FTP 協定上允許任何一方開啟此資料連線,開啟者稱為主動開啟(Active Open);而接受者稱為被動開啟(Passive Open),至於是由誰為主動開啟?這就有協調的必要。
(A)伺服端主動
一般在主從式的應用系統上,任一事件的發生,大多是由客戶端主動要求,而伺服端才會隨著客戶端需求做出適當的反應,因此是否需要建立的決定權在於客戶端,所以建立資料連線的運作程序如下:
1. 當使用者要求傳輸檔案時(執行 STOR 或 LIST),便由 FTP Client 送出 PORT 命令,指定 FTP Client 端的資料連線之埠口位址。
2. FTP Client 便聆聽該資料埠口是否有連線要求。
3. FTP Server 由控制連線收到 Client 的資料連線埠口位址(PORT 命令),便發出要求連線訊號,FTP Server 的資料埠口大多是固定在 20號(tcp/20),但也可能隨需要改變到其它埠口。
圖 12-2 為 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 埠口。
圖 12-2 伺服器主動之運作圖
(B)客戶端主動
在 FTP 協定的預設是伺服器主動狀態,但有些情況必須由客戶端主動連接,在這種情況下 FTP Client 可利用 PASV(Passive Mode)命令,要求 Server 端進入聆聽狀態等待連接。一般 Server 端的資料連線都建立在埠口 20,因此,Client 端發出 PASV 後,如 Server 端回應執行正常,便可直接要求連線,如圖 12-3 所示。
圖 12-3 客戶端主動之運作圖