第8章 傳輸層(2)_UDP協議
2. 用戶數據報協議(UDP)
2.1 UDP的特點
(1)UDP是無連接的,即發送數據之前不需要建立連接,因此減少了開銷和發送數據之前的時延。
(2)UDP使用了盡最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的連接狀態表,通信的兩端不用保持連接,因此節省系統資源。
(3)UDP是面向報文的。UDP對應用層下來的報文即既不合並,也不拆分,而是保留這些報文的邊界。也就是說應用層交給UDP多長的報文,UDP就原樣發送,即一次發送一個報文。(這要求應用程序必須選擇合適大小的報文,以免降低IP層的效率!)
(4)UDP沒有擁塞控制:如果網絡出現擁塞不會使主機的發送速率降低。這對某些實時應用很重要
(5)UDP支持一對一、一對多、多對一和多對多的交互通信。
(6)UDP的首部開銷小,只有8字節,比TCP的20字節的首部要短。
2.2 UDP的首部格式
(1)抓包分析(以域名解析數據包為例)
①源端口:在需要對方回信時選用。不需要時可用全0。
②目的端口:在終點交付報文時必須要使用到
③長度:UDP用戶數據據的長度(數據字段和首部字段),最小值是8(僅有首部時)
④檢驗和:檢測UDP用戶數據報在傳輸中是否有錯。有錯就丟棄。
(2)UDP首部和偽首部
①UDP用戶數據報有兩個字段:數據字段和首部字段。其中的首部很簡單,只有8個字節(源端口、目標端口、長度和校驗和)
②“偽首部”:並不是UDP數據報真正的首部,只是在計算檢驗和時,臨時添加在UDP數據報前面,得到一個臨時的UDP用戶數據報,檢驗和就是按照這個臨時的UDP數據報來計算的。這個偽首部既不向下傳遞也不向上遞交,而僅僅是為了計算檢驗和之用。
(3)UDP檢驗和的計算
①UDP的檢驗和是把首部和數據部分一起都檢驗(有別於IP數據報檢驗和只檢驗IP數據報的首部)。
②發送方首先把全零放入檢驗和字段,再把偽首部以及UDP用戶數據報看成是由許多16位的字(如上圖)一起串接起來。如果數據部分不是偶數個字節,則填入一個全零字節(但不發送)。然後按二進制反碼計算出這些16位字的和。將此和的二進制反碼寫入檢驗和字段
③接收方把收到的UDP數據報連同偽首部(以及可能的填充全零字節)一起按二進制反碼求這些16位字的和。當無差錯時其結果應全為1;否則就表明有差錯出現,接收方應丟棄這個UDP數據報。
第8章 傳輸層(2)_UDP協議