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