版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/3644663
TFTP協定介紹
TFTP(Trivial File Transfer Protocol)即簡單檔案傳輸協定,它是TCP/IP協定族中的一個用來在客戶機與伺服器之間進行簡單檔案傳輸的協定,提供不複雜、開銷不大的檔案傳輸服務。
TFTP協定是一種非常簡單的檔案傳輸協定,隻具有FTP的基本功能。它運作在 UDP(使用者資料報協定)上,提供不可靠的資料流傳輸服務,不提供存取授權與認證機制,使用逾時重傳方式來保證資料的到達。與FTP相比,TFTP的大小要小的多。是以,它缺乏标準 FTP 協定的許多特征。TFTP協定為小檔案傳輸而設計。TFTP 隻能從遠端伺服器上讀、寫檔案(郵件)或者讀、寫檔案傳送給遠端伺服器。它不能列出目錄并且目前不提供使用者認證。
目前 TFTP 有 3 種傳輸模式:NetASCII 模式即 8 位 ASCII;Octet八位組模式(替代了以前版本的二進制模式),如原始八位位元組;郵件模式,在這種模式中,傳輸給使用者的不是檔案而是字元。mail模式已經不再支援,它将傳回的資料直接傳回給使用者而不是儲存為檔案。主機雙方可以自己定義其它模式。
TFTP協定于1980年定義,它可以在非常小的記憶體下實作。是以TFTP在引導計算機(如路由器)方面非常有用,還用于在主機間傳輸少量檔案,比如IP電話固件或作業系統映像。在初期,一些基于網絡的安裝系統(例如:Solaris Jumpstart,Red Hat Kickstart以及Suse AutoYAST)就使用了TFTP來載入基本的核心,該核心執行實際的安裝。
在 TFTP 協定中,任何一個傳輸程序都以請求讀寫檔案開始,同時建立一個連接配接。如果伺服器同意請求,則連接配接成功,檔案就以固定的 512 位元組塊的長度進行傳送。每個資料包都包含一個資料塊,在發送下一個包之前,資料塊必須得到确認響應包的确認。少于 512 位元組的資料包說明了傳輸的結束。如果包在網絡中丢失,接收端就會逾時并重新發送其最後的包(可能是資料也可能是确認響應),這就導緻丢失包的發送者重新發送丢失包。發送者需要保留一個包在手頭用于重新發送,因為 LOCK 确認響應保證所有過去的包都已經收到。注意傳輸的雙方都可以看作發送者和接收者。一方發送資料并接收确認響應,另一方發送确認響應并接受資料。
TFTP 的目前版本為 v2 。
協定結構
基本 TFTP 協定頭結構:
----------------------
16 bits String 16 bits String 16 bits
Opcode Filename 0 Mode 0
Opcode:操作代碼或指令。以下為 TFTP 指令:
-----------------------------
Opcode Command Description
1 Read Request Request to read a file
2 Write Request Request to write to a file
3 File Data Transfer of file data
4 Data Acknowledge Acknowledgement of file data
5 Error Error indication
Filename:傳送的字段名稱。
Mode:資料模式。協定傳輸的檔案資料格式。可以是 NetASCII,也可以是标準 ASCII,八位二進制資料或郵件标準 ASCII。
在Windows系統的TFTP指令:
TFTP [-i] host [GET | PUT] source [destination]
參數:
-i 指定二進制映像傳輸模式(也即Octet),此模式下,檔案逐位元組的傳輸。
host 指定本地或遠端主機。
GET 從遠端主機取回檔案到本地主機。
PUT 從本地主機發送檔案到遠端主機。
source 指定要傳輸的檔案。
destination 指定傳輸檔案的目的地。
例子:
user@host:~$ tftp 192.168.1.1
tftp> get file.txt