UDP(User Data Protocol)是傳輸層的用戶數據報協議,有復用和分用以及差錯檢測的功能。
1) 多路復用(針對發送主機):從不同套接字收集數據塊,並為每個數據塊封裝上首部信息,生成報文段,傳遞到網絡層
2) 多路分解(針對接收主機):將報文段中的數據交付到正確的套接字
UDP協議主要特點:
1.UDP是無連接的,發送數據之前不需要建立連接(結束之后自然也不用釋放連接),減少了開銷和發送數據的時延
2.UDP使用盡最大努力交付,即不保證可靠交付,不需要維持復雜的連接狀態表
3.UDP是面向報文的,對應用層交下來的報文,添加首部后直接向下交付為IP層,既不合並,也不拆分,保留這些報文的邊界。對IP層交上來 UDP用戶數據報,在去除首部后就原封不動地交付給上層應用進程,報文不可分割,是UDP數據報處理的最小單位。
UDP協議優勢:
1.UDP沒有擁塞控制,網絡出現的擁塞不會使源主機的發送速率降低,在允許網絡發生擁塞時丟失一些數據並且維持較低的時延時,UDP符合這種要求
2.UDP支持一對一,一對多,多對一和多對多的交互通信
3.UDP的首部開銷小,只有8個字節,比TCP的20個字節首部要短
UDP的首部格式:
用戶數據報UDP有兩個字段:數據字段和首部字段。
首部字段由四個字段組成,每個字段的長度都是兩個字節,以下:
(1)源端口 源端口號,在需要對方回信時選用,不需要時可以全0
(2)目的端口 目的端口號,在終點交付報文時必須使用到
(3)長度 UDP用戶數據報的長度,最小值為8(僅有首部字段)
(4)校驗和 檢測UDP用戶數據報在傳輸中是否有錯誤,有錯就丟棄
UDP傳輸數據過程:
當數據層從IP層收到UDP數據報時,就根據首部中的目的端口,把UDP數據報通過相應的端口,上交到最后的終點。
如果接收方UDP發現收到的報文中的目的端口號不正確,就會丟棄報文,並由ICMP(控制報文協議)發送“端口不可達”差錯報文給發送方
UDP協議應用場景:
要發送的內容少,一個數據包就能發送全部內容。
即時通信(聊天對數據准確性和丟包要求比較低,但速度必須快),在線視頻( 速度一定要快,保證視頻連續,但是偶爾花了一個圖像幀,人們還是能接受的),網絡語音電話(VoIP 語音數據包一般比較小,需要高速發送,偶爾斷音或串音也沒有問題)等等。
UDP協議與TCP協議的區別:
1.TCP協議是有連接的,開始傳輸實際數據之前TCP的客戶端和服務器端必須通過三次握手建立連接,會話結束之后也要結束連接。而UDP是無連接的
2.TCP協議保證數據按序發送,按序到達,提供超時重傳來保證可靠性,但是UDP不保證按序到達,甚至不保證到達,只是努力交付,即便是按序發送的序列,也不保證按序送到
3.TCP有流量控制和擁塞控制,UDP沒有,網絡擁堵不會影響發送端的發送速率
4.TCP是一對一的連接,而UDP則可以支持一對一,一對多,多對多,一對多的通信
5.TCP協議首部資源消耗多,TCP首部需20個字節(不算可選項),UDP首部字段只需8個字節
6.TCP面向的是字節流的服務,UDP面向的是報文的服務