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 終端機系統那麼複雜,因此,通訊雙方可能出現某些選項命令(WILLWONTDO 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 CommandFTP 服務命令』(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

PASVPassiveFTP Client 通知 Server 設定聆聽資料連線狀態。FTP 協定的預設狀態是當控制連線建立後,FTP Client 會立即以 PORT 命令告訴 Server 端,自己的資料連線埠口位址,並進入聆聽狀態,等待對方連線(被動狀態),而由 FTP Server 主動要求連接資料連線。在某些情況,FTP Client PASV 命令通知 Server 進入聆聽狀態(被動狀態),而 Client 端成為主動狀態,來要求連接資料連線。命令格式為 PASV,不需要參數。

TYPE設定傳輸資料檔案型態的命令,命令格式為TYPE <type code> <format>,其中 type code = A ASCIIE EBCDICI Image,而 format = N Non-printT Telnet FormatC Carriage Control。譬如,FTP 協定預設值為 TYPE A N

CFTP 服務命令

FTP 服務命令(FTP Service Command)是定義檔案傳輸功能的命令,也包含一些較通用的檔案管理命令,常用命令如下:

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 命令及任何資料傳輸。

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 都會回覆一個單行的訊息,如需要回覆多行訊息的話,會在訊息數字後面以-表示連結的意思,到最後一行(相同訊息數字)以沒有-,來表示訊息結束。

 

 

<GOTOP>