複製鏈接
請複製以下鏈接發送給好友

UDP

鎖定
Internet 協議集支持一個無連接的傳輸協議,該協議稱為用户數據報協議(UDP,User Datagram Protocol)。UDP 為應用程序提供了一種無需建立連接就可以發送封裝的 IP 數據包的方法。RFC 768 [1]  描述了 UDP。
Internet 的傳輸層有兩個主要協議,互為補充。無連接的是 UDP,它除了給應用程序發送數據包功能並允許它們在所需的層次上架構自己的協議之外,幾乎沒有做什麼特別的事情。面向連接的是 TCP,該協議幾乎做了所有的事情。 [2] 
中文名
用户數據報協議
外文名
User Datagram Protocol
特    點
無連接、不可靠、快速傳輸
基    礎
IP數據包服務上增加一點功能
類    別
傳輸層協議
用    途
發送IP數據包

UDP協議簡介

UDP中文名是用户數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768 [1]  是UDP的正式規範。UDP在IP報文的協議號是17。
UDP協議與TCP協議一樣用於處理數據包,在OSI模型中,兩者都位於傳輸層,處於IP協議的上一層。UDP有不提供數據包分組、組裝和不能對數據包進行排序的缺點,也就是説,當報文發送之後,是無法得知其是否安全完整到達的。UDP用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客户/服務器模式的網絡應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但即使在今天UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。
許多應用只支持UDP,如:多媒體數據流,不產生任何額外的數據,即使知道有破壞的包也不進行重發。當強調傳輸性能而不是傳輸的完整性時,如:音頻和多媒體應用,UDP是最好的選擇。在數據傳輸時間很短,以至於此前的連接過程成為整個流量主體的情況下,UDP也是一個好的選擇。 [3] 

UDP內容

UDP是OSI參考模型中一種無連接的傳輸層協議,它主要用於不要求分組順序到達的傳輸中,分組傳輸順序的檢查與排序由應用層完成 [4]  ,提供面向事務的簡單不可靠信息傳送服務。UDP 協議基本上是IP協議與上層協議的接口。UDP協議適用端口分別運行在同一台設備上的多個應用程序
UDP提供了無連接通信,且不對傳送數據包進行可靠性保證,適合於一次傳輸少量數據,UDP傳輸的可靠性由應用層負責。常用的UDP端口號有:53(DNS)、69(TFTP)、161(SNMP),使用UDP協議包括:TFTPSNMP、NFS、DNS、BOOTP。
UDP報文沒有可靠性保證、順序保證和流量控制字段等,可靠性較差。但是正因為UDP協議的控制選項較少,在數據傳輸過程中延遲小、數據傳輸效率高,適合對可靠性要求不高的應用程序,或者可以保障可靠性的應用程序,如DNS、TFTP、SNMP等。

UDP功能

為了在給定的主機上能識別多個目的地址,同時允許多個應用程序在同一台主機上工作並能獨立地進行數據包的發送和接收,設計用户數據報協議UDP。
UDP使用底層的互聯網協議來傳送報文,同IP一樣提供不可靠的無連接數據包傳輸服務。它不提供報文到達確認、排序、及流量控制等功能。
UDP Helper可以實現對指定UDP端口廣播報文的中繼轉發,即將指定UDP端口的廣播報文轉換為單播報文發送給指定的服務器,起到中繼的作用。

UDP報文格式

在UDP協議層次模型中,UDP位於IP層之上。應用程序訪問UDP層然後使用IP層傳送數據包。IP數據包的數據部分即為UDP數據包。IP層的報頭指明瞭源主機和目的主機地址,而UDP層的報頭指明瞭主機上的源端口和目的端口。UDP傳輸的段(segment)有8個字節的報頭和有效載荷字段構成。
UDP報頭由4個域組成,其中每個域各佔用2個字節,具體包括源端口號、目標端口號、數據包長度、校驗值。
以下將對UDP數據報格式進行簡要介紹,具體內容請參照RFC 768 [1] 

UDP端口號

UDP報文詳解 UDP報文詳解
UDP協議使用端口號為不同的應用保留其各自的數據傳輸通道。UDP和TCP協議正是採用這一機制實現對同一時刻內多項應用同時發送和接收數據的支持。數據發送一方(可以是客户端或服務器端)將UDP數據包通過源端口發送出去,而數據接收一方則通過目標端口接收數據。有的網絡應用只能使用預先為其預留或註冊的靜態端口;而另外一些網絡應用則可以使用未被註冊的動態端口。因為UDP報頭使用兩個字節存放端口號,所以端口號的有效範圍是從0到65535。一般來説,大於49151的端口號都代表動態端口。UDP端口號指定有兩種方式:由管理機構指定端口和動態綁定的方式。

UDP長度

數據報的長度是指包括報頭和數據部分在內的總字節數。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數據部分(又稱為數據負載)。數據報的最大長度根據操作環境的不同而各異。從理論上説,包含報頭在內的數據報的最大長度為65535字節。不過,一些實際應用往往會限制數據報的大小,有時會降低到8192字節。

UDP校驗值

UDP協議使用報頭中的校驗值來保證數據的安全。校驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之後,還需要再重新計算。如果某個數據報在傳輸過程中被第三方篡改或者由於線路噪音等原因受到損壞,發送和接收方的校驗計算值將不會相符,由此UDP協議可以檢測是否出錯。這與TCP協議是不同的,後者要求必須具有校驗值。 [5] 
許多鏈路層協議都提供錯誤檢查,包括流行的以太網協議。UDP也要提供檢查和校驗,其原因是鏈路層以下的協議在源端和終端之間的某些通道可能不提供錯誤檢測。雖然UDP提供有錯誤檢測,但檢測到錯誤時,UDP不做錯誤校正,只是簡單地把損壞的消息段扔掉,或者給應用程序提供警告信息。

UDP主要特點

UDP是一個無連接協議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,並儘可能快地把它扔到網絡上。在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段。
由於傳輸數據不建立連接,因此也就不需要維護連接狀態,包括收發狀態等,因此一台服務機可同時向多個客户機傳輸相同的消息。
UDP信息包的標題很短,只有8個字節,相對於TCP的20個字節信息包而言UDP的額外開銷很小。
吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。
UDP是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部後就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。
雖然UDP是一個不可靠的協議,但它是分發信息的一個理想協議。例如,在屏幕上報告股票市場、顯示航空信息等等。UDP也用在路由信息協議RIP(Routing Information Protocol)中修改路由表。在這些應用場合下,如果有一個消息丟失,在幾秒之後另一個新的消息就會替換它。UDP廣泛用在多媒體應用中。

UDP協議對比

UDP和TCP協議的主要區別是兩者在如何實現信息的可靠傳遞方面不同。TCP協議中包含了專門的傳遞保證機制,當數據接收方收到發送方傳來的信息時,會自動向發送方發出確認消息;發送方只有在接收到該確認消息之後才繼續傳送其它信息,否則將一直等待直到收到確認信息為止。與TCP不同,UDP協議並不提供數據傳送的保證機制。如果在從發送方到接收方的傳遞過程中出現數據包的丟失,協議本身並不能做出任何檢測或提示。因此,通常人們把UDP協議稱為不可靠的傳輸協議
TCP 是面向連接的傳輸控制協議,而UDP 提供了無連接的數據報服務;TCP 具有高可靠性,確保傳輸數據的正確性,不出現丟失或亂序;UDP 在傳輸數據前不建立連接,不對數據報進行檢查與修改,無須等待對方的應答,所以會出現分組丟失、重複、亂序,應用程序需要負責傳輸可靠性方面的所有工作;UDP 具有較好的實時性,工作效率較 TCP 協議高;UDP 段結構比 TCP 的段結構簡單,因此網絡開銷也小。TCP 協議可以保證接收端毫無差錯地接收到發送端發出的字節流,為應用程序提供可靠的通信服務。對可靠性要求高的通信系統往往使用 TCP 傳輸數據。 [6] 

UDP主要應用

UDP適用場合

在選擇UDP作為傳輸協議時必須要謹慎。在網絡質量令人十分不滿意的環境下,UDP協議數據包丟失會比較嚴重。但是由於UDP的特性:它不屬於連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通數據在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。比如聊天用的QQ就是使用的UDP協議。 [7] 

UDP實際應用

在現場測控領域,面向的是分佈化的控制器、監測器等,其應用場合環境比較惡劣,這樣就對待傳輸數據提出了不同的要求,如實時、抗干擾性、安全性等。基於此,現場通信中,若某一應用要將一組數據傳送給網絡中的另一個節點,可由UDP進程將數據加上報頭後傳送給IP進程,UDP協議省去了建立連接和拆除連接的過程,取消了重發檢驗機制,能夠達到較高的通信速率。 [8] 
參考資料