文件傳送協議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字節,這正好可以作為文件結束的標志。
?????
?
?