1. 程式人生 > >大話計算機網路一 聊聊UDP

大話計算機網路一 聊聊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

感謝這位站長的開源&n