文件傳輸協(xié)議(FTP:File Transfer Protocol)使得主機(jī)間可以共享文件。 FTP 使用 TCP 生成一個虛擬連接用于控制信息,然后再生成一個單獨(dú)的 TCP 連接用于數(shù)據(jù)傳輸??刂七B接使用類似 TELNET 協(xié)議在主機(jī)間交換命令和消息。
FTP 的主要功能如下:
提供文件的共享(計算機(jī)程序 / 數(shù)據(jù)); 支持間接使用遠(yuǎn)程計算機(jī); 使用戶不因各類主機(jī)文件存儲器系統(tǒng)的差異而受影響; 可靠且有效的傳輸數(shù)據(jù)。
FTP ,盡管可以直接被終端用戶使用,但其應(yīng)用主要還是通過程序?qū)崿F(xiàn)。
FTP 控制幀即指 TELNET 交換信息,包含 TELNET 命令和選項。然而,大多數(shù) FTP 控制幀是簡單的ASCII文本,可以分為 FTP 命令或 FTP 消息。 FTP 消息是對 FTP 命令的響應(yīng),它由帶有解釋文本的應(yīng)答代碼構(gòu)成。
協(xié)議結(jié)構(gòu)
命令 描述
ABOR 中斷數(shù)據(jù)連接程序
ACCT <account> 系統(tǒng)特權(quán)帳號
ALLO <bytes> 為服務(wù)器上的文件存儲器分配字節(jié)
APPE <filename> 添加文件到服務(wù)器同名文件
CDUP <dir path> 改變服務(wù)器上的父目錄
CWD <dir path> 改變服務(wù)器上的工作目錄
DELE <filename> 刪除服務(wù)器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在服務(wù)器上建立指定目錄
NLST <directory> 列出指定目錄內(nèi)容
NOOP 無動作,除了來自服務(wù)器上的承認(rèn)
PASS <password> 系統(tǒng)登錄密碼
PASV 請求服務(wù)器等待數(shù)據(jù)連接(被動模式)
PORT <address> IP 地址和兩字節(jié)的端口 ID
PWD 顯示當(dāng)前工作目錄
QUIT 從 FTP 服務(wù)器上退出登錄
REIN 重新初始化登錄狀態(tài)連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從服務(wù)器上找回(復(fù)制)文件
RMD <directory> 在服務(wù)器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由服務(wù)器提供的站點(diǎn)特殊參數(shù)
SMNT <pathname> 掛載指定文件結(jié)構(gòu)
STAT <directory> 在當(dāng)前程序或目錄上返回信息
STOR <filename> 儲存(復(fù)制)文件到服務(wù)器上
STOU <filename> 儲存文件到服務(wù)器名稱上
STRU <type> 數(shù)據(jù)結(jié)構(gòu)(F=文件,R=記錄,P=頁面)
SYST 返回服務(wù)器使用的操作系統(tǒng)
TYPE <data type> 數(shù)據(jù)類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統(tǒng)登錄的用戶名
標(biāo)準(zhǔn) FTP 信息如下:
響應(yīng)代碼 解析說明
1xx-肯定的初步答復(fù)
這些狀態(tài)代碼指示一項操作已經(jīng)成功開始,但客戶端希望在繼續(xù)操作新命令前得到另一個答復(fù)。
110 重新啟動標(biāo)記答復(fù)。
120 服務(wù)已就緒,在nnn分鐘后開始。
125 數(shù)據(jù)連接已打開,正在開始傳輸。
150 文件狀態(tài)正常,準(zhǔn)備打開數(shù)據(jù)連接。
2xx-肯定的完成答復(fù)
一項操作已經(jīng)成功完成??蛻舳丝梢詧?zhí)行新命令。
200 命令確定。
202 未執(zhí)行命令,站點(diǎn)上的命令過多。
211 系統(tǒng)狀態(tài),或系統(tǒng)幫助答復(fù)。
212 目錄狀態(tài)。
213 文件狀態(tài)。
214 幫助消息。
215 NAME系統(tǒng)類型,其中,NAME是AssignedNumbers文檔中所列的正式系統(tǒng)名稱。
220 服務(wù)就緒,可以執(zhí)行新用戶的請求。
221 服務(wù)關(guān)閉控制連接。如果適當(dāng),請注銷。
225 數(shù)據(jù)連接打開,沒有進(jìn)行中的傳輸。
226 關(guān)閉數(shù)據(jù)連接。請求的文件操作已成功(例如,傳輸文件或放棄文件)。
227 進(jìn)入被動模式(h1,h2,h3,h4,p1,p2)。
230 用戶已登錄,繼續(xù)進(jìn)行。
250 請求的文件操作正確,已完成。
257 已創(chuàng)建“PATHNAME”。路徑已經(jīng)建立。
3xx-肯定的中間答復(fù)
該命令已成功,但服務(wù)器需要更多來自客戶端的信息以完成對請求的處理。
331 用戶名正確,需要密碼。
332 需要登錄帳戶。
350 請求的文件操作正在等待進(jìn)一步的信息。
4xx-瞬態(tài)否定的完成答復(fù)
該命令不成功,但錯誤是暫時的。如果客戶端重試命令,可能會執(zhí)行成功。
421 服務(wù)不可用,正在關(guān)閉控制連接。如果服務(wù)確定它必須關(guān)閉,將向任何命令發(fā)送這一應(yīng)答。
425 無法打開數(shù)據(jù)連接。
426 連接關(guān)閉,傳送中止。
450 未執(zhí)行請求的文件操作。文件不可用(例如,文件繁忙)。
451 請求的操作異常終止:正在處理本地錯誤。
452 未執(zhí)行請求的操作。系統(tǒng)存儲空間不夠。
5xx-永久性否定的完成答復(fù)
該命令不成功,錯誤是永久性的。如果客戶端重試命令,將再次出現(xiàn)同樣的錯誤。500語法錯誤,命令無法識別。這可能包括諸如命令行太長之類的錯誤。
501 在參數(shù)中有語法錯誤。
502 未執(zhí)行命令。
503 錯誤的命令序列。
504 未執(zhí)行該參數(shù)的命令。
530 未登錄。
532 存儲文件需要帳戶。
550 未執(zhí)行請求的操作。文件不可用(例如,未找到文件,沒有訪問權(quán)限)。
551 請求的操作異常終止:未知的頁面類型。
552 請求的文件操作異常終止:超出存儲分配(對于當(dāng)前目錄或數(shù)據(jù)集)。
553 未執(zhí)行請求的操作。不允許的文件名。
常見的FTP狀態(tài)代碼及其原因
150-FTP使用兩個端口:21用于發(fā)送命令,20用于發(fā)送數(shù)據(jù)。狀態(tài)代碼150表示服務(wù)器準(zhǔn)備在端口20上打開新連接,發(fā)送一些數(shù)據(jù)。
226-命令在端口20上打開數(shù)據(jù)連接以執(zhí)行操作,如傳輸文件。該操作成功完成,數(shù)據(jù)連接已關(guān)閉。
230-客戶端發(fā)送正確的密碼后,顯示該狀態(tài)代碼。它表示用戶已成功登錄。
331-客戶端發(fā)送用戶名后,顯示該狀態(tài)代碼。無論所提供的用戶名是否為系統(tǒng)中的有效帳戶,都將顯示該狀態(tài)代碼。
530-該狀態(tài)代碼表示用戶無法登錄,因為用戶名和密碼組合無效。如果使用某個用戶帳戶登錄,可能鍵入錯誤的用戶名或密碼,也可能選擇只允許匿名訪問。如果使用匿名帳戶登錄,IIS的配置可能拒絕匿名訪問。解決方法:重置密碼再試試,需注意的是FTP密碼不能超過16位
550-命令未被執(zhí)行,因為指定的文件不可用。例如,要GET的文件并不存在,或試圖將文件PUT到您沒有寫入權(quán)限的目錄。解決方法:確認(rèn)文件是否存在,并開通該目錄的寫入權(quán)限。
。
421 - 服務(wù)不可用,正在關(guān)閉控制連接??赡苁峭瑫r連接該ftp的人數(shù)過多。解決方法:自動重試次數(shù)設(shè)為100,不斷請求連接,一般幾分鐘后就能連上。
452-未執(zhí)行請求的操作。系統(tǒng)存儲空間不夠。解決方法:清空多余文件或者購買空間以保證有足夠的空間存放該文件
426-命令打開數(shù)據(jù)連接以執(zhí)行操作,但該操作已被取消,數(shù)據(jù)連接已關(guān)閉。解決方法:把連接模式改為主動模式(PORT模式)。
425 無法打開數(shù)據(jù)連接。主要由于防火墻限制了該端口的ftp連接導(dǎo)致的。解決方法:把連接模式改為主動模式(PORT模式)。