文件傳送協(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ù)器方式包斑。用戶通過一個(gè)客戶機(jī)程序連接至在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的服務(wù)器程序。

依照FTP協(xié)議提供服務(wù)涕俗,進(jìn)行文件傳送的計(jì)算機(jī)就是FTP服務(wù)器罗丰。
連接FTP服務(wù)器,遵循FTP協(xié)議與服務(wù)器傳送文件的計(jì)算機(jī)就是FTP客戶端再姑。

??FTP服務(wù)器進(jìn)程由兩大部分組成:一個(gè)主進(jìn)程萌抵,負(fù)責(zé)接收新的請求;另外有若干個(gè)從屬進(jìn)程元镀,負(fù)責(zé)處理單個(gè)請求绍填。

??主進(jìn)程的工作步驟如下:

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

??下圖表示了FTP的工作情況揪漩,圖中的圓柱表示系統(tǒng)中運(yùn)行的進(jìn)程量窘。


??在進(jìn)行文件傳輸時(shí),F(xiàn)TP的客戶和服務(wù)器之間要建立兩個(gè)并行的TCP連接:
??(1) 控制連接:以客戶服務(wù)器方式建立連接氢拥。服務(wù)器以被動(dòng)方式打開熟知的端口號21蚌铜,等待客戶的連接∧酆#客戶則以主動(dòng)方式打開TCP端口21冬殃,來建立連接∪郑控制連接在整個(gè)會(huì)話期間始終保持打開狀態(tài)等待客戶與服務(wù)器之間的通信审葬。該連接用于將命令從客戶傳給服務(wù)器并傳回服務(wù)器的應(yīng)答。如用戶標(biāo)識、口令涣觉、改變遠(yuǎn)程目錄的命令等痴荐。

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

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

2 FTP的兩種工作方式

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

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

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

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

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

3 FTP的命令和回答

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

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

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

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

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

??(5) SORT filename:用于在遠(yuǎn)程主機(jī)的當(dāng)前目錄上存放(即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個(gè)數(shù)就是客戶的點(diǎn)分十進(jìn)制IP地址纲岭,即140.252.13.34。后兩位指明16bit端口號线罕,(4,150)所表示二進(jìn)制為(00000100 10010110)——> 4 × 256 + 150 = 1174

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

??(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(寫文件差錯(cuò))。

4 匿名FTP

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

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

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

5 TFTP

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

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

6 小結(jié)

??本文完

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末需曾,一起剝皮案震驚了整個(gè)濱河市吗坚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呆万,老刑警劉巖商源,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谋减,居然都是意外死亡牡彻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門出爹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庄吼,“玉大人,你說我怎么就攤上這事以政“园” “怎么了伴找?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵盈蛮,是天一觀的道長。 經(jīng)常有香客問我技矮,道長抖誉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任衰倦,我火速辦了婚禮袒炉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘樊零。我一直安慰自己我磁,他們只是感情好孽文,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夺艰,像睡著了一般芋哭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上郁副,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天减牺,我揣著相機(jī)與錄音,去河邊找鬼存谎。 笑死拔疚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的既荚。 我是一名探鬼主播稚失,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼固以!你這毒婦竟也來了墩虹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤憨琳,失蹤者是張志新(化名)和其女友劉穎诫钓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篙螟,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菌湃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遍略。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惧所。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绪杏,靈堂內(nèi)的尸體忽然破棺而出下愈,到底是詐尸還是另有隱情,我是刑警寧澤蕾久,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布势似,位于F島的核電站,受9級特大地震影響僧著,放射性物質(zhì)發(fā)生泄漏履因。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一盹愚、第九天 我趴在偏房一處隱蔽的房頂上張望栅迄。 院中可真熱鬧,春花似錦皆怕、人聲如沸毅舆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憋活。三九已至污淋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間余掖,已是汗流浹背寸爆。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盐欺,地道東北人赁豆。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像冗美,于是被迫代替她去往敵國和親魔种。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355