1. 程式人生 > >TCP/IP協議族之應用層協議(FTP、TFTP)

TCP/IP協議族之應用層協議(FTP、TFTP)

檔案傳送協議FTP: File Transfer Protocol

    是因特網上使用得最廣泛的檔案傳送協議。提供互動式的訪問,允許客戶指明檔案的型別與格式(如指明是否使用ASCII碼),並允許檔案具有存取許可權(如訪問檔案的使用者必須經過授權,並輸入有效的口令)。FTP遮蔽了各計算機系統的細節,可在異構網路中任意計算機之間傳送檔案。

    FTP基於TCP,TFTP基於UDP,是檔案共享協議的一大類,即複製整個檔案。其特點是:若要存取一個檔案,就必須先獲得一個本地的檔案副本。若要修改檔案,只能對檔案的副本進行修改,然後再將修改後的檔案副本傳回原節點。

    檔案共享協議的另一大類是聯機訪問。聯機訪問意味著允許多個應用程式同時對一個檔案進行存取。和資料庫系統不同的是使用者不需要呼叫一個特殊的客戶程序,而是由作業系統提供對遠地共享檔案進行訪問的服務,就如同對本地檔案的訪問一樣。使使用者可以用遠地檔案人微言輕輸入和輸出執行任何應用程式,而作業系統中的檔案系統則提供對共享檔案的透明存取。透明存取優點:將原來用於處理本地檔案的應用程式用來處理遠地檔案時,不需要對該應用程式作明顯改動。屬於檔案共享協議的有網路檔案系統NFS。NFS使本地計算機共享遠地的資源,就像這些資源在本地一樣。NFS主要應用於TCP/IP網路上。現在也可OS/2、MS-Windows,NetWare等。

    主機間傳送檔案需要解決的主要問題有:

        計算機儲存資料的格式不同;

        檔案的目錄結構和檔案命名的規定不同;

        對於相同的檔案存取功能,作業系統使用的命令不同;

        訪問控制方法不同。

    FTP只提供檔案傳送的一些基本的服務,使用TCP可靠的運輸服務。

    主要功能是減少或消除在不同作業系統下處理檔案的不相容性。

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

    主程序的工作步驟:

    <1>. 開啟熟知埠(TCP21),使客戶程序能夠連線上。

    <2>. 等待客戶程序發出連線請求。

    <3>. 啟動從屬程序來處理客戶程序發來的請求。從屬程序對客戶程序的請求處理完畢後即終止,但從屬程序來執行期間根據需要還可能建立其他一些子程序。

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

    在進行檔案傳輸時,FTP的客戶和伺服器之間要建立兩個並行的TCP連線:“控制連線”和“資料連線”。控制連線在整個會話期間一直保持開啟,FTP客戶所發出的傳送請求,通過控制連線傳送給伺服器端的控制程序,但控制連線並不用來傳送檔案。實際用於傳輸檔案的是“資料傳送程序”和“資料連線”,用來連線客戶端和伺服器端的資料傳送程序。資料傳送程序實際完成檔案的傳送,在傳送完畢後關閉“資料傳送連線”並結束執行。由於FTP使用了一個分離控制連線,因此FTP的控制資訊是帶外

傳送的。

    當客戶程序向伺服器程序發出建立連線請求的時候,要尋找連線伺服器程序的熟知埠(21),同時還要告訴伺服器程序自己的另一個埠號碼,用於建立資料傳送連線。接著,伺服器程序用自己傳送資料的熟知埠(20)與客戶程序所提供的埠號碼來建立資料傳送連線。由於FTP使用了兩個不同的埠號,所以資料連線與控制連線不會發生混亂。

    NFS允許應用程式開啟一個遠地檔案,並能在該檔案的某一個特定的位置上開始讀寫資料。這樣,NFS可使使用者只複製一個大檔案中的一個很小的片段,而不需要複製整個大檔案。在網路上傳送的只是少量的修改資料。

簡單檔案傳送協議TFTP: Trivial File Transfer Protocol

    客戶伺服器方式,使用UDP資料報,需要有自己差錯改正措施。TFTP只支援檔案傳輸而不支援互動。TFTP沒有一個龐大的命令集,沒有列目錄的功能,也不能對使用者進行身份識別。

    主要優點:<1>.TFTP可用於UDP環境。當需要將程式或檔案同時向許多機器下載時就往往需要使用TFTP。<2>.TFTP程式碼所佔記憶體較小。

    主要特點:

    <1>.每次傳送的資料報文有512位元組的資料,但最後一次可不足512位元組。

    <2>.資料報文按序編號,從1開始。

    <3>.支援ASCII碼或二進位制傳送。

    <4>.可對檔案進行讀或寫。

    <5>.使用很簡單的首部。

    TFTP工作很像停止等待協議,每傳送完一個檔案塊後就等待對方的確認,確認時應指明所確認的塊編號。傳送資料後在規定時間內收不到確認就要重發資料PDU。傳送確認PDU的一方若在規定時間內收不到下一個檔案塊,也要重發確認PDU。這樣就可保證檔案的傳送不致因某一個數據報的丟失而告終。

    在一開始工作時,TFTP客戶程序傳送一個讀請求報文或寫請求報文給TFTP伺服器程序,其熟知埠號為69。TFTP伺服器程序要選擇一個新的埠和TFTP客戶程序進行通訊。若檔案長度恰好為512位元組的整數倍,則在檔案傳送完畢後,還必須在最後傳送一個只含首部而無資料的資料報文。若檔案長度不是512位元組的整數倍,則最後傳送資料報文中的資料欄位一定不滿512位元組,這正好可以作為檔案結束的標誌。