1. 概述
用戶數據報協議(UDP,User Datagram Protocol)為應用程序提供了一種無需建立連接就可以發送封裝的 IP 數據報的方法。UDP是一種保留消息邊界的簡單的面向數據報的協議。UDP不提供差錯糾正、隊列管理、重復消除、流量控制和擁塞控制,但提供差錯檢測。這種協議自身提供最小功能,想要保證數據被可靠傳遞或正確排序,應用程序必須自己實現這些保護功能。
2. UDP 的主要特點
- UDP 是無連接的,即發送數據之前不需要建立連接,因此減少了開銷和發送數據之前的時延。
- UDP 使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的連接狀態表。
- UDP 是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部后就向下交付IP層。UDP對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界。因此,應用程序必須選擇合適大小的報文。
- UDP 沒有擁塞控制,因此網絡出現的擁塞不會使源主機的發送速率降低。很多的實時應用(如IP電話、實時視頻會議等)要去源主機以恆定的速率發送數據,並且允許在網絡發生擁塞時丟失一些數據,但卻不允許數據有太多的時延。UDP正好符合這種要求。
- UDP 支持一對一、一對多、多對一和多對多的交互通信。
- UDP 的首部開銷小,只有8個字節,比TCP的20個字節的首部要短。
3. UDP 的首部格式

UDP有兩個字段:數據字段和首部字段。首部字段很簡單,只有8個字節,由4個字段組成,每個字段的長度都是兩個字節。各字段意義如下:
-
源端口:源端口號。在需要對方回信時選用。不需要時可用全0。
-
目的端口:目的端口號。這在終點交付報文時必須要使用到。
-
長度: UDP用戶數據報的長度,其最小值是8(僅有首部),發送一個帶0字節數據的UDP數據報是允許的。
-
校驗和:檢測UDP用戶數據報在傳輸中是否有錯。有錯就丟棄。
當運輸層從 IP 層收到 UDP 數據報時,根據目的端口,通過相應的端口上交給應用進程。如果接收方 UDP發現報文中的目的端口號不正確(即不存在對應於該端口號的應用進程),就丟棄該報文,並由網際控制報文協議 ICMP 發送“端口不可達”差錯報文給發送方。
4. UDP 校驗和
UDP 校驗和是一個端到端的傳輸層校驗和,是對包含了IP頭部中的源(Source)和目的IP地址(Destination Address)字段的 UDP 偽首部計算得到的。它由初始的發送方計算得到,由最終的目的方校驗。它在傳輸中不會被修改(除非它通過一個NAT)。傳輸協議(如 TCP、UDP)使用校驗和來覆蓋它們的頭部和數據。對於 UDP 來說,校驗和是可選的,而其他的則是強制的。為了給應用程序提供無差錯數據,在投遞數據到接收方應用程序之前,必須計算校驗和或者使用其他差錯監測機制。
4.1 偽首部
在UDP偽首部中,包含32位源IP地址,32位目的IP地址,8位填充0,8位協議,16位UDP長度。偽首部並非TCP和UDP數據報中實際的有效成分。偽首部是一個虛擬的數據結構,其中的信息是從數據報所在IP分組頭的分組頭中提取的,既不向下傳送也不向上遞交,而僅僅是為計算校驗和。
偽頭部的目的是讓UDP層驗證數據是否已經到達正確的目的地(即,該IP沒有接受地址錯誤的數據報,也沒有給UDP一個本該其他傳輸協議的數據報),計算UDP校驗和時覆蓋的字段,包含了偽頭部以及UDP頭部和負載。
4.2 UDP 校驗和計算方法
發送方:
- 看數據報是不是偶數字節數,若不是添加一個全0的字節填充(該字節不發送)。
- 將校驗和字段置為全0
- 將偽首部以及UDP用戶數據報看成由許多16位的字串起來的。
- 進行二進制反碼求和,結果填入校驗和字段發送。
接收方:
把收到的UDP用戶數據報連同偽首部(以及可能的填充全零字節)一起,按二進制反碼求這些16位字的和。當無差錯時其結果應全為1。否則就表明有差錯出現,接收方就丟棄此UDP用戶數據報。如果校驗和字段值為0x0000表示發送方沒有計算校驗和。
這里我們假定一個15字節的數據報

二進制求和過程

所以和為10010110 11101101—>取反01101001 00010010就是校驗和。
5 UDP和TCP區別
角度 | TCP | UDP |
---|---|---|
連接 | 面向連接 | 無連接(發數據前不建立連接) |
可靠性 | 可靠,使用流量和擁塞控制 | 不可靠,盡最大努力到達 |
連接對象 | 只能一對一通信 | 支持m:n四種通信,m>=1, n>=1 |
傳輸方式 | 面向字節流 | 面向報文 |
首部開銷 | 20<=首部字節數<=60 | 首部開銷小,僅8字節 |
問題1:TCP和UDP的使用場景
TCP | UDP | |
---|---|---|
使用場景 | 效率要求低,准確性或有連接要求 如遠程登陸、郵件傳輸 |
對效率要求高,准確性要求低 如實時應用, IP電話、視頻、直播等 |
應用層協議 | SMTP-電子郵件 TELNET-遠程登錄 HTTP-萬維網 FTP-文件傳輸 IP-Internet協議(IP) ICMP-Internet控制信息 POP、SMTP-郵件傳輸 |
DNS-域名傳輸 TFTP-文件傳輸 SNMP-網絡管理 NFS-遠程文件服務器 |