簡單文件傳輸協議

文件传输协议的简易版,该协议不提供认证功能

簡單文件傳輸協議也稱小型文件傳輸協議Trivial File Transfer Protocol, TFTP),是一種於1981年在RFC 783中定義的簡化的文件傳輸協議(FTP)。

小型文件傳輸協議非常簡單,透過少量記憶體就能輕鬆實現——這在當時是很重要的考慮因素。所以TFTP被用於引導計算機,例如沒有大容量存儲器的路由器。現在它仍然被用於在一個網絡上主機之間傳輸小文件,例如從一台網絡主機或服務器引導一個遠程X Window System終端或其他的瘦客戶端

小型文件傳輸協議部分基於更早期的文件傳輸協議,文件傳輸協議是通用分組協議(PUP Protocol)中的一部分。在TCP/IP協議組早期的工作中,TFTP往往是在一個新的主機類型上首先完成的協議——因為其非常的簡單。

最早的小型文件傳輸協議版本是在RFC 1350之前,顯示出相當糟糕的協議缺陷,發現的時候被稱為魔術新手症候群

技術資訊

小型文件傳輸協議的一些詳細資料:

  • 使用UDP(端口69)作為其傳輸協議(不像FTP使用TCP端口21)。
  • 不能列出目錄內容。
  • 無驗證或加密機制。
  • 被用於在遠程服務器上讀取或寫入文件。
  • 支持三種不同的傳輸模式:"netascii","octet"和"mail",前兩種符合FTP協議中的"ASCII"和"image(binary)"模式;第三種從來很少使用,目前已經廢棄。

因為小型文件傳輸協議使用UDP協議,就必須自己支援傳輸和會話的控制。每個通過TFTP傳輸的文件構成了一個獨立的交換。此傳輸表現為步鎖,任何時間網絡上僅僅傳遞一個包(一個數據塊或一個首部確認)。由於缺少窗口切換技術,TFTP在有很多潛在連接的情況下僅提供較低的吞吐量。

由於小型文件傳輸協議缺少安全性,在開放式因特網上傳輸非常危險,所以普遍僅僅用於私人本地網絡。目前TFTP常用於PXE無盤啟動,網絡設備的設置等。

選項協商後來加到協議中(RFC 2347),已經被協定的選項能對協議的操作進行輕微的更改(特別是更大分塊尺寸的使用使得吞吐量略有提高),但協議大體上還是保持不變的。

小型文件傳輸協議會話的詳細資料

  • 初始化主機A送一個讀請求(RRQ)或寫請求(WRQ)包給主機B,包含了文件名和傳輸模式。
  • B向A發一個ACK包應答,同時也通知了A其餘送往B包應該發送的端口號。
  • 源主機向目的主機送編過號的數據包,除了最後一個都應該包含一個全尺寸的數據塊。目的主機用編號的ACK包應答所有的數據包。
  • 最終的數據包必須包含少於最大尺寸的數據塊以表明這是最後一個包。如果被傳輸文件正好是尺寸塊的整數倍,源主機最後送的數據包就是0字節的。