1. 程式人生 > >Python socket之tftp協議

Python socket之tftp協議

str 介紹 可能 ima python 端口號 udp 格式化 開始

1. TFTP協議介紹

TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)

是TCP/IP協議族中的一個用來在客戶端與服務器之間進行簡單文件傳輸的協議

特點:

  • 簡單
  • 占用資源小
  • 適合傳遞小文件
  • 適合在局域網進行傳遞
  • 端口號為69
  • 基於UDP實現

2. TFTP下載過程

TFTP服務器默認監聽69號端口

當客戶端發送“下載”請求(即讀請求)時,需要向服務器的69端口發送

服務器若批準此請求,則使用一個新的、臨時的 端口進行數據傳輸

技術分享圖片

當服務器找到需要現在的文件後,會立刻打開文件,把文件中的數據通過TFTP協議發送給客戶端

如果文件的總大小較大(比如3M),那麽服務器分多次發送,每次會從文件中讀取512個字節的數據發送過來

因為發送的次數有可能會很多,所以為了讓客戶端對接收到的數據進行排序,所以在服務器發送那512個字節數據的時候,會多發2個字節的數據,用來存放序號,並且放在512個字節數據的前面,序號是從1開始的

因為需要從服務器上下載文件時,文件可能不存在,那麽此時服務器就會發送一個錯誤的信息過來,為了區分服務發送的是文件內容還是錯誤的提示信息,所以又用了2個字節 來表示這個數據包的功能(稱為操作碼),並且在序號的前面

技術分享圖片

註:1.數據包格式是字符串形式

2.需要表明大小端

3.其中定義數據包時的內存大小需要用struct模塊格式化

Python socket之tftp協議