FTP協定

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、 CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-貓眼等。

​FTP使用客戶伺服器方式

一個FTP伺服器進程可同時為多個客戶進程提供服務。FTP的伺服器進程由兩大部分組成:一個主進程,負責接收新的請求;另外有多個從屬進程,負責處理單個請求。

主進程步驟如下:

(1)打開熟知連線埠(連線埠號為21),使客戶進程能夠連線上。

(2)等待客戶進程發出連線請求。

(3)啟動從屬進程來處理客戶進程發來的請求,從屬進程對客戶進程的請求處理完畢後即終止。

(4)回到等待狀態,繼續接受其他客戶進程發來的請求。主進程與從屬進程的處理是並發地進行的。

工作方式

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伺服器此連線埠,然後FTP伺服器將通過這個連線埠進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連線。

很多防火牆在設定的時候都是不允許接受外部發起的連線的,所以許多位於防火牆後或區域網路的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端連線埠;而許多區域網路的客戶端不能用PORT模式登入FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連線,造成無法工作。

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伺服器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伺服器的授權。

Anonymous(匿名檔案傳輸)能夠使用戶與遠程主機建立連線並以匿名身份從遠程主機上拷貝檔案,而不必是該遠程主機的註冊用戶。用戶使用特殊的用戶名“anonymous”登入FTP服務,就可訪問遠程主機上公開的檔案。許多系統要求用戶將Email地址作為口令,以便更好地對訪問進行跟綜。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲著無以計數的檔案,這些檔案包含了各種各樣的信息,數據和軟體。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登錄獲取所需的信息資料。雖然目前使用WWW環境已取代匿名FTP成為最主要的信息查詢方式,但是匿名FTP仍是 Internet上傳輸分發軟體的一種基本方法。如red hat 、autodesk等公司的匿名站點。

傳輸模式

FTP協定的任務是從一台計算機將檔案傳送到另一台計算機,它與這兩台計算機所處的位置、聯接的方式、甚至是是否使用相同的作業系統無關。假設兩台計算機通過ftp協定對話,並且能訪問Internet,

你可以用ftp命令來傳輸檔案。每種作業系統使用上有某一些細微差別,但是每種協定基本的命令結構是相同的。

FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。

ASCII傳輸模式

假定用戶正在拷貝的檔案包含的簡單ASCII碼文本,如果在遠程機器上運行的是不同的作業系統,當檔案傳輸時ftp通常會自動地調整檔案的內容以便於把檔案解釋成另外那台計算機存儲文本檔案的格式。但是常常有這樣的情況,用戶正在傳輸的檔案包含的不是文本檔案,它們可能是程式,資料庫,字處理檔案或者壓縮檔案(儘管字處理檔案包含的大部分是文本,其中也包含有指示頁尺寸,字型檔等信息的非列印字元)。

在拷貝任何非文本檔案之前,用binary 命令告訴ftp逐字拷貝,不要對這些檔案進行處理,這也是下面要講的二進制傳輸。

二進制傳輸模式

在二進制傳輸中,保存檔案的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的檔案是沒意義的。例如,macintosh以二進制方式傳送執行檔到Windows系統,在對方系統上,此檔案不能執行。

如果你在ASCII方式下傳輸二進制檔案,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使檔案變得不能用。(在大多數計算機上,ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果你傳輸二進制檔案,所有的位都是重要的。)如果你知道這兩台機器是同樣的,則二進制方式對文本檔案和數據檔案都是有效的。

相關搜尋

熱門詞條

聯絡我們