複製鏈接
請複製以下鏈接發送給好友

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;如果採用被動模式,則具體最終使用哪個端口要服務器端和客户端協商決定。
中文名
FTP協議
外文名
File Transfer Protocol
類    型
客户/服務器系統
釋    義
文件傳輸協議

FTP協議服務器

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

FTP協議工作方式

FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive(也就是PASV,被動方式)。 Standard模式 FTP的客户端發送 PORT 命令到FTP服務器。Passive模式FTP的客户端發送 PASV命令到 FTP Server。
下面介紹一下這兩種方式的工作原理:

FTP協議Port

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

FTP協議Passive

在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP服務器收到Pasv命令後,隨機打開一個高端端口(端口號大於1024)並且通知客户端在這個端口上傳送數據的請求,客户端連接FTP服務器此端口,通過三次握手建立通道,然後FTP服務器將通過這個端口進行數據的傳送。
很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP服務器不支持PASV模式,因為客户端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客户端不能用PORT模式登陸FTP服務器,因為從服務器的TCP 20無法和內部網絡的客户端建立一個新的連接,造成無法工作。

FTP協議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服務器均經本地操作成功FXP,這還與本地與FTP服務器的網絡狀況有關。故有時會出現同樣兩個FTP,別人可以FXP,而你不可以的情況。

FTP協議用户授權

FTP協議授權

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

FTP協議地址格式

FTP地址如下:
ftp://用户名:密碼@FTP服務器IP或域名:FTP命令端口/路徑/文件名
上面的參數除FTP服務器IP或域名為必要項外,其他都不是必須的。如以下地址都是有效FTP地址:
ftp://foolish.6600.org
ftp://list:list@foolish.6600.org
ftp://list:list@foolish.6600.org:2003
ftp://list:list@foolish.6600.org:2003/soft/list.txt

FTP協議匿名

互聯網中有很大一部分 FTP 服務器被稱為“匿名”(Anonymous)FTP 服務器。這類服務器的目的是向公眾提供文件拷貝服務,不要求用户事先在該服務器進行登記註冊,也不用取得FTP服務器的授權。
Anonymous(匿名文件傳輸)能夠使用户與遠程主機建立連接並以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的註冊用户。用户使用特殊的用户名“anonymous”登陸FTP服務,就可訪問遠程主機上公開的文件。許多系統要求用户將Email地址作為口令,以便更好地對訪問進行跟綜。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲着無以計數的文件,這些文件包含了各種各樣的信息,數據和軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登錄獲取所需的信息資料。雖然使用WWW環境已取代匿名FTP成為最主要的信息查詢方式,但是匿名FTP仍是 Internet上傳輸分發軟件的一種基本方法。如red hat 、autodesk等公司的匿名站點。

FTP協議傳輸模式

FTP協議的任務是從一台計算機將文件傳送到另一台計算機,它與這兩台計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統無關。假設兩台計算機通過ftp協議對話,並且能訪問Internet,
你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。
FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。

FTP協議ASCII傳輸模式

假定用户正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的是不同的操作系統,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。但是常常有這樣的情況,用户正在傳輸的文件包含的不是文本文件,它們可能是程序,數據庫,字處理文件或者壓縮文件(儘管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符)。
在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。

FTP協議二進制傳輸模式

在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。
如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式一般假設每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩台機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。