UDP傳輸協定
-
- 什麼是UPD傳輸協定
- UDP協定格式
- UDP的特點
- 面向資料報
- UPD的緩沖區
- UPD使用注意事項
- 基于UDP的應用層協定
什麼是UPD傳輸協定
UDP 是User Datagram Protocol的簡稱, 中文名是使用者資料報協定,OSI 參考模型中一種無連接配接的傳輸層協定,提供面向事務的簡單不可靠資訊傳送服務。
UDP協定格式
- 源端口号:表明資料從那個程序發送出。
- 目的端口号:表明資料發現那個程序。
- DUP資料長度:16的DUP長度(UDP首部+UDP資料)),表明了UDP所能發送的資料時定長的,最大為64KB。
- UDP校驗和:檢驗接收的資料是否與發送的資料一緻。如果出錯,直接丢棄
UDP的特點
- 無連接配接: 知道對端的IP和端口号就直接進行傳輸, 不需要建立連接配接。
- 不可靠: 沒有确認機制, 沒有重傳機制; 如果因為網絡故障該段無法發到對方, UDP協定層也不會給應用層傳回任何錯誤資訊。
- 面向資料報: 不能夠靈活的控制讀寫資料的次數和數量。
面向資料報
應用層交給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: 域名解析協定