FTP協(xié)議詳解
簡介
FTP(File Transfer Protocol)是應(yīng)用層的一個文件傳輸協(xié)議。其主要作用是在服務(wù)器和客戶端之間實現(xiàn)文件的傳輸和共享锋恬。FTP協(xié)議運行在TCP連接上,保證了文件傳輸?shù)目煽啃裕ㄟ\行在UDP協(xié)議上的是TFTP協(xié)議)
與Http協(xié)議區(qū)別
Http和FTP都是文件傳輸協(xié)議杠娱,都是運行在tcp上面挽牢,但是他們也有一些重要的區(qū)別,F(xiàn)TP使用了兩個并行的tcp來傳輸文件:一個是控制連接(port:21)摊求,一個是數(shù)據(jù)連接(port:20)禽拔,控制連接用于在兩個主機之間傳輸控制信息,如口令室叉,用戶標(biāo)識睹栖,存放、獲取文件等命令茧痕。數(shù)據(jù)連接用于實際發(fā)送一個文件,發(fā)送完文件之后數(shù)據(jù)連接后會關(guān)閉野来。因為ftp協(xié)議使用一個獨立的控制連接,所以踪旷,也稱ftp的控制信息是帶外(out-of-band)傳送的曼氛。而Http協(xié)議是在傳輸文件的同一個tcp連接中發(fā)送請求和相應(yīng)首部行的。因此令野,Http也可以說是帶內(nèi)(in-band)發(fā)送控制信息舀患。
FTP的兩種傳輸方式
FTP支持兩種方式的傳輸:文本(ASCII)方式和二進制(Binary)方式。通常文本文件的傳輸采用ASCII方式气破,而圖象聊浅、聲音文件、加密和壓縮文件等非文本文件采用二進制方式傳輸现使,如果為了從一個系統(tǒng)上傳輸文件而使用了與本地系統(tǒng)不同的計算機字節(jié)位數(shù)狗超,那么就必須使用Tenex模式。FTP以ASCII方式作為默認的文件傳輸方式朴下。
FTP的兩種傳輸模式
FTP有兩種傳輸模式:主動(FTP Port)模式和被動(FTP Passive)模式努咐。由于主動模式存在著安全問題,最近幾年殴胧,大部分的TFP客戶端開始默認使用被動模式渗稍。
主動模式(Port)
主動模式的核心是TFP客戶端告訴服務(wù)端自己開發(fā)那個端口作為數(shù)據(jù)端口,然后讓服務(wù)端來連接自己团滥。 主動模式的連接建立一般是通過一些幾個步驟:
- 客戶端隨機打開一個本地大于1024的端口P1
- 客戶端通過端口P1向服務(wù)器控制端口(端口21)發(fā)起連接請求
- 服務(wù)器進行認證成功竿屹,請求建立
- 客戶端對本地端口P2進行監(jiān)聽并向服務(wù)器發(fā)送“Port P1+1”告訴服務(wù)器,客戶端的數(shù)據(jù)監(jiān)聽端口灸姊。
- 服務(wù)器收到端口后拱燃,從自己的數(shù)據(jù)端口(端口20)發(fā)起連接,連接到客戶端指定的數(shù)據(jù)端口P1+1.
被動方式(Passive)
由于主動方式中力惯,服務(wù)端需要主動連客戶端碗誉,對于客戶端的防火墻來說召嘶,屬于外部連接內(nèi)部,會出現(xiàn)被阻塞的情況哮缺。被動方式解決了這個問題弄跌。被動連接的核心是控制連接請求和數(shù)據(jù)連接請求都是由客戶端發(fā)起。被動方式的步驟如下:
- 客戶端任意打開大約1024的兩個本地端口(P1和P1+1)
- P1端口發(fā)送請求連接服務(wù)器的21端口(控制連接端口)同時提交PASV命令尝苇。
- 服務(wù)器收到請求后铛只,會開啟任意一個大約1024的端口P2,然后返回如下格式內(nèi)容:
227 entering passive mode(h1,h2,h3,h4,p1,p2) - 客戶端收到服務(wù)端返回的內(nèi)容后糠溜,計算出服務(wù)端開放的數(shù)據(jù)連接端口
- 客戶端通過P1+1端口向服務(wù)端的發(fā)送連接請求淳玩。進行數(shù)據(jù)傳輸。
關(guān)于服務(wù)端返回的報文格式(h1,h2,h3,h4,p1,p2)具體含義如下:
- h1,h2,h3,h4代表服務(wù)器的ip地址非竿;
- p1,p2代表服務(wù)器監(jiān)聽的數(shù)據(jù)連接端口地址蜕着。計算方法為P1*256+P2
參考資料:
《計算機網(wǎng)絡(luò)自定向下方法》
《TCP/IP協(xié)議詳解》