FTP(File Transfer Protocol 傳輸協議)理論知識歸納篇

FTP

FTP(File Transfer Protocol,文件傳輸協議) 是 TCP/IP 協議組中的協議之一,屬於應用層協議。FTP協議包括兩個組成部分,其一爲FTP服務器,其二爲FTP客戶端。其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP服務器上的資源。在開發網站的時候,通常利用FTP協議把網頁或程序傳到Web服務器上。此外,由於FTP傳輸效率非常高,在網絡上傳輸大的文件時,一般也採用該協議。

默認情況下FTP協議使用TCP端口中的 20和21這兩個端口,其中20用於傳輸數據,21用於傳輸控制信息。但是,是否使用20作爲傳輸數據的端口與FTP使用的傳輸模式有關,如果採用主動模式,那麼數據傳輸端口就是20;如果採用被動模式,則具體最終使用哪個端口要服務器端和客戶端協商決定。

服務器

同大多數Internet服務一樣,FTP也是一個客戶/服務器系統。用戶通過一個客戶機程序連接至在遠程計算機上運行的服務器程序。依照 FTP 協議提供服務,進行文件傳送的計算機就是 FTP服務器,而連接FTP服務器,遵循FTP協議與服務器傳送文件的電腦就是FTP客戶端。用戶要連上FTP 服務器,就要用到 FTP 的客戶端軟件,通常 Windows自帶“ftp”命令,這是一個命令行的 FTP客戶程序,另外常用的 FTP 客戶程序還有FileZilla、 Flashfxp等。

工作方式

FTP支持兩種模式,一種方式叫做Standard (也就是PORT方式,主動方式),一種是** Passive(也就是PASV,被動方式)**。 Standard模式 FTP的客戶端發送 PORT 命令到FTP服務器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。

下面介紹一下這兩種方式的工作原理:

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

Passive
在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP服務器收到Pasv命令後,隨機打開一個高端端口(端口號大於1024)並且通知客戶端在這個端口上傳送數據的請求(FTP服務器,如FileZilla Server支持自定義端口),客戶端連接FTP服務器此端口,通過三次握手建立通道,然後FTP服務器將通過這個端口進行數據的傳送。

很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP服務器不支持PASV模式,因爲客戶端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能用PORT模式登陸FTP服務器,因爲從服務器的TCP 20無法和內部網絡的客戶端建立一個新的連接,造成無法工作。後續FTP應用篇會講到位於防火牆或路由器的FTP服務器怎麼通過PASV模式提供服務。

FXP

FXP說簡單點就是一個FTP客戶端控制兩個FTP服務器,在兩個FTP服務器之間傳送文件。FXP的全稱爲File Exchange Protocol――文件交換協議,可以認爲FXP本身其實就是FTP的一個子集,因爲FXP方式實際上就是利用了FTP服務器的Proxy命令,不過它的前提條件是FTP服務器要支持PASV,且支持FXP方式。

FXP傳送時,文件並不下載至本地,本地只是發送控制命令,故FXP傳送時的速度只與兩個FTP服務器之間的網絡速度有關,而與本地速度無關。因FXP方式本地只發送命令,故在開始傳送後,只要本地不發送停止的命令,就算是本地關機了,FXP仍在傳送,直至一個文件傳送完成或文件傳送出錯後,FTP服務器等待本地發送命令時,纔會因不能接收到命令而終止FXP傳送。

因爲上述的原因,FXP傳送出錯時,本地的用戶進程還留在FTP服務器中,並沒有退出,如此時再次連接FTP服務器,可能會因用戶線程超過允許,FTP服務器提示客戶已登陸並拒絕客戶端的連接,直至服務器中的傀儡進程因超時或其他原因被FTP服務器殺死後,才能再次連接FTP服務器。

成功FXP有兩個必要條件:①兩個FTP服務器均支持FXP;②兩個FTP服務器均支持PASV方式。

用戶授權

授權

要連上 FTP 服務器(即“登陸”),必須要有該 FTP 服務器授權的帳號,也就是說你只有在有了一個用戶標識和一個口令後才能登陸FTP服務器,享受FTP服務器提供的服務。

地址格式

FTP地址如下:
ftp://用戶名:密碼@FTP服務器IP或域名:FTP命令端口/路徑/文件名

上面的參數除FTP服務器IP或域名爲必要項外,其他都不是必須的。如以下地址都是有效FTP地址:

ftp://foolish.6600.org
ftp://list:[email protected]
ftp://list:[email protected]:2003
ftp://list:[email protected]:2003/soft/list.txt

匿名

互聯網中有很大一部分 FTP 服務器被稱爲“匿名”(Anonymous)FTP 服務器。這類服務器的目的是向公衆提供文件拷貝服務,不要求用戶事先在該服務器進行登記註冊,也不用取得FTP服務器的授權。

傳輸模式

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