葛偉倫
摘要:分析了FTP協(xié)議的兩種工作方式及安全性,探討了每種方式適合的網(wǎng)絡(luò)部署。在此基礎(chǔ)上通過繪制的流程圖深入剖析了兩種方式下FTP客戶端和服務(wù)器端通信的完整消息交互流程,通過對比分析進(jìn)一步探究了FTP協(xié)議工作的本質(zhì)。
關(guān)鍵詞:主動(dòng)方式;被動(dòng)方式;端口;消息交互
中圖分類號: TP393 文獻(xiàn)標(biāo)志碼:A 文章編號:1009-3044(2016)08-0030-02
FTP (File Transfer Protocol)中文譯為文件傳輸協(xié)議,是TCP/IP協(xié)議棧中應(yīng)用層最重要協(xié)議之一[1] [2],基于C/S(Client/Server)工作模式,實(shí)現(xiàn)兩臺計(jì)算機(jī)之間文件的高速可靠傳輸,兩臺計(jì)算機(jī)分別稱為FTP服務(wù)器和FTP客戶機(jī),F(xiàn)TP服務(wù)器集中提供和管理資源,客戶機(jī)可通過FTP協(xié)議下載服務(wù)器的資源。
1 FTP主動(dòng)和被動(dòng)方式[4]
FTP使用傳輸層面向連接的可靠TCP(Transmission Control Protocol)協(xié)議建立FTP客戶端和服務(wù)器通信的控制連接通道和數(shù)據(jù)傳輸通道,F(xiàn)TP服務(wù)器端使用21和20兩個(gè)端口,21端口標(biāo)識服務(wù)器端控制連接進(jìn)程,控制通道傳輸客戶端向服務(wù)器端發(fā)送的操作命令和服務(wù)器返回的應(yīng)答信息;20端口表示服務(wù)器端數(shù)據(jù)傳輸進(jìn)程,數(shù)據(jù)通道傳輸服務(wù)器和客戶端的文件和文件列表數(shù)據(jù)。但FTP服務(wù)對數(shù)據(jù)傳輸是否使用20端口根據(jù)服務(wù)器和客戶機(jī)網(wǎng)絡(luò)部署和安全規(guī)劃具有可選性,所有FTP協(xié)議有兩種工作方式:主動(dòng)和被動(dòng)方式[3]。
1.1 主動(dòng)方式含義
主動(dòng)方式又稱為Standard方式,是指在控制通道建立后,客戶端向服務(wù)器端發(fā)送PORT(IP Addr,N1,N2)命令, IP Addr表示客戶機(jī)IP地址, N1和N2參數(shù)告訴服務(wù)器傳輸數(shù)據(jù)客戶端使用的臨時(shí)端口號為表達(dá)式N1×256+N2的值,設(shè)為Pc,服務(wù)器端在傳輸數(shù)據(jù)時(shí)使用20端口主動(dòng)發(fā)起到客戶端Pc端口的數(shù)據(jù)連接,完成數(shù)據(jù)傳輸,服務(wù)器在數(shù)據(jù)通道建立時(shí)處于主動(dòng)方式。
1.2 被動(dòng)方式含義
被動(dòng)方式又稱為PASV方式,是指在控制通道建立后,客戶端向服務(wù)器端發(fā)送PASV命令, 宣告下面數(shù)據(jù)傳輸進(jìn)入被動(dòng)方式,服務(wù)器收到PASV命令,返回的響應(yīng)信息為entering passive mode(IP Addr,N1,N2),IP Addr表示服務(wù)器IP地址,N1和N2參數(shù)告訴客戶端傳輸數(shù)據(jù)服務(wù)器端使用的臨時(shí)端口號為表達(dá)式N1×256+N2的值。設(shè)為Ps。客戶端在傳輸數(shù)據(jù)時(shí)用操作系統(tǒng)臨時(shí)分配的大于1024端口號主動(dòng)發(fā)起到服務(wù)器端Ps端口的數(shù)據(jù)連接,完成數(shù)據(jù)傳輸,服務(wù)器在數(shù)據(jù)通道建立時(shí)處于被動(dòng)方式。
2 FTP協(xié)議消息交互流程[5][6]
2.1 主動(dòng)方式
結(jié)合上文分析的FTP協(xié)議主動(dòng)工作方式,此方式下FTP客戶端和服務(wù)器通信時(shí)完整的消息交互流程如圖1所示,消息交互剖析如下:
(1)FTP客戶端通過操作系統(tǒng)臨時(shí)分配的端口號1098向FTP服務(wù)器21端口主動(dòng)發(fā)起SYN位置1的TCP控制連接請求報(bào)文段。
(2)服務(wù)器在資源和連接數(shù)可控范圍內(nèi)同意建立控制連接,向客戶端發(fā)送SYN位置1,ACK位置1的控制連接請求確認(rèn)報(bào)文段。
(3)客戶端收到確認(rèn)后,還要對服務(wù)器確認(rèn)報(bào)文段再次發(fā)送ACK位置1的再確認(rèn)報(bào)文段。
(4)經(jīng)過上面的“三次握手”,服務(wù)器通過220應(yīng)答消息響應(yīng)客戶端,雙發(fā)控制連接通道成功建立。
(5)客戶端首先通過user命令攜帶用戶名消息發(fā)送給服務(wù)器,服務(wù)器驗(yàn)證用戶名,再詢問客戶端密碼,客戶端通過pass命令攜帶密碼發(fā)送給服務(wù)器,這一過程明文傳輸。
(6)服務(wù)器驗(yàn)證客戶端身份成功,通過230應(yīng)答消息響應(yīng)客戶端成功登陸。
(7)客戶端通過控制通道向服務(wù)器發(fā)送port(IP Addr,N1,N2)命令,表達(dá)式N1×256+N2的值為客戶端傳輸數(shù)據(jù)的臨時(shí)端口號,本例設(shè)為4536。
(8)服務(wù)器通過發(fā)送200應(yīng)答消息響應(yīng)客戶端,雙發(fā)協(xié)商成功進(jìn)入主動(dòng)方式傳輸數(shù)據(jù)。
(9)客戶端向服務(wù)器發(fā)送取數(shù)據(jù)命令,如get和ls等命令。
(10)服務(wù)器通過數(shù)據(jù)端口20向客戶端數(shù)據(jù)端口4536的主動(dòng)發(fā)送SYN位置1的數(shù)據(jù)連接請求報(bào)文段。
(11)客戶端向服務(wù)器發(fā)送SYN位置1,ACK位置1的數(shù)據(jù)連接請求確認(rèn)報(bào)文段。
(12)服務(wù)器收到客戶端確認(rèn)后,還要向客戶端發(fā)送ACK位置1的再確認(rèn)報(bào)文段。
(13)經(jīng)過上面“三次握手”建立數(shù)據(jù)連接通道,服務(wù)器響應(yīng)客戶端取數(shù)據(jù)命令,把數(shù)據(jù)通過協(xié)商的數(shù)據(jù)通道發(fā)送到客戶端。
(14)服務(wù)器確定完成數(shù)據(jù)傳輸后,向客戶端發(fā)送FIN位置1的報(bào)文段請求釋放本次數(shù)據(jù)連接通道。
(15)客戶端向服務(wù)器發(fā)送ACK位置1的確認(rèn)報(bào)文段應(yīng)答服務(wù)器的釋放連接請求,服務(wù)器到客戶端方向的數(shù)據(jù)傳輸已經(jīng)結(jié)束,數(shù)據(jù)連接通道處于半關(guān)閉狀態(tài)。
(16) 客戶端向服務(wù)器發(fā)送FIN位為置1的數(shù)據(jù)連接釋放報(bào)文段,請求釋放到服務(wù)器方向的數(shù)據(jù)連接通道。
(17)服務(wù)器向客戶端發(fā)送ACK位置1的確認(rèn)報(bào)文段應(yīng)答客戶端的數(shù)據(jù)連接釋放請求,客戶端到服務(wù)器方向的數(shù)據(jù)傳輸也結(jié)束,這樣本次數(shù)據(jù)連接通道經(jīng)過“四次握手”完全釋放。
(18)如果客戶端通過控制連接再次發(fā)出取數(shù)據(jù)命令,則客戶端和服務(wù)器再次重復(fù)上文(10)-(17)步驟。
(19)客戶端通過控制連接通道向服務(wù)器發(fā)送quit命令。
(20)服務(wù)器通過221應(yīng)答響應(yīng)Goodbye消息。
(21)服務(wù)器向客戶端發(fā)送含有FIN位置1的控制連接釋放報(bào)文段,請求釋放到客戶端方向的控制連接通道。
(22)客戶端向服務(wù)器發(fā)送ACK位置1的報(bào)文段來應(yīng)答服務(wù)器的控制連接釋放請求,服務(wù)器到客戶端方向的控制連接關(guān)閉,控制連接通道處于半關(guān)閉狀態(tài)。
(23)客戶端向服務(wù)器發(fā)送FIN位置1的控制連接釋放報(bào)文段,請求釋放到服務(wù)器方向的控制連接通道。
(24)服務(wù)器向客戶端發(fā)送ACK位置1的報(bào)文段來應(yīng)答客戶端的控制連接釋放請求,這樣本次FTP控制連接通道經(jīng)過“四次握手”完全釋放。
結(jié)合上文分析的FTP協(xié)議被動(dòng)工作方式,此方式下FTP客戶端和服務(wù)器通信時(shí)完整的消息交互流程如圖2所示,消息交互剖析如下:
(1)-(6)同主動(dòng)方式的消息交互流程相同。
(7)客戶端通過控制通道向服務(wù)器發(fā)送PASV命令,請求進(jìn)入被動(dòng)方式。
(8)服務(wù)器通過發(fā)送200應(yīng)答消息響應(yīng)客戶端,雙發(fā)協(xié)商成功進(jìn)入被動(dòng)方式傳輸數(shù)據(jù),同時(shí)攜帶消息參數(shù)(IP Addr,N1,N2),表達(dá)式N1×256+N2的值為服務(wù)器傳輸數(shù)據(jù)的臨時(shí)端口號,本例端口號設(shè)為5879。
(9)客戶端向服務(wù)器發(fā)送取數(shù)據(jù)命令,如get和ls等命令。
(10)客戶端通過系統(tǒng)臨時(shí)分配的端口號5413向服務(wù)器數(shù)據(jù)端口5879主動(dòng)發(fā)送SYN位置1的數(shù)據(jù)連接請求報(bào)文段。
(11)服務(wù)器向客戶端發(fā)送SYN位置1,ACK位置1的數(shù)據(jù)連接請求確認(rèn)報(bào)文段。
(12)客戶端收到服務(wù)器確認(rèn)后,還要向服務(wù)器發(fā)送ACK位置1的再確認(rèn)報(bào)文段。
(13)經(jīng)過“三次握手”建立數(shù)據(jù)連接通道,服務(wù)器響應(yīng)客戶端取數(shù)據(jù)命令,把數(shù)據(jù)通過協(xié)商好的數(shù)據(jù)通道發(fā)送到客戶端。
(14)-(24)同主動(dòng)方式下的消息交互流程相同。
3 結(jié)束語
本文分析了FTP協(xié)議工作的主動(dòng)和被動(dòng)方式,及每種方式的安全特性和適合的網(wǎng)絡(luò)部署環(huán)境。在此基礎(chǔ)上基于流程圖深入剖析了兩種工作方式下FTP客戶端和服務(wù)器通信的消息交互完整流程,最后通過比較分析強(qiáng)調(diào)了兩種工作方式的特點(diǎn)和區(qū)別。
參考文獻(xiàn):
[1] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2013.
[2] 謝希仁.TCP/IP 協(xié)議族[M].北京:清華大學(xué)出版社,2006:215-221.
[3] DOUGLAS E COMER,DAVID L STEVENS,張娟,王海譯.用 TCP/IP進(jìn)行網(wǎng)際互連(第2卷):設(shè)計(jì)、實(shí)現(xiàn)和內(nèi)部構(gòu)造[M].北京:電子工業(yè)出版社,2001:188-192.
[4] 杭州華三通信技術(shù)有限公司.路由交換技術(shù)(第1卷)[Z].北京:清華大學(xué)出版社,2011.
[5] 孫韓林,金躍輝等.FTP協(xié)議的測試及分析[M].計(jì)算機(jī)工程,2008,34(23):133-135.
[6] 蔡艷麗.基于FTP協(xié)議網(wǎng)絡(luò)流量模擬的設(shè)計(jì)與實(shí)現(xiàn)[J].海軍航空工程學(xué)院學(xué)報(bào),2014,29(3):221-223.