FTP和TFTP


文件傳輸協議

  • FTP概述:
    • 文件傳輸協議FTP(File Transfer Protocol)[RFC 959]是互聯網上使用最廣泛的文件傳輸協議,
      FTP提供交互式的訪問,允許用戶知指明文件類型與格式,並允許文件是否具有某種權限等。
    • 文件共享協議FTP一大類是聯機訪問(online access)。聯機訪問意味着允許多個程序對同一個文件進行存取,
      屬於文件共享協議的有網絡文件系統NFS(Network File System),NFS可以使本地計算機遠程共享遠地的資源,就想這些資源在本地一樣。
  • FTP的基本原理
    • 在兩台主機之間傳遞文件是一種非常大的挑戰,因為不同的計算機廠商研制出的文件系統高達數百種,且差別很大,經常遇到的問題有:
      • 計算機存儲數據的格式不同。
      • 文件的目錄結構和文件命名不同。
      • 對於相同的文件存儲功能,操作系統使用的命令不同。
      • 訪問控制方法不同。
      • FTP只提供文件傳送的基本的一些服務,它使用TCP可靠的運輸服務,FTP主要的功能就是減少或者消除在不同操作系統下處理文件的不兼容性。
      • FTP使用客戶服務期方式。一個FTP服務器進程可以同時為多個FTP客戶進程提供服務。FTP的服務進程主要有兩大類:
        • 一個主進程:負責接受新的請求。
        • 若干個從屬進程,負責處理單個請求。
      • 主進程的工作步驟:
        1. 打開熟知端口號(21),使得客戶端進程能夠連接得上。
        2. 等待客戶進程發出連接請求。
        3. 啟動從屬進程處理客戶進程發來的請求,從屬進程對客戶進程的請求處理完畢后就終止了,
          但從屬進程在運行期間根據需要還可以創建其他一些子進程。
        4. 回到等待狀態,繼續接受其他客戶端進程發來的請求。主進程與從屬進程是並發進行的
      • image
        • 如上圖,圖中的橢圓形表示在系統中運行的進程,圖中的服務器端有兩個從屬進程:
          控制進程和數據傳送進程(圖中服務器主進程沒有畫上),客戶端除了控制進程和數據傳送進程之外,
          還有一個用戶界面進程用來和用戶接口。
        • 在進行文件傳輸時候,FTP的客戶和服務器之間要建立兩個並行的TCP連接:
          “連接控制”和“數據連接”,連接控制在整個會話期間一直保持打開,FTP客戶發出的傳送請求,通過
          控制連接發給服務器端的控制進程,但控制進程並不是用來傳送文件。實際用來傳送文件的是”數據連接“
          服務器端的控制進程在接收到TCP客戶端發來的文件傳輸請求后就創建數據傳送進程數據連接
          用來連接客戶端,和服務器端的數據傳送進程。數據傳送進程實際完成文件的傳輸。在傳送完畢后關閉數據傳送連接進程
          由於FTP使用的是分離的控制連接,因此FTP的控制信息是帶外傳送的
        • 當客戶進程向服務器進程發出建立連接的請求時,要尋找連接服務器進程的熟知端口號(21),同時還要告訴服務器進程自己的另一個端口號碼,
          用於建立數據傳送連接,接着,服務器進程用自己傳送的熟知端口20與客戶進程所提供的端口號建立連接。
          由於 FTP使用了兩個不同的端口號,所以數據連接與控制連接不會發生混亂。使用兩個獨立的端口連接的好處是使協議更加簡單和容易的實現,
          同時在文件傳輸的時候還可以利用控制對文件的傳輸速進行控制。例如客戶端發送請求終止傳輸
        • 然而網路文件系統NFS則采用的是另一種思路:NFS允許應用進程打開一個遠程文件,並能在該文件的某一個特定位置上開始讀寫數據。這樣
          ,NFS用戶可使用戶只復制一個打文件中的一小部分,而並不需要復制整個文件。

簡單文件傳輸協議TFTP(Trivial File Transfer System)

  • TCP/IP家族中有一個簡單文件傳輸協議TFTP,它是很小且易於實現的文件傳輸協議。TFTP的版本2是互聯網的正式標准[RTC 1350],
    芮然TFTP也使用的是客戶服務器方式,但是它使用的是UDP數據報,因此TFTP需要自己的差錯處理。TFTP只支持文件傳輸並不支持交互,TFFTP不能進行用戶身份鑒別,沒有列目錄,沒有龐大指令集。
  • TFTP主要有兩個優點
    1. TFTP可用於UDP環境,例如當需要將文件同時向許多機器下載的時候往往就需要TFTP.
    2. TFTP占用代碼較少,這對較小的計算機或者其他硬件設備來說是非常重要的,這些設備不需要硬盤,
      只需要固化好了TFTP,UDP和IP的小容量只讀存儲器即可,當接通電源后,設備執行只讀存儲器中的代碼,
      在網絡上廣播一個TFTP請求。網絡上的TFTP服務器就會響應,設備收到的文件后會放到內存中,然后開始運行內存,這種方式增加了靈活性,也減少了開銷。
  • TFTP的主要特點是:
    1,每次傳送的數據報文中由512字節的數據,但最后一次可不足512字節。
    2. 數據報文按序編號,從1開始。
    3. 支持ASCII碼或二進制傳送。
    4. 可對文件進行讀或者寫。
    5. 使用很簡單的首部。
  • TFTP發完一個文件塊后就等待對方的確認,確認時就應指明所確認的塊編號。發完數據后在規定的時間內收不到
    確認就要重發數據協議數據單元PDU,發送確認PDU的一方若在規定時間內收不到下一個文件塊,也要重發確認PDU,這樣可以保證文件的傳輸不會因一個數據報的丟失而失敗。
  • 在一開始工作時,TFTP客戶進程發送一個讀請求報文或者寫請求報文給TFTP服務器進程,其熟知端口號為69
    TFTP服務器進程選擇一條新的端口和TFTP客戶進程進行通信。若文件長度剛好為512字節的整數倍,則在文件傳輸完畢后,還需要再發送一個只含首部而無數據的數據報文。
    若文件長度不是512的整數倍,則最后傳送的數據報文中的數據字段一定不滿512字節。這正好可以作為文件結束的標志。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM