文件傳送協(xié)議FTP

FTP協(xié)議是在互聯(lián)網(wǎng)早期階段使用的文件傳輸協(xié)議,現(xiàn)在使用逐漸減少,所以需要簡單了解一下。

1 FTP(File Transfer Protocol)協(xié)議

??文件傳送協(xié)議FTP只提供文件傳送的一些基本服務(wù),它使用TCP可靠的傳輸服務(wù)。FTP主要功能是減少或消除在不同操作系統(tǒng)(硬、軟件體系都可以不同)之間的文件傳輸能力。

??FTP是基于客戶服務(wù)器方式。用戶通過一個客戶機程序連接至在遠程計算機上運行的服務(wù)器程序。

依照FTP協(xié)議提供服務(wù),進行文件傳送的計算機就是FTP服務(wù)器。
連接FTP服務(wù)器,遵循FTP協(xié)議與服務(wù)器傳送文件的計算機就是FTP客戶端。

??FTP服務(wù)器進程由兩大部分組成:一個主進程,負責接收新的請求;另外有若干個從屬進程,負責處理單個請求。

??主進程的工作步驟如下:

(1) 打開熟知端口(端口號為21),使客戶進程能夠連接上。常用的熟知端口號(系統(tǒng)端口號)在傳輸層協(xié)議概述介紹過。
(2) 等待客戶進程發(fā)出連接請求。
(3) 啟動從屬進程處理客戶進程發(fā)來的請求。從屬進程的請求處理完畢后即終止,但從屬進程在運行期間根據(jù)需要還可能創(chuàng)建其他一些子進程。
(4) 回到等待狀態(tài),繼續(xù)接受其他客戶進程發(fā)來的請求。主進程與從屬進程的處理是并行進行的。

??下圖表示了FTP的工作情況,圖中的圓柱表示系統(tǒng)中運行的進程。


??在進行文件傳輸時,F(xiàn)TP的客戶和服務(wù)器之間要建立兩個并行的TCP連接:
??(1) 控制連接:以客戶服務(wù)器方式建立連接。服務(wù)器以被動方式打開熟知的端口號21,等待客戶的連接。客戶則以主動方式打開TCP端口21,來建立連接??刂七B接在整個會話期間始終保持打開狀態(tài)等待客戶與服務(wù)器之間的通信。該連接用于將命令從客戶傳給服務(wù)器并傳回服務(wù)器的應(yīng)答。如用戶標識、口令、改變遠程目錄的命令等。

??(2) 數(shù)據(jù)連接用于傳輸文件。服務(wù)器端控制進程在接收到FTP客戶發(fā)來的文件傳輸請求后,就創(chuàng)建數(shù)據(jù)傳送進程數(shù)據(jù)連接,用于連接客戶端和服務(wù)器端的數(shù)據(jù)傳送進程。在傳輸完畢后關(guān)閉數(shù)據(jù)傳送連接,并結(jié)束運行。由于FTP使用了一個分離的控制連接,因此FTP的控制信息是帶外(out of band)傳送的。

??FTP協(xié)議使用兩個獨立的連接的好處是使協(xié)議更加簡單和更容易實現(xiàn),同時在傳輸文件時可以利用控制連接對文件的傳輸進行控制。如客戶可以在文件傳輸?shù)倪^程中發(fā)送"請求終止傳輸"。

2 FTP的兩種工作方式

??FTP支持兩種工作模式:PASV(被動模式)和PORT(主動模式)

??(1) PORT模式
??Port模式FTP 客戶端首先和FTP服務(wù)器的TCP 21端口建立連接,通過這個通道發(fā)送命令,客戶端需要接收數(shù)據(jù)的時候在這個通道上發(fā)送PORT命令。 PORT命令包含了客戶端用什么端口接收數(shù)據(jù)。在傳送數(shù)據(jù)的時候,服務(wù)器端通過自己的TCP 20端口連接至客戶端的指定端口發(fā)送數(shù)據(jù)。 FTP server必須和客戶端建立一個新的連接用來傳送數(shù)據(jù)。

??(2) PASV模式
??Passive模式在建立控制通道的時候和PORT模式類似,但建立連接后發(fā)送的不是Port命令,而是Pasv命令。FTP服務(wù)器收到Pasv命令后,隨機打開一個臨時端口(也叫自由端口,端口號大于1023小于65535)并且通知客戶端在這個端口上傳送數(shù)據(jù)的請求,客戶端連接FTP服務(wù)器此端口,然后FTP服務(wù)器將通過這個端口進行數(shù)據(jù)的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。

更多的信息可以參考這篇博客:FTP文件傳輸協(xié)議兩種模式-主動模式和被動模式。

??由于FTP使用了兩個不同的端口號,所以數(shù)據(jù)連接和控制連接就不會混亂。

3 FTP的命令和回答

??FTP命令由4個大寫字母ASCII字符組成,有些還具有可選參數(shù),常見的命令如下(斜體為可選參數(shù)):

??(1) USER username:用于向服務(wù)器傳送的用戶標識。

??(2) PASS password:用于向服務(wù)器發(fā)送用戶口令。

??(3) LIST:用于請求服務(wù)器回送當前遠程目錄中的所有文件列表。該文件列表是經(jīng)一個數(shù)據(jù)連接傳送的,而不是在控制TCP連接上。

??(4) RETR filename:用于從遠程主機當前目錄檢索(即get)文件。該命令引起遠程主機發(fā)起一個數(shù)據(jù)連接,并經(jīng)該數(shù)據(jù)連接發(fā)送所請求的文件。

??(5) SORT filename:用于在遠程主機的當前目錄上存放(即put)文件。

??(6) PORT n1,n2,n3,n4,n5,n6:客戶端的IP地址(n1.n2.n3.n4)和端口(n5×256 + n6)。

例如,PORT 140,252,13,34,4,150,其前4個數(shù)就是客戶的點分十進制IP地址,即140.252.13.34。后兩位指明16bit端口號,(4,150)所表示二進制為(00000100 10010110)——> 4 × 256 + 150 = 1174

??貫穿控制連接,在用戶發(fā)出命令和FTP發(fā)送的命令之間通常是一一對應(yīng)關(guān)系。每個命令都對應(yīng)一個從服務(wù)器向客戶的回答。回答是一個3位數(shù)字,后跟一個可選信息。常見的回答如下:

??(1) 331:Username OK,Password required(用戶名OK,需要口令)。

??(2) 125:Data connection already open;transfer starting(數(shù)據(jù)連接已打開,開始傳送)。

??(3) 425:Can't open data connection(無法打開數(shù)據(jù)連接)。

??(4) 452:Error writing file(寫文件差錯)。

4 匿名FTP

??使用FTP時必須首先登錄,在遠程主機上獲得相應(yīng)的權(quán)限以后,方可上傳或下載文件。也就是說,要想同哪一臺計算機傳送文件,就必須具有哪一臺計算機的適當授權(quán)。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個用戶在每一臺主機上都擁有帳號。匿名FTP就是為解決這個問題而產(chǎn)生的。

??互聯(lián)網(wǎng)中有很大一部分FTP服務(wù)器被稱為“匿名”(Anonymous)FTP服務(wù)器。這類服務(wù)器的目的是向公眾提供文件拷貝服務(wù)!
器,不要求用戶事先在該服務(wù)器進行登錄注冊,也不用取得FTP服務(wù)器的授權(quán)。

??Anonymous(匿名文件傳輸)能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“anonymous”登錄FTP服務(wù),就可以訪問遠程主機上公開的文件。

5 TFTP

??簡單文件傳送協(xié)議TFTP(Trivial File Transfer Protocol),它是一個很小且很容易實現(xiàn)的文件傳送協(xié)議。TFTP也使用客戶服務(wù)器方式,但是它使用UDP數(shù)據(jù)報。

??TFTP的優(yōu)點:
??(1) 適用于UDP環(huán)境。例如當需要將程序或文件同時向許多機器下載時就往往使用TFTP。
??(2) TFTP代碼所占的內(nèi)存比較小。

6 小結(jié)

??本文完

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容