FTP協議數據包命令含義詳解

本節我們掌握FTP協議的數據包格式,爲編碼實現奠定基礎。我們先看看控制命令的格式。當用戶端通過控制命令通道想服務器端發送數據後,服務器端一定會產生回覆。回覆主要有三個目的,首先是讓客戶端確定服務端收到了消息,其次是通知客戶端請求是否能被接收,第三通知客戶端當前服務器的狀態。

數據包格式的組成特點是數字與文本信息相混合。服務器返回給客戶端的數據包中一定包含回覆碼,該數值用來通知客戶端數據包的格式和內容。不同的服務器在回覆的數據包中,同樣目的的數據包回覆碼一定相同,但是字符串內容可能會有所不同,因此對數據包的解讀必須根據回覆碼進行。回覆碼包含三位數值,每個數字對應不同意義,對於回覆碼“xyz",第一位數字是x,第二位是y,第三位是z,下面我們依次看他們對應的含有。

第一位數字x表示客戶發送的命令是否能成功執行,他的意義對應如下表:

回覆碼 含義 描述
1yz 命令被接受並執行第一步 用戶發送的命令需要執行多個不再,1表示當前請求正在被執行,用戶需要等待服務器後續回覆
2yz 命令被接受且成功執行 用戶發送的請求已經被服務器完全執行
3yz 命令被接受並且正在執行過程中 客戶端發送命令收到,但執行被推遲,例如客戶端發起驗證請求,同時發送給服務器用戶名但密碼還沒有發過去時服務器就會返回此回覆碼
4yz 命令暫時被拒絕 客戶端發送的命令不能被執行,但是客戶端在稍後可以再次發送該命令進行嘗試,例如服務器過忙時會返回該命令碼,客戶端就可以延遲一段時間後再次發送命令
5yz 命令永久被拒絕 服務器拒絕執行命令,後續發送也會被拒絕,例如請求服務器上沒有的文件時就會返回該命令碼

接下來看數字y的含義:

回覆碼 含義 描述
x0z 數據格式問題 客戶端發送的數據包可能不符合格式
x1z 數據包表示相關信息 回覆客戶端發來的信息請求
x2z 連接 返回連接狀態相關信息
x3z 認證和統計 返回登陸和統計方面信息
x4z 未定義 該數據包不表示任何含義
x5z 文件系統 返回服務器端文件系統信息

數字z是對數字y含義的進一步說明。當客戶端收到的回覆數字碼爲530時表示請求被永久拒絕,同時這是有關登陸方面的請求被拒絕,0表示被拒絕情況的進一步說明,下面是一次客戶端與服務器連接登陸時的會話情景:

屏幕快照 2020-02-12 下午9.00.45.png

還有不少命令我們沒有標明,下一節我們通過抓包的方式來查看ftp數據包格式以及詳細的連接溝通以及數據傳輸過程。

更詳細的講解和代碼調試演示過程,請點擊鏈接

更多技術信息,包括操作系統,編譯器,面試算法,機器學習,人工智能,請關照我的公衆號:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章