ftp上傳中,使用和不使用appe有什麼區別?
Q:
不太明白。
不使用appe的話,似乎是stor的命令。
有何區別呢?
A:
下面是一個簡單實現的FTP的狀態圖,只用到回應碼的首位。對於所有命令或命令序列有三種可能性:成功(S),失敗(F)或錯誤(E)。在狀態圖中B代表開始,W代表等待回應。下面我們給出一個總圖,總圖可以包括的命令有:
ABOR,ALLO,DELE,CWD,CDUP,SMNT,HELP,MODE,NOOP,PASV,QUIT,SITE,PORT,SYST,STAT,RMD,MKD,PWD,STRU和TYPE
1,3 +-----+
--------------->| E |
| +-----+
|
+-----+ cmd +-----+ 2 +-----+
| B |------------> | W |------------>| S |
+-----+ +-----+ +-----+
|
| 4,5 +-----+
--------------->| F |
+-----+
而下圖可以包括的命令有:APPE,LIST,NLST,REIN,RETR,STOR和STOU。
3 +-----+
--------------->| E |
| +-----+
|
+-----+ cmd +-----+ 2 +-----+
| B |------------>| W |------------>| S |
+-----+ ----> +-----+ +-----+
| | |
| | | 4,5 +-----+
| | --------------->| F |
| 1 | +-----+
-------
第一幅圖和第二幅圖差別不大,第一幅圖中如果出現了100系列回應會是錯誤,而在第二幅圖中不會。下面是重命名過程:
+-----+ RNFR +-----+ 1,2 +-----+
| B |------------>| W |------------->| E |
+-----+ +-----+ ---->+-----+
| | |
3 | | 4,5 |
---------------- ------- |
| | | +-----+
| ----------------->| S |
| | 1,3 | | +-----+
| 2 | -----------
| | | |
V | | |
+-----+ RNTO +-----+ 4,5 --------> +-----+
| |----------> | W |-------------> | F |
+-----+ +-----+ +-----+
下面是重新啟動命令,其中cmd代表APPE,STOR或RETR。
+-----+ REST +-----+ 1,2 +-----+
| B |------------>| W |-------------> | E |
+-----+ +-----+ ----> +-----+
| | |
3 | | 4,5 |
---------------- ------- |
| | | +-----+
| -----------------> | S |
| | 3 | | +-----+
| 2 | -----------
| | | |
V | | |
+-----+ cmd +-----+ 4,5 --------> +-----+
| |----------> | W |-------------> | F |
+-----+ ----> +-----+ +-----+
| |
| 1 |
--------
下圖代表登錄過程:
1
+-----+ USER +-----+--------------> +-----+
| B |------------> | W | 2 -----> | E |
+-----+ +-----+------- | ---> +-----+
| | | | |
3 | | 4,5 | | |
------------------- ------- | | |
| | | | |
| | | | |
| ------------ |
| 1| | | |
V | | | |
+-----+ PASS +-----+ 2 | -------->+-----+
| |-------------> | W |-------------->| S |
+-----+ +-----+ ------------>+-----+
| | | | |
3 | |4,5| | |
--------------- ---------- |
| | | | |
| | | | |
| -----------------
| 1,3| | | |
V | 2 | | |
+-----+ ACCT +-----+-- | ---------->+-----+
| |------> | W | 4,5 ------------>| F |
+-----+ +-----+ ----------------->+-----+
APPE <檔案名>
讓伺服器準備接收一個文件並把這些資料附加到指定的文件中,如果指定的文件不
存在就新增它。伺服器會回應:125->資料連接已開啟,傳輸啟動;150->準備開啟
資料連接;226->關閉資料連接,操作已成功;250->已完成;421->服務不可用;
425->無法開啟資料連接;450、532、550、553->無法執行。
STOR <檔案名> ;讓伺服器接收來自資料連接的文件,回應同APPE。
FTP服務命令定義用戶請求的文件傳輸或文件系統功能。此命令的參數通常是路徑名,其語法要和伺服器的規範一致。推薦的預設值是最近指定
的設備目錄或目錄。命令順序通常沒有限制,只有"rename from"命令後面必須是"rename to",重新啟動命令後面必須是中斷服務命令。服務命
令的回應通常在資料連接上傳輸。下面是具體的命令:
獲得文件(RETR)
此命令使伺服器DTP傳送指定路徑內的文件復本到伺服器或用戶DTP。這邊伺服器上文件的狀態和內容不受影響。
儲存(STOR)
此命令使伺服器DTP接收資料連接上傳送過來的資料,並將資料儲存在伺服器的文件中。如果文件已存在,原文件將被覆蓋。如果文件不存在,
則新增文件。
唯一儲存(STOU)
此命令和STOR差不多,此命令要求在此目錄下的檔案名是唯一的,對此命令的回應必須包括產生的用戶名。
附加(APPE)
它和STOR的功能差不多,但是如果文件在指定路徑內已存在,則把資料附加到原文件尾部,如果不存在則新增文件。
分配(ALLO)
此命令用於在一些主機上為新傳送的文件分配足夠的存儲空間。參數是十進制的邏輯字元數。如果是記錄或頁結構,頁或記錄的最大大小也需要
,這在第二個參數內以十進制指定。第二個參數是可選的,如果有它,它和第一個參數以Telnet字串 R 分隔。此命令在STOR或APPE命令後,對
於不需要分配存儲空間的機器,它的作用等於NOOP。
重新開始(REST)
參數域代表伺服器要重新開始的那一點,此命令並不傳送文件,而是略過指定點後的資料,此命令後應該跟其它要求文件傳輸的FTP命令。
重命名(RNFR)
這個命令和我們在其它操作系統中使用的一樣,只不過後面要跟"rename to"指定新的檔案名。
重命名為(RNTO)
此命令和上面的命令共同完成對文件的重命名。
放棄(ABOR)
此命令通知服務中止以前的FTP命令和與之相關的資料傳送。如果先前的操作已經完成,則沒有動作,返回226。如果沒有完成,返回426,然後
再返回226。關閉控制連接,資料連接不關閉。
刪除(DELE)
此命令刪除指定路徑下的文件。用戶工作負責對刪除的提示。
刪除目錄(RMD)
此命令刪除目錄。
新增目錄(MKD)
此命令在指定路徑下新增新目錄。
列印工作目錄(PWD)
在回應是返回當前工作目錄。
列表(LIST)
伺服器傳送列表到被動DTP,如果路徑指定一個目錄或許多文件,返回指定路徑下的文件列表。如果路徑名指定一個文件,伺服器返回文件的當
前信息,參數為空表示用戶當前的工作目錄或預設目錄。資料傳輸在ASCII或EBCDIC下進行,用戶必須確認這一點。因為文件信息因系統不同而
不同,所以不可能被程序自動利用,但是人類用戶卻很需要。
名字列表(NLST)
伺服器傳送目錄表名到用戶,路徑名應指定目錄或其它系統指定的文件群描述子;空參數指當前目錄。伺服器返回檔案名資料流,以ASCII或
EBCDIC形式傳送,並以或分隔。這裡返回的信息有時可以供程序進行進一步處理。
站點參數(SITE)
伺服器用來提供伺服器系統資訊,信息因系統不同而不同,格式在HELP SITE命令回應中給出。
系統(SYST)
用於確定伺服器上執行的操作系統。
狀態(STAT)
此命令返回控制連接狀態,它可以在文件傳送過程中發送,伺服器返回操作進行的狀態。也可以在文件傳送之間發送,這時命令有參數,參數是
路徑名,此命令的功能除了資料在控制連接上傳送以外和列表命令相似。如果指定部分路徑,伺服器以檔案名或與說明相關的屬性返回;如沒有
參數,伺服器返回伺服器FTP工作的狀態信息,包括傳輸參數的當前值和連接狀態。
幫助(HELP)
這條命令我們在平常系統中得到的幫助沒有什麼區別,回應類型是211或214。建議在使用USER命令前使用此命令。
等待(NOOP)
此命令不產生什麼實際動作,它僅使伺服器返回OK。
|