詳解UDP協議

2022-09-20 01:33:14 字數 1869 閱讀 2648

運輸層位於網路層之上,網路層提供了主機之間的邏輯通訊;而運輸層為執行在不同主機上的應用程序之間提供了邏輯通訊。從應用程式角度看,通過邏輯通訊,執行不同程序的主機好像直接相連一樣。應用程序使用運輸層提供的邏輯通訊功能來傳送報文,無需考慮承載這些報文的物理基礎設施的細節,就像我們知道的透明傳輸。

udp是傳輸層協議的一種,也叫做使用者資料報協議,提供一種不可靠、無連線的服務。當我傳送的udp包到達目標機器後,目標機器發現 mac 位址匹配,於是就取下來,將剩下的包傳給處理 ip 層的**。把 ip 頭取下來,發現目標 ip 匹配,然後這裡面的資料報發給誰呢?我們自己知道傳送的是udp包,那麼目標機器怎麼知道的呢?因為ip資料報裡面有個字段是上層協議,說明了上層協議是tcp還是udp ,所以目的主機根據這個資訊知道了這個包是udp包。

udp的報文段結構非常簡單,首部有4個字段組成,每個字段占用兩個位元組。埠號用來區分各個應用程式,每個應用程式需要監聽乙個埠,不能衝突。目標機器根據目的埠號晶資料交給相應的應用程式。長度欄位的意思是udp首部加上應用資料的總長度。校驗和主要是接收方檢查在該報文段是否出現了差錯。應用資料就是應用層包了。

udp協議具有三大特點,通過上面對報文段結構的分析,也能猜到一兩個。

基於這些特點,udp主要有三大使用場景。

所以,如果開發人員選擇udp協議開發應用程式,那應用程式差不多就是直接和ip層打交道。udp從應用程序得到資料,附加上首部字段形成報文段交給網路層。網路層將該運輸層報文段封裝到乙個ip資料報中,然偶盡最大努力交給目的主機。如果目的主機收到該資料報,udp使用目的埠號將報文段中的資料交付給正確的應用程序。

由於udp 十分簡單,基本啥都沒做,如果應用是基於udp開發的,那麼就可以有很多自主擴充套件的東西。

我們通過具體的例子說明:

流**的協議,現在直播比較火,直播協議多使用 rtmp。rtmp 協議也是基於 tcp 的。tcp 的嚴格順序傳輸要保證前乙個收到了,下乙個才能確認,如果前乙個收不到,下乙個就算包已經收到了,在快取裡面,也需要等著。直播對實時性要求高,寧可丟包,也不能卡頓。關於丟包。

實時遊戲,實時遊戲中客戶端和服務端要建立長連線,來保證實時傳輸。但是遊戲玩家很多,伺服器卻不多。由於維護 tcp 連線需要在核心維護一些資料結構,因而一台機器能夠支撐的 tcp 連線數目是有限的。 udp 由於是沒有連線的,在非同步 io 機制引入之前,常常是應對海量客戶端連線的策略。

如果使用tcp協議,它的強順序性會帶來一些問題。對戰的遊戲,對網路的要求很簡單,玩家通過客戶端給伺服器傳送滑鼠和鍵盤行走的位置,伺服器會處理每個使用者傳送過來的所有場景,處理完再返回給客戶端,客戶端解析響應,渲染最新的場景展示給玩家。如果出現乙個資料報丟失,所有事情都需要停下來等待這個資料報重發。客戶端會出現接收資料,然而玩家並不關心過期的資料,激戰中卡 1 秒,等能動了已經死了。

遊戲對實時要求較為嚴格的情況下,採用自定義的可靠 udp 協議,自定義重傳策略,能夠把丟包產生的延遲降到最低,儘量減少網路問題對遊戲性造成的影響。

iot 物聯網,一方面,物聯網領域終端資源少,很可能只是個記憶體非常小的嵌入式系統,而維護 tcp 協議代價太大;另一方面,物聯網對實時性要求也很高,而 tcp 還是因為上面的那些原因導致時延大。google 旗下的nest 建立 thread group,推出了物聯網通訊協議 thread,就是基於 udp 協議的。

移動通訊領域,在 4g 網路裡,移動流量上網的資料面對的協議 gtp-u 是基於 udp 的。因為流動網路協議比較複雜,而 gtp 協議本身就包含複雜的手機上線下線的通訊協議。如果基於 tcp,tcp 的機制就顯得非常多餘。

推薦閱讀:《趣談網路協議》劉超

《計算機網路:自頂向下方法》原書第六版 陳鳴譯

UDP協議詳解

udp user data protocol 協議 使用者資料報協議 它是乙個傳輸層協議 16位udp長度 用於指定整個udp資料報的長度 它決定了乙個udp協議的資料data長度不能大於64k 8 頭部長為8 否則傳送失敗 當資料長度大於64k 8時,就需要使用者在應用層進行資料分包,將資料分成乙...

UDP協議詳解

udp協議 udp即使用者資料報協議,是一種無連線的傳輸層協議,提供面向訊息的簡單不可靠資訊傳送服務。報頭udp報頭占用8個位元組,分別是2個位元組長的源和目的埠號,以及2個位元組長的資料報長度和2個位元組長的校驗和 udp和tcp的校驗和都是基於包頭和資料本身,udp在計算校驗和時會加上12位元組...

TCP IP詳解之 UDP協議

第11章 udp協議 udp首部 udp的檢驗和是可選的,而tcp的檢驗和是必須的 udp的檢驗和是端到端的檢驗和。由傳送端計算,由接收端驗證 儘管udp的檢驗和是可選的,但總是推薦被使用 ip分片 解釋幾個術語 ip資料報 指ip層端到端的傳輸單元 在分片之前和重新組裝之後 ip分組 指在ip層和...