大話計算機網絡一 聊聊UDP

引言

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

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

UDP首部

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

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所示。

 

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

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

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

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

 

 

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

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

感謝這位站長的開源 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※回頭車貨運收費標準

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?