文件傳輸協(xié)議
1.什么是文件傳輸協(xié)議
文件傳輸協(xié)議(FTP)是為進(jìn)行文件共享而設(shè)計的因特網(wǎng)標(biāo)準(zhǔn)協(xié)議。也是Internet最早的應(yīng)用層協(xié)議之一。這個協(xié)議用于主機間傳送文件,主機類型可以相同,也可以不同,還可以傳送不同類型的文件,如二進(jìn)制文件、文本文件等[1]。
2.文件傳輸協(xié)議的特點[2]
FTP具有以下特點:
(1)文件傳送協(xié)議只提供文件傳送的一些基本的服務(wù),它是面向連接的服務(wù),使用TCP作為傳輸協(xié)議,以提供可靠的運輸服務(wù)。
(2)FTP的主要作用是在不同計算機系統(tǒng)間傳送文件,它與這兩臺計算機所處的位置、連接的方式以及使用的操作系統(tǒng)無關(guān)。
(3)FTP使用客戶/服務(wù)器方式。
3.文件傳輸協(xié)議的主要工作原理[3]
文件傳送協(xié)議FTP只提供文件傳送的一些基本的服務(wù),它使用TCP可靠的運輸服務(wù)。FTP的主要功能是減少或消除在不同操作系統(tǒng)下處理文件的不兼容性。
一個FTP服務(wù)器進(jìn)程可同時為多個客戶進(jìn)程提供服務(wù)。FTP的服務(wù)器進(jìn)程由兩大部分組成:一個主進(jìn)程,負(fù)責(zé)接受新的請求;另外有若干個從屬進(jìn)程,負(fù)責(zé)處理單個請求。主進(jìn)程的工作步驟如下:
(1)打開熟知端口(端口號為21),使客戶進(jìn)程能夠連接上。
(2)等待客戶進(jìn)程發(fā)出連接請求。
(3)啟動從屬進(jìn)程來處理客戶進(jìn)程發(fā)來的請求。從屬進(jìn)程對客戶進(jìn)程的請求處理完畢后即終止,但從屬進(jìn)程在運行期間根據(jù)需要還可能創(chuàng)建其他一些子進(jìn)程。
(4)回到等待狀態(tài),繼續(xù)接受其他客戶進(jìn)程發(fā)來的請求。主進(jìn)程與從屬進(jìn)程的處理是并發(fā)地進(jìn)行。
FTP的工作情況如圖所示。在進(jìn)行文件傳輸時,F(xiàn)TP的客戶和服務(wù)器之間要建立兩個連接:“控制連接”和“數(shù)據(jù)連接”。
客戶端發(fā)起控制連接,服務(wù)器端發(fā)起數(shù)據(jù)連接。當(dāng)客戶進(jìn)程向服務(wù)器進(jìn)程發(fā)出建立連接請求時,首先要尋找連接服務(wù)器進(jìn)程的熟知端口(21),同時還要告訴服務(wù)器進(jìn)程自己的另一個端口號碼,用于建立數(shù)據(jù)傳送連接,連接建立時,控制進(jìn)程和控制連接隨之創(chuàng)建??刂七M(jìn)程在接受到FTP客戶發(fā)送過來的請求后就創(chuàng)建傳送進(jìn)程和數(shù)據(jù)連接。服務(wù)器進(jìn)程用傳送數(shù)據(jù)的熟知端口(20)與客戶進(jìn)程所提供的端口號建立數(shù)據(jù)傳送連接。由于FTP使用了兩個不同的端口號,所以數(shù)據(jù)連接與控制連接不會發(fā)生混亂。
大多數(shù)FTP服務(wù)都是匿名服務(wù)。匿名FTP服務(wù)的實質(zhì)是:提供服務(wù)的機構(gòu)在它的FTP服務(wù)器上建立一個公開賬戶(一般為anonymous),并賦予該賬戶訪問公共目錄的權(quán)限,以便提供免費服務(wù)。如果用戶要訪問這些提供匿名服務(wù)的FTP服務(wù)器,一般不需要輸入用戶名與用戶密碼。為了保證FTP服務(wù)器的安全,幾乎所有的匿名FTP服務(wù)器都只允許用戶下載文件,而不允許用戶上載文件。在Internet中,許多公司、大學(xué)的主機上含有數(shù)量眾多的各種程序與文件,這是Internet的巨大與寶貴的信息資源。通過使用FTP服務(wù),用戶就可以方便地訪問這些信息資源。
4.文件傳輸協(xié)議的認(rèn)識[4]
如今FTP在網(wǎng)絡(luò)上的應(yīng)用是十分廣泛的。FTP是一個文件傳輸協(xié)議,起初,F(xiàn)TP并不是應(yīng)用于IP網(wǎng)絡(luò)上的協(xié)議,而是ARPANET網(wǎng)絡(luò)中計算機間的文件傳輸協(xié)議。
ARPANET是美國國防部組建的老網(wǎng)絡(luò),于1960-1980年使用。在那時,F(xiàn)TP的主要功能是在主機間高速可靠地傳輸文件。目前FTP仍然保持其可靠性,即使在今天,它還允許文件遠(yuǎn)程存取。這使得用戶可以在某個系統(tǒng)上工作,而將文件存貯在別的系統(tǒng)。
FTP既是一個文件傳輸協(xié)議,又是一個程序。FTP程序自身已經(jīng)成為任何一個TCP/IP協(xié)議實施的重要部分,它是TCP/IP協(xié)議的一種具體應(yīng)用。FTP工作在OSI模型的第七層,TCP模型的第四層上,即應(yīng)用層,F(xiàn)TP使用的傳輸方式為TCP傳輸而不是UDP傳輸。因為UDP是數(shù)據(jù)報傳輸協(xié)議,是面向非連接、不可靠的傳輸方式,雖然它簡單易于使用,但容易丟失數(shù)據(jù)包;而傳輸控制協(xié)議TCP,在FTP客戶和服務(wù)器建立連接之前首先要經(jīng)過一個被廣為熟知的“握手”過程,它使得客戶與服務(wù)器之間的連接是可靠的,是一種面向連接、可靠的傳輸方式,為數(shù)據(jù)的正確傳輸提供了保證。FTP程序使用FTP協(xié)議來提供文件在網(wǎng)絡(luò)上機器間的來回傳輸。這些協(xié)議適用范圍很廣,并不局限于Unix工作站還是WINDOWS工作站,它們可以是大型機、小型機或微型個人計算機,所運行的操作系統(tǒng)可以是VMS、Macintosh、DOS或者是WINDOWS。FTP的優(yōu)點之一就是它提供了到不同文件存儲方式和目錄結(jié)構(gòu)的一個公共接口。FTP(同許多Interact協(xié)議一樣)可以運行在許多不同種類的連接之上,它可以在串行(撥入)線、以太網(wǎng)、令牌環(huán)網(wǎng)和其它連接上工作。使用FTP程序可以連接到一個FTP服務(wù)器,在可用的目錄間游歷,并且傳輸文件。一個FTP站點可以是公用的,私有的,或者兩者兼有。使用一個私有的賬號,你可以擁有訪問整個網(wǎng)絡(luò)的目錄結(jié)構(gòu),或者只是特定的區(qū)域的權(quán)限,而這些權(quán)限包括讀寫權(quán)限、運行權(quán)限、刪除權(quán)限、建立目錄權(quán)限等;英特網(wǎng)就是一個允許任何人連接和傳輸文件的FTP服務(wù)器的中心,不管它們有沒有主機上的賬號,都可登錄到FTP服務(wù)器的中心,這叫做匿名FTP。匿名FTP經(jīng)常用于發(fā)布大量的共享軟件或其它資源于FTP服務(wù)器上,供FTP客戶在服務(wù)器上瀏覽、下載,共享這些資源。
如果我們將這樣一個成熟、應(yīng)用廣泛的網(wǎng)絡(luò)協(xié)議應(yīng)用于實際工作中,不但能發(fā)揮網(wǎng)絡(luò)數(shù)據(jù)傳輸量大、傳輸速率快、傳輸安全可靠和隱蔽性好的優(yōu)點,而且也不需要與網(wǎng)絡(luò)驅(qū)動器始終保持連接,只是在需要進(jìn)行文件傳輸時由應(yīng)用軟件自動和遠(yuǎn)程計算機建立數(shù)據(jù)連接,當(dāng)文件傳輸結(jié)束后便可以和遠(yuǎn)程機斷開連接。
5.FTP的工作模式
FTP的工作模式有兩種:一種是主動模式(PORT),另一種是被動模式(PASV),通過這兩種方式使服務(wù)器端和客戶端建立連接。
當(dāng)FTP客戶以主動模式(PORT)連接服務(wù)器時,它動態(tài)的選擇一個端口號連接服務(wù)器的21端口,注意客戶端的這個端口號一定是1024以上的,因為1024以前的端口都已經(jīng)預(yù)先被定義好,被一些典型的服務(wù)使用,當(dāng)然有的還沒使用,保留給以后會用到這些端口的資源服務(wù)。當(dāng)經(jīng)過TCP的連接后,控制信道被建立。21端口是FTP協(xié)議進(jìn)行文件傳輸需要的兩個端口之一,它作為服務(wù)器控制連接的端口,用于服務(wù)器接收客戶的指令以及對客戶的響應(yīng);而另一個端口是20端口,它是用于建立數(shù)據(jù)傳輸通道的端口,它主要有3個作用:客戶向服務(wù)器傳送文件:服務(wù)器向客戶發(fā)送文件;服務(wù)器向客戶發(fā)送文件和目錄列表。通過控制信道客戶端發(fā)送PORT指令,告訴服務(wù)器用自己的某個端口號建立一個數(shù)據(jù)通道,服務(wù)器接到這一指令后會用20端口連接客戶所發(fā)出的PORT命令中指定的端口,建立此數(shù)據(jù)通道,進(jìn)行數(shù)據(jù)傳送。在FTP客戶與服務(wù)器連接的整個過程中,控制信道一直保持連接,而數(shù)據(jù)通道則是臨時建立的。
FTP連接的另一種模式——被動模式,當(dāng)客戶端發(fā)出PASV命令,服務(wù)器在請求隊列允許的情況下,給客戶發(fā)回應(yīng),告訴客戶可以用PASV中所帶的端口號與其建立連接,是由客戶主動與服務(wù)器建立連接,而PORT模式則是由服務(wù)器端主動與客戶端建立連接。
微軟的FTP客戶端程序不支持PASV模式,只支持PORT模式,而要用PASV模式必須要安裝第三方客戶軟件,如CUTEFTP等我們在英特網(wǎng)上上傳文件所用的應(yīng)用軟件。
文件傳輸協(xié)議要求文件類型只能為ASCII或者BIN,也就是說,它可以拷貝具有內(nèi)部結(jié)構(gòu)如電子表格、格式化文檔和可執(zhí)行程序的任何文件,二進(jìn)制文件是作為“映像”(image)來被傳輸?shù)?,這種映像就是指一組沒有任何修改和任何方式解釋的數(shù)據(jù)流;傳輸結(jié)構(gòu)只允許為文件結(jié)構(gòu)(即文件和目錄);傳輸方式只能為流方式。