TCP/IP 與 Internet 網路:第十二章 檔案傳輸系統 上一頁 下一頁
12-5 FTP 命令與回覆訊息
基本上,Client/Server 雙方是以命令和回覆訊息,來達成雙方通訊。但在 FTP 協定中有『FTP 命令』和『FTP 交談命令』兩種型態,FTP 命令是傳遞給雙方通訊使用;而 FTP 交談命令則允許使用者下達使用。當使用者由鍵盤輸入 FTP 交談命令後,便由直譯器(User 或 Server)編譯成 FTP 命令,並且在命令後加入 <CRLF> 控制字元,表示一個命令的結束。首先我們來介紹 FTP 命令,在下一節再介紹 FTP 交談命令。
12-5-1 FTP 命令
FTP 命令與回應都是 NTV ASCII 型態,透過主從雙方的控制連線來傳送,任何一方都可發送命令,而接收端收到命令後,再以 FTP 回覆給對方。基本上,FTP 協定也是將通訊雙方模擬成 Telnet 終端機模式,但並沒有像 Telnet 終端機系統那麼複雜,因此,通訊雙方可能出現某些選項命令(WILL、WONT、DO 或 DONT),對方也可能回應 DONT 或 WONT。
每一個 FTP 命令都是以 4 個字母表示,而格式為『命令 參數 <CRLF>』,其中命令表示 FTP 命令(如 USER)、參數為命令中攜帶的參數值(如 tsnien),一個完整命令如『USER tsnien <CRLF>』,而其中 <CRLF> 為 NTV ASCII 表示一行結束的意思。欲知道有哪些 FTP 命令,可由 Telnet 登入 FTP 控制埠口(21/tcp),再以 HELP 命令來查詢,查詢結果如下:(其中粗體加底線為輸入命令)
[tsnien@linux-1 tsnien]$ telnet 163.15.2.62 21 Trying 163.15.2.62... Connected to 163.15.2.62. Escape character is '^]'. 220 linux-1.cu.edu.tw FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST 20 00) ready. user anonymous 331 Guest login ok, send your complete e-mail address as password. pass tsnien@cc.cma.edu.tw 230 Guest login ok, access restrictions apply. help 212-The following commands are recognized (* =>'s unimplemented). USER PORT STOR MSAM* RNTO NLST MKD CDUP PASS PASV APPE MRSQ* ABOR SITE XMKD XCUP ACCT* TYPE MLFL* MRCP* DELE SYST RMD STOU SMNT* STRU MAIL* ALLO CWD STAT XRMD SIZE REIN* MODE MSND* REST XCWD HELP PWD MDTM QUIT RETR MSOM* RNFR LIST NOOP XPWD 214 Direct comments to root@localhost. |
以上 FTP 命令可分:『存取控制命令』(Access Control Command)、『傳輸參數命令』(Transfer Parameter Command)與『FTP 服務命令』(FTP Service Command)等三種,我們將一些較常用的命令說明如下:
(A)存取控制命令
下列較常用的存取控制命令(Access Control Command)為 FTP Client 欲連結上 FTP Server 的主要命令:
※ USER:使用者登入命令,如 USER anonymous,表示以使用者名稱 anonymous 登入 FTP Server。
※ PASS:使用者密碼,如 PASS tsnien@pchome.com.tw。
※ QUIT:離開並關閉 FTP 連線。
(B)傳輸參數命令
FTP Client 和 Server 之間的傳輸模式,除了預設模式外,也可以利用傳輸參數命令(Transfer Parameter Command)來重新設定,常用命令如下:
● PORT:由 FTP Client 通知 FTP Server 資料連線的位址,其中包含 IP 位址和 TCP 埠口。譬如,PORT 163,15,2,62,4,50,則表示 IP 位址為 163.15.2.62,而 TCP 埠口為 4 *256 +50 = 1074。
● PASV:(Passive)FTP Client 通知 Server 設定聆聽資料連線狀態。FTP 協定的預設狀態是當控制連線建立後,FTP Client 會立即以 PORT 命令告訴 Server 端,自己的資料連線埠口位址,並進入聆聽狀態,等待對方連線(被動狀態),而由 FTP Server 主動要求連接資料連線。在某些情況,FTP Client 以 PASV 命令通知 Server 進入聆聽狀態(被動狀態),而 Client 端成為主動狀態,來要求連接資料連線。命令格式為 PASV,不需要參數。
● TYPE:設定傳輸資料檔案型態的命令,命令格式為『TYPE <type code> <format>』,其中 type code = A 為 ASCII;E 為 EBCDIC;I 為 Image,而 format = N 為 Non-print;T 為 Telnet Format;C 為 Carriage Control。譬如,FTP 協定預設值為 TYPE A N。
(C)FTP 服務命令
FTP 服務命令(FTP Service Command)是定義檔案傳輸功能的命令,也包含一些較通用的檔案管理命令,常用命令如下:
● 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 命令及任何資料傳輸。
12-5-2 FTP 回覆訊息
FTP Server 執行完 Client 端的命令後,必須將執行結果回應給 FTP Client,此為 FTP 訊息。FTP 訊息是由三個數字來表示執行的結果,並隨後加入訊息字串,三個數字的控制訊息是要給 FTP 軟體看的,而隨後之訊息字串是要給交談式的使用者看的,FTP Client 會依照三個數字的控制訊息給予適當的回應;而訊息字串並沒有嚴格規定訊息格式。FTP 訊息之標準格式如下:
【xyz <SP> 訊息字串 <CRLF>】
其中前三個數字(xyz)表訊息種類,第一個數字(x)表示命令執行結果是正常(Good)、不正常(Bad)或不完整(Incomplete);第二個數字(y)表示執行結果的原因;第三個數字(z)為每一訊息狀態再分類。表 12-1 為訊息狀態第一和第二個數字(xy)所代表的意義。
表 12-1 FTP 訊息回覆
FTP 回覆 |
回 覆 意 義 說 明 |
1yz |
肯定的已接受處理命令之回覆。亦表示新命令的開始。 |
2yz |
肯定的完成命令回覆,亦表示新命令可以再開始。 |
3yz |
肯定的中間命令回覆,亦表示必須再給予下一個命令補充。 |
4yz |
暫時否定的完成回覆,亦表示命令可以重新再發出。 |
5yz |
永久否定的完成回覆,命令不可再發出重試。 |
x0z |
語法錯誤。 |
x1z |
回應訊息。 |
x2z |
回應處理有關控制或資料連線的命令之訊息。 |
x3z |
回應有關認證和登入計數之訊息。 |
x4z |
未使定使用。 |
x5z |
回應有關處理檔案系統命令的訊息。 |
我們列出一些常見的典型回覆訊息如下:
▲ 125 資料連線已完成,可開始傳輸資料。
▲200 命令執行正常。
▲214 Help 訊息回覆。
▲ 221 連線終止回覆。
▲ 230 使用者登入,處理完成。
▲ 225 資料連線開啟正常,還未傳輸資料。
▲ 250 要求檔案動作正常,處理完成。
▲ 331 使用者名稱確定,要求輸入密碼。
▲ 425 不能開啟資料連線。
▲ 452 寫入檔案錯誤,儲存空間不足。
▲ 500 語法錯誤(不合法之命令)。
▲ 501 語法錯誤(參數值無效)。
基本上,FTP Client 每下一個 FTP 命令,FTP Server 都會回覆一個單行的訊息,如需要回覆多行訊息的話,會在訊息數字後面以『-』表示連結的意思,到最後一行(相同訊息數字)以沒有『-』,來表示訊息結束。