UDP(UDP協定)

UDP

UDP協定一般指本詞條

Internet 協定集支持一個無連線的傳輸協定,該協定稱為用戶數據報協定(UDP,User Datagram Protocol)。UDP 為應用程式提供了一種無需建立連線就可以傳送封裝的 IP 數據報的方法。RFC 768 描述了 UDP。

Internet 的傳輸層有兩個主要協定,互為補充。無連線的是 UDP,它除了給應用程式傳送數據包功能並允許它們在所需的層次上架構自己的協定之外,幾乎沒有做什麼特別的的事情。面向連線的是 TCP,該協定幾乎做了所有的事情。

基本介紹

  • 中文名:用戶數據報協定
  • 外文名:User Datagram Protocol
  • 特點:無連線、不可靠、快速傳輸
  • 基礎:IP數據報服務上增加一點功能
  • 類別:傳輸層協定
  • 用途:傳送IP數據包
協定簡介,內容,功能,報文格式,連線埠號,長度,校驗值,主要特點,協定對比,主要套用,適用場合,實際套用,

協定簡介

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

內容

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

功能

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

報文格式

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

連線埠號

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

長度

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

校驗值

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

主要特點

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

協定對比

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

主要套用

適用場合

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

實際套用

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

相關詞條

熱門詞條

聯絡我們