使用者資料報協議UDP總結

2021-08-10 14:08:06 字數 3821 閱讀 9750

一、 udp首部格式

二、 udp主要特點

三、 udp校驗和計算

四、 udp程式設計實現

簡介:udp是user datagram protocal的縮寫,即使用者資料報協議,其只在ip的資料報服務上增加了很少一點的功能,即埠(復用和分用)以及差錯檢驗功能。雖然udp資料報提供不可靠的交付,但是udp在減小開銷及時延等方面有其特殊優點

一、udp首部格式:使用者資料報udp有兩個字段:資料字段首部字段。首部字段只有8個位元組,由四個字段組成,每個欄位的長度都是兩個位元組。各欄位意義如下:

(1)源埠:源埠號,在需要對方回信時選用,不需要時可用全0

(2)目的埠:目的埠號,這在終點交付報文時必須要用到

(3)長度: udp使用者資料報的長度,其最小值為8(此時僅有首部)

(4)檢驗和:檢測udp使用者資料報在傳輸中是否有錯,有錯就丟棄

圖1、udp的首部格式

當運輸層從ip層收到udp資料報時,就根據首部中的目的埠,把udp資料報通過相應的埠,上交最後的終點——應用程序。圖2是udp基於埠分用的示意圖。

圖2、udp基於埠分用

如果接收方udp發現收到的報文中的目的埠號不正確(即不存在對應於該埠號的應用程序),就丟棄該報文,並由網際控制報文協議icmp傳送「埠不可達」差錯報文給傳送方。

二、udp的主要特點:

1、udp 是無連線的,即傳送資料之前不需要建立連線,傳送資料之後也沒有連線可釋放,因此減小了開銷和傳送資料之前的時延。

2、udp使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持複雜的連線狀態表

3、udp是面向報文的,傳送方udp對應用程式交下來的報文,在新增首部後直接向下交付ip層。udp對應用層交下來的報文(˅),既不合併,也不拆分,而是保留這些報文的邊界。也就是說,應用層交付給udp的報文,udp就照樣傳送,即一次傳送乙個報文。在接收方的udp(ʌ),對ip層交上來的udp使用者資料報,在去除首部後就原封不動的交付上層的應用程序。也就是說,udp一次交付乙個完整的報文。

應用程式必須選擇合適大小的報文,若報文太長,udp將其交給ip層後,ip層在傳送時可能要進行分片,這回降低ip層的效率,反之,若報文太短,udp將其交給ip層後,會使ip資料報的首部相對長度太大,這也降低了ip層的效率。

圖3、udp是面向報文的(5)、udp支援一對

一、一對多、多對一和多對多的互動通訊

(6)、udp首部開銷小,只有8個位元組,比tcp的20個位元組首部要短。

三、 udp校驗和計算:

udp使用者資料報首部中校驗和的計算方法有一些特殊,在計算校驗和時,臨時在udp使用者資料報前增加12個位元組的偽首部。

所謂偽首部,是因為這種為首不並不是udp使用者資料報真正的首部,只是在計算校驗和時,臨時新增在udp使用者資料報前面,得到乙個臨時的udp使用者資料報,檢驗和就是按照這個臨時的udp使用者資料報計算的,偽首部既不向上遞交也不向下傳送,僅僅為了計算校驗和。圖4給出了偽首部各字段的內容。

圖4、偽首部字段內容udp的檢驗和是把首部和資料部分一起都檢驗

3.1、計算過程及示例:

傳送方:

1、 將全零放入檢驗和字段

2、 將偽首部以及udp使用者資料報看成由許多16位的字串接起來。

3、 若udp使用者資料報資料部分不是偶數個位元組,則要填入乙個全零位元組(此位元組不傳送)

4、 最後按照二進位制反碼計算出這些16位字的和,將此和的二進位制反碼寫入校驗和字段,傳送這樣的udp使用者資料報。

接收方:

1、 將收到的udp使用者資料報連同偽首部(以及可能的填充全零位元組)一起,按照二進位制反碼求這些16位字的和,並將這個和與檢驗和相加。

2、 若其結果為全1,則無差錯,接收該udp使用者資料報。

3、 若結果不全為1,則出現差錯,丟棄這個udp使用者資料報。(或遞交給應用層,但附加差錯警告)

3.2、簡單理解計算過程:

傳送階段:除校驗和之外的其他欄位的16位2進製反碼校驗和為m,由於校驗和字段值為0,則 0 + m = m,而~m被存放在校驗和字段中

接收階段:除校驗和之外的其他欄位的16位2進製反碼校驗和,如果正確則仍然為m,而校驗和字段,如果正確則為~m,那麼m + ~m = 0xffff,計算結果對

(m為圖5中紅色框部分,~m為綠色框部分)

圖5、計算校驗和的示例

3.3、udp校驗和說明:

(1)、udp檢驗和覆蓋udp首部和udp資料。其檢驗和是可選的,基本計算方法是16 bit字的二進位制反碼和,

(2)、udp資料報的長度可以為奇數位元組,但檢驗和演算法是把若干個16

bit字相加。解決方法是必要時在最後增加填充位元組0,這只是為了檢驗和的計算,可能增加的填充位元組不被傳送。

(3)、計算校驗和時,在udp資料報前加12位元組的偽首部,偽首部包含ip首部一些字段,目的是讓udp兩次檢查資料是否已經正確到達目的地。

(4)、udp資料報的長度在檢驗和計算過程中出現兩次(偽首部及udp首部均包含udp資料報長度)

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

(6)、udp檢驗和是乙個端到端的檢驗和。它由傳送端計算,然後由接收端驗證。其目的是為了發現udp首部和資料在傳送端到接收端之間發生的任何改動。

(7)、udp檢驗和(事實上,tcp/ip協議簇中所有的檢驗和)是簡單的16 bit和。它們檢測不出交換兩個16 bit的差錯。

四、 udp程式設計實現:待補充

使用者資料報協議 UDP

udp 簡述 udp只在ip 的資料報服務之上增加了很少一點的功能,即埠的功能和差錯檢測的功能。udp 的主要特點 udp是無連線的 即傳送資料之前不需要建立連線。udp使用盡最大努力交付 即不保證可靠交付,同時也不使用擁塞控制。udp沒有擁塞控制,很適合多 通訊的要求。udp是面向報文的 udp ...

使用者資料報協議UDP

udp概述 使用者資料報協議udp只在ip的資料報服務上增加了兩個兩個共能。分別是埠功能 有了埠,運輸層就能進行復用和分用 和差錯檢測功能。雖然udp使用者資料報只能提供不可靠的交付,但是在某些方面尤其特殊的優勢 1.udp是無連線的,即傳送資料之前不需要建立連線 當然傳送資料結束時也沒有連線可以釋...

使用者資料報協議UDP

一 udp協議概述 使用者資料報協議 user datagram protocol,縮寫為 udp 又稱使用者資料報文協議,是乙個簡單的面向資料報的運輸協議。在 tcp ip 模型中,udp 為網路層以上和應用層以下提供了乙個簡單的介面。udp 只提供資料的不可靠傳遞,它一旦把應用程式發給網路層的資...