大話計算機網絡一 聊聊UDP

引言

UDP是一個簡單的面向數據報運輸層協議

image.png

UDP不提供可靠性,它把應用程序傳給IP層得數據發送出去,不保證它們能達到目的地

UDP首部

image.png

端口號表示發送進程和接受進程

UDP長度字段指的是UDP首部和UDP數據的字節長度,該字段最小值爲8字節

UDP長度是全長減去IP首部的長度

UDP檢驗和是一個端到端的檢驗和。它由發送端計算,然後由接收端驗證。其目的是爲了發現UDP首部和數據在發送端到接收端之間發生的任何改動。

 

最大UDP數據報長度

理論上,IP數據報的最大長度是65535字節,這是由IP首部(圖3-1)16比特總長度字段所限制的。去除20字節的IP首部和8個字節的UDP首部,UDP數據報中用戶數據的最長長度爲65507字節。但是,大多數實現所提供的長度比這個最大值小。

 

UDP校驗和

 

UDP和TCP在首部中都有覆蓋它們首部和數據的檢驗和。UDP的檢驗和是可選的,而TCP的檢驗和是必需的。

儘管UDP檢驗和的基本計算方法與我們在3.2節中描述的IP首部檢驗和計算方法相類似(16 bit字的二進制反碼和),但是它們之間存在不同的地方。首先,UDP數據報的長度可以爲奇數字節,但是檢驗和算法是把若干個16 bit字相加。解決方法是必要時在最後增加填充字節0,這只是爲了檢驗和的計算(也就是說,可能增加的填充字節不被傳送)。

其次,UDP數據報和TCP段都包含一個12字節長的僞首部,它是爲了計算檢驗和而設置的。僞首部包含IP首部一些字段。其目的是讓UDP兩次檢查數據是否已經正確到達目的地(例如,IP沒有接受地址不是本主機的數據報,以及IP沒有把應傳給另一高層的數據報傳給UDP)。UDP數據報中的僞首部格式如圖11-3所示。

 

image.png

在該圖中,我們特地舉了一個奇數長度的數據報例子,因而在計算檢驗和時需要加上填充字節。注意,UDP數據報的長度在檢驗和計算過程中出現兩次。

如果檢驗和的計算結果爲0,則存入的值爲全1(65535),這在二進制反碼計算中是等效的。如果傳送的檢驗和爲0,說明發送端沒有計算檢驗和。

如果發送端沒有計算檢驗和而接收端檢測到檢驗和有差錯,那麼UDP數據報就要被悄悄地丟棄。不產生任何差錯報文(當IP層檢測到IP首部檢驗和有差錯時也這樣做)。

UDP檢驗和是一個端到端的檢驗和。它由發送端計算,然後由接收端驗證。其目的是爲了發現UDP首部和數據在發送端到接收端之間發生的任何改動。

 

 

這個系列主要是對自己讀TCP/IP詳解 卷一 協議的筆記,推薦看完以後去閱讀一下這本又臭又厚的書

電子書的鏈接地址http://www.52im.net/topic-tcpipvol1.html

感謝這位站長的開源 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章