用戶數據報協議 UDP
UDP 概述
用戶數據報協議 UDP 只在 IP 的數據報服務之上增加了很少一點的功能,這就是複用和分用的功能以及查錯檢測的功能
UDP 的主要特點
- UDP 是
無連接的
,即發送數據之前不需要建立連接(發送數據結束時也沒有連接可釋放),減少了開銷和發送數據之前的時延 - UDP 使用
盡最大努力交付
,即不保證可靠交付,主機不需要維持複雜的連接狀態表 - UDP 是
面向報文
的,發送方的 UDP 對應用程序交下來的報文,在添加首部後就向下交付 IP 層。UDP 對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界
- UDP
沒有擁塞控制
,網絡出現的擁塞不會使源主機的發送速率降低。這對某些實時應用是很重要的 - UDP 支持一對一、一對多、多對一和多對多的交互通信
- UDP 的
首部開銷小
,只有8個字節,比 TCP 的20個字節的首部要短
存在問題
- 某些實時應用需要使用沒有擁塞控制的 UDP,但很多的源主機同時都向網絡發送高速率的實時視頻流時,網絡就有可能發生擁塞,導致大家都無法正常接收。
- 還有一些使用 UDP 的實時應用,需要對 UDP 的不可靠傳輸進行適當的改進,以減少數據的丟失。應用進程可以在不影響應用的實時性的前提下,增加一些提高可靠性的措施,如採用前向糾錯或重傳已丟失的報文
UDP 的首部格式
用戶數據報 UDP 有兩個字段:數據字段
和首部字段
。首部字段很簡單,只有8個字節,由四個字段組成,每個字段都是兩個字節
首部字段
源端口
源端口號。在需要對方回信時。不需要時可用全0目的端口
目的端口號。這在終點交付報文時必須使用長度
UDP 用戶數據報的長度,其最小值是8(僅有首部)檢驗和
檢測 UDP 用戶數據報在傳輸中是否有錯。有錯就丟棄
端口分用
當運輸層從 IP 層收到 UDP 數據報時,就根據首部中的目的端口,把 UDP 數據報通過相應的端口,上交最後的終點——應用進程
如果接受方 UDP 發現收到的報文中的目的端口號不正確(即不存在對應於該端口號的應用程序),就丟棄該報文,並由網際控制報文協議 ICMP 發送“端口不可達”差錯報文給發送方
僞首部
UDP 用戶數據報首部中檢驗和的計算方法有些特殊。在計算檢驗和時,要在 UDP 用戶數據報之前增加 12 個字節的僞首部
。所謂“僞首部”是因爲這種僞首部並不是 UDP 用戶數據報真正的首部。只是在計算檢驗和時,臨時添加在 UDP 用戶數據報前面,得到一個臨時的 UDP 用戶數據報。檢驗和就是按照這個臨時用戶數據報來計算的。僞首部既不向下傳也不向上遞交,而僅僅是爲了計算檢驗和