天天看點

網絡通信|UDP傳輸協定

UDP傳輸協定

    • 什麼是UPD傳輸協定
    • UDP協定格式
    • UDP的特點
    • 面向資料報
    • UPD的緩沖區
    • UPD使用注意事項
    • 基于UDP的應用層協定

什麼是UPD傳輸協定

UDP 是User Datagram Protocol的簡稱, 中文名是使用者資料報協定,OSI 參考模型中一種無連接配接的傳輸層協定,提供面向事務的簡單不可靠資訊傳送服務。

UDP協定格式

網絡通信|UDP傳輸協定
  1. 源端口号:表明資料從那個程序發送出。
  2. 目的端口号:表明資料發現那個程序。
  3. DUP資料長度:16的DUP長度(UDP首部+UDP資料)),表明了UDP所能發送的資料時定長的,最大為64KB。
  4. UDP校驗和:檢驗接收的資料是否與發送的資料一緻。如果出錯,直接丢棄

UDP的特點

  1. 無連接配接: 知道對端的IP和端口号就直接進行傳輸, 不需要建立連接配接。
  2. 不可靠: 沒有确認機制, 沒有重傳機制; 如果因為網絡故障該段無法發到對方, UDP協定層也不會給應用層傳回任何錯誤資訊。
  3. 面向資料報: 不能夠靈活的控制讀寫資料的次數和數量。

面向資料報

應用層交給UDP多長的封包, UDP原樣發送, 既不會拆分, 也不會合并。

用UDP傳輸100個位元組的資料:

如果發送端調用一函數次發送100個位元組, 那麼接收端也必須調用對應的函數一次接收100個位元組。而不能循環10次接收, 每次接收10個位元組。

UPD的緩沖區

  • UDP沒有真正意義上的 發送緩沖區. 調用sendto會直接交給核心, 由核心将資料傳給網絡層協定進行後續的傳輸動作;
  • UDP具有接收緩沖區. 但是這個接收緩沖區不能保證收到的UDP報的順序和發送UDP報的順序一緻; 如果緩沖區滿了,再到達的UDP資料會被丢棄。

UPD使用注意事項

我們注意到, UDP協定首部中有一個16位的最大長度. 也就是說一個UDP能傳輸的資料最大長度是64K(包含UDP首部)。如果我們所發送的資料超過64KB應該怎麼處理?

當我們發送的資料大于64KB時,程式就會報錯。我們可以通過将資料拆分成小于64KB的資料包,然後發送這些拆分的資料包,在接收端我們需要手動的将這些資料進行拼接,但是UDP傳輸協定不能保證資料包是有序到達的,是以我們在發送資料包的時候要考慮到接收端包序的問題。

基于UDP的應用層協定

  • NFS: 網絡檔案系統
  • TFTP: 簡單檔案傳輸協定
  • DHCP: 動态主機配置協定
  • BOOTP: 啟動協定(用于無盤裝置啟動)
  • DNS: 域名解析協定

繼續閱讀