UDP協議


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首部

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 校驗和計算方法

發送方:

  1. 看數據報是不是偶數字節數,若不是添加一個全0的字節填充(該字節不發送)。
  2. 將校驗和字段置為全0
  3. 將偽首部以及UDP用戶數據報看成由許多16位的字串起來的。
  4. 進行二進制反碼求和,結果填入校驗和字段發送。

接收方:

把收到的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-遠程文件服務器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM