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