文件傳輸協議---TFTP


簡介

  TFTP協議全稱為簡單文件傳輸協議,是以UDP為基礎的應用層協議,主要用於不同設備之間的文件傳輸。具有協議簡單,易於實現的特點,常用於嵌入式設備開發中。

 

傳輸模式

  數據的存儲有不同的格式,磁盤中相同的一塊數據,通過不同的存儲協議解析,得到的內容是完全不同的,如:磁盤中的一個字節0x65,按照ASCII解析就是字母A,按照數據本身解析就是0x65這個數,兩種解析的方式顯示的內容完全不同。因此文件在傳輸的過程中也需要指明數據的表示方式,即傳輸模式。TFTP協議的傳輸模式如下所示:

模式名稱 模式含義 說明
netascii 文本傳輸模式,按照一個字節8位解析 文本模式
octet 二進制模式,數據無需解析 二進制模式
mail 已過時,不使用 已過時

 

協議格式

TFTP共定義了五種類型的包格式,格式的區分由包數據前兩個字節的Opcode字段區分,分別是:

  • 讀文件請求包:Read request,簡寫為RRQ,對應Opcode字段值為1
  • 寫文件請求包:Write requst,簡寫為WRQ,對應Opcode字段值為2
  • 文件數據包:Data,簡寫為DATA,對應Opcode字段值為3
  • 回應包:Acknowledgement,簡寫為ACK,對應Opcode字段值為4
  • 錯誤信息包:Error,簡寫為ERROR,對應Opcode字段值為5

 

讀寫文件請求包格式

2字節 字符串 1字節 字符串 1字節
Opcode Filename  0          Mode   0         

 

Opcode       操作碼 1 / 2

Filename     文件名

Mode           傳輸模式

 

數據包格式

2字節 2字節 n字節
Opcode Block  data

Opcode        操作碼 3

Block            包序號,從1開始,除了最后一包,每一包的長度都是512字節,最后一包的長度小於512字節

data              具體急需要傳輸的數據

 

ACK包格式

用於回復對端,確認數據的處理情況

2字節 2字節
Opcode Block

Opcode         操作碼 4

Block             收到的包序號

 

錯誤包格式

2字節 2字節 字符串 1字節
Opcode ErrorCode ErrMsg  0

用於在失敗的情況下回復對端

Opcode         操作碼 5

ErrorCode     錯誤碼,每一種錯誤碼對應一種錯誤場景

ErrMsg         錯誤的描述信息

 

錯誤碼

錯誤碼    表示意思

   0         未定義Not defined, see error message (if any).
   1         文件找不到File not found.
   2         拒絕訪問Access violation.
   3         磁盤滿了或者超出了可分配空間Disk full or allocation exceeded.
   4         非法TFTP操作Illegal TFTP operation.
   5         傳輸ID未知Unknown transfer ID.
   6         文件不存在File already exists.
   7         沒有該用戶No such user.

 

TFTP協議的缺陷

  1. 傳輸效率低
  2. 對於超時機制沒有明確說明
  3. 每包長度固定為512字節,不靈活


免責聲明!

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



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