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