簡介
小型檔案傳輸協定非常簡單,通過少量存儲器就能輕鬆實現——這在當時是很重要的考慮因素。所以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位元組的。