使用者資料報協議UDP
UDP 概述
使用者資料報協議 UDP 只在 IP 的資料報服務之上增加了很少一點的功能,這就是複用和分用的功能以及查錯檢測的功能
UDP 的主要特點
- UDP 是
無連線的
,即傳送資料之前不需要建立連線(傳送資料結束時也沒有連線可釋放),減少了開銷和傳送資料之前的時延 - UDP 使用
盡最大努力交付
,即不保證可靠交付,主機不需要維持複雜的連線狀態表 - UDP 是
面向報文
的,傳送方的 UDP 對應用程式交下來的報文,在新增首部後就向下交付 IP 層。UDP 對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界

沒有擁塞控制 首部開銷小
存在問題
- 某些實時應用需要使用沒有擁塞控制的 UDP,但很多的源主機同時都向網路傳送高速率的實時視訊流時,網路就有可能發生擁塞,導致大家都無法正常接收。
- 還有一些使用 UDP 的實時應用,需要對 UDP 的不可靠傳輸進行適當的改進,以減少資料的丟失。應用程序可以在不影響應用的實時性的前提下,增加一些提高可靠性的措施,如採用前向糾錯或重傳已丟失的報文
UDP 的首部格式
使用者資料報 UDP 有兩個欄位: 資料欄位
和 首部欄位
。首部欄位很簡單,只有8個位元組,由四個欄位組成,每個欄位都是兩個位元組
首部欄位
源埠 目的埠 長度 檢驗和

埠分用
當運輸層從 IP 層收到 UDP 資料報時,就根據首部中的目的埠,把 UDP 資料報通過相應的埠,上交最後的終點——應用程序

如果接受方 UDP 發現收到的報文中的目的埠號不正確(即不存在對應於該埠號的應用程式),就丟棄該報文,並由網際控制報文協議 ICMP 傳送“埠不可達”差錯報文給傳送方
偽首部
UDP 使用者資料報首部中檢驗和的計算方法有些特殊。在計算檢驗和時,要在 UDP 使用者資料報之前增加 12 個位元組的 偽首部
。所謂“偽首部”是因為這種偽首部並不是 UDP 使用者資料報真正的首部。只是在計算檢驗和時,臨時新增在 UDP 使用者資料報前面,得到一個臨時的 UDP 使用者資料報。檢驗和就是按照這個臨時使用者資料報來計算的。偽首部既不向下傳也不向上遞交,而僅僅是為了計算檢驗和