什麼是TFTP?
TFTP 代表**簡單檔案傳輸協議**。一些應用程式不需要 TCP 的全部功能,也無法承受其複雜性。TFTP 支援一種廉價的結構,不需要客戶端和伺服器之間進行復雜的互動。TFTP 將操作限制在簡單檔案傳輸,並且不支援身份驗證。
使用 TFTP 的好處是,它使引導程式碼能夠使用與作業系統框架啟動執行後使用的相同的基礎 TCP/IP 協議。因此,裝置有可能從另一個物理網路上的伺服器進行引導。
TFTP 沒有可靠的流傳輸服務。它執行在 UDP 或任何其他不可靠的資料包傳遞系統之上,使用超時和重傳來確保資料到達。傳送方以固定大小的塊傳輸檔案,並在傳送文字之前等待每個塊的確認。
TFTP 的特點
TFTP 的主要特點如下:
TFTP 基於客戶端-伺服器原理,並使用眾所周知的 UDP 埠號 69 用於 TFTP 伺服器。
TFTP 是一種不安全的協議,不支援身份驗證。
TFTP 集成了空閒-RQ(停止等待)錯誤恢復機制。
- 每個 TFTP 資料單元都帶有序列號。
- 每個資料單元都單獨確認。在收到確認後,傳輸下一個資料單元。
- 錯誤恢復透過超時後重傳來實現。TFTP 使用自適應超時和指數退避演算法。
TFTP 訊息格式
TFTP 訊息有四種類型,如下所示:
讀取請求 - 客戶端使用此命令從伺服器獲取檔案的 0 副本
| 讀取請求 (1) | 檔名 | 0 | 模式 | 0 |
2 個位元組 可變 1 個位元組 可變 1 個位元組
寫入請求 - 客戶端使用此命令將檔案寫入伺服器
| 讀取請求 (1) | 檔名 | 0 | 模式 | 0 |
2 個位元組 可變 1 個位元組 可變 1 個位元組
資料 - 此 TFTP 訊息包含資料塊。
| 資料 (3) | 序列號 | 資料 |
2 個位元組 2 個位元組 最多 512 個位元組
確認 - 客戶端和伺服器使用此確認收到的資料單元。
| 確認 (4) | 序列號 |
2 個位元組 2 個位元組
在此圖中,前兩個位元組指示訊息型別。模式欄位定義資料型別(ASCII 或二進位制)。檔名和模式欄位使用全零位元組分隔。
型別 3 訊息包含大小為 512 個位元組的固定大小的資料塊。如果資料訊息出現的資料位元組小於 512 個位元組,則會話將被刪除。最後一條資料訊息可以包含一個數據塊(帶 EOF)大小小於 512 個位元組。型別 4 訊息用於確認。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP