Ftp協(xié)議:RFC959
命令和返回碼:
C–>S:命令
S–>C:返回碼
每一個Ftp發(fā)送之后,F(xiàn)tp服務器都會返回一個字符串,其中包括一個返回代碼和一串說明信息。這個返回碼主要是用于判斷命令是否被成功執(zhí)行了。除此之 外,還有一個非常重要的命令的返回。當發(fā)送PASV之后,返回“227 Entering Passive Mode (127,0,0,1,4,18)”。這意味著在服務器上有一個端口被開放,他將為我們后面接著的數(shù)據(jù)傳輸作好準備,但是我們?nèi)绾沃涝摱丝谔柲?,就?(127,0,0,1,4,18)中,前面四位指服務器的地址,關鍵是最后兩位,將最后第二位乘256再加上最后一位的值就是我們的端口號,也就是 4*256+18。取得端口號之后我們就可以用socket連接到這里。這為我們后面的工作作好準備了,因為我們的取得列表,上傳,下載文件都要依靠它來 實現(xiàn)。
FTP命令:
灰色的命令一般很少使用,所以往往在具體實現(xiàn)中不被支持,所以可能返回的信息是“500 'xx': command not understood”。
命令 |
描述 |
ABOR |
中斷數(shù)據(jù)連接程序 |
ACCT |
系統(tǒng)特權帳號 |
ALLO |
為服務器上的文件存儲器分配字節(jié) |
APPE |
添加文件到服務器同名文件 |
CDUP
|
改變服務器上的父目錄 |
CWD
|
改變服務器上的工作目錄 |
DELE |
刪除服務器上的指定文件 |
HELP |
返回指定命令信息 |
LIST |
如果是文件名列出文件信息,如果是目錄則列出文件列表 |
MODE |
傳輸模式(S=流模式,B=塊模式,C=壓縮模式) |
MKD |
在服務器上建立指定目錄 |
NLST |
列出指定目錄內(nèi)容 |
NOOP |
無動作,除了來自服務器上的承認 |
PASS |
系統(tǒng)登錄密碼 |
PASV |
請求服務器等待數(shù)據(jù)連接 |
PORT |
IP 地址和兩字節(jié)的端口 ID |
PWD |
顯示當前工作目錄 |
QUIT |
從 FTP 服務器上退出登錄 |
REIN |
重新初始化登錄狀態(tài)連接 |
REST |
由特定偏移量重啟文件傳遞 |
RETR |
從服務器上找回(復制)文件 |
RMD |
在服務器上刪除指定目錄 |
RNFR |
對舊路徑重命名 |
RNTO |
對新路徑重命名 |
SITE |
由服務器提供的站點特殊參數(shù) |
SIZE〈FILENAME〉 |
文件大小,執(zhí)行成功返回 213 |
SMNT |
掛載指定文件結構 |
STAT |
在當前程序或目錄上返回信息 |
STOR |
儲存(復制)文件到服務器上 |
STOU |
儲存文件到服務器名稱上 |
STRU |
數(shù)據(jù)結構(F=文件,R=記錄,P=頁面) |
SYST |
返回服務器使用的操作系統(tǒng) |
TYPE |
數(shù)據(jù)類型(A=ASCII,E=EBCDIC,I=binary) |
FTP返回碼/響應碼:
響應代碼 |
解釋說明 |
110 |
新文件指示器上的重啟標記 |
120 |
服務器準備就緒的時間(分鐘數(shù)) |
125 |
打開數(shù)據(jù)連接,開始傳輸 |
150 |
打開連接 |
200 |
成功 |
202 |
命令沒有執(zhí)行 |
211 |
系統(tǒng)狀態(tài)回復 |
212 |
目錄狀態(tài)回復 |
213 |
文件狀態(tài)回復 |
214 |
幫助信息回復 |
215 |
系統(tǒng)類型回復 |
220 |
服務就緒 |
221 |
退出網(wǎng)絡 |
225 |
打開數(shù)據(jù)連接 |
226 |
結束數(shù)據(jù)連接 |
227 |
進入被動模式(IP 地址、ID 端口) |
230 |
登錄完成 |
250 |
文件行為完成 |
257 |
路徑名建立 |
331 |
要求密碼 |
332 |
要求帳號 |
350 |
文件行為暫停 |
421 |
服務關閉 |
425 |
無法打開數(shù)據(jù)連接 |
426 |
結束連接 |
450 |
文件不可用 |
451 |
遇到本地錯誤 |
452 |
磁盤空間不足 |
500 |
無效命令 |
501 |
錯誤參數(shù) |
502 |
命令沒有執(zhí)行 |
503 |
錯誤指令序列 |
504 |
無效命令參數(shù) |
530 |
未登錄網(wǎng)絡 |
532 |
存儲文件需要帳號 |
550 |
文件不可用 |
551 |
不知道的頁類型 |
552 |
超過存儲分配 |
553 |
文件名不允許 |