沒搞清運輸層的UDP協議? -哎呀, 咋來這看就好了啊

UDP協議詳解

最近在看計算機網絡自頂向下,中間會陸陸續續發出來一些筆記,每一章完整的筆記以及思維導圖會在以後在學習筆記計算機網絡專欄發出來,第一次學,如果出現錯誤,還請各位大佬指正。/抱拳


寫在前面:這裏是小王成長日誌,一名普通在校大學生,想成學習之餘將自己的學習筆記分享出來,記錄自己的成長軌跡,幫助可能需要的人,平時博客內容主要是一些系統的學習筆記,項目實戰筆記,一些技術的探究和自己的一些思考。歡迎大家關注,你們的每一個評論點贊關注我都會仔仔細細去看的。有任何問題歡迎交流,我會盡我所能幫助大家的,共創CSDN美好環境。


1.UDP協議簡介

  • UDP協議是一種簡單的運輸層協議,和它經常放在一起的還有TCP協議,兩者都是運輸層協議,但UDP是不可靠,無連接的,相較而言,TCP則可靠,面向連接。
  • 不懂什麼叫做運輸層,點進入百度百科
  • 我們需要知道UDP 協議只做了運輸協議能夠做的最少工作 。 除了複用/分解能及少量的差錯檢測外,它基本上沒有對 IP 增加別的東西 。

2.UDP傳輸報文的過程:

  • UDP 先從應用進程得到數據附加上用於多路複用/分解服務的源和目的端口號字段,以及兩個其他的小字段,然後將形成的報文段交給網絡層

  • 網絡層將該運輸層報文段封裝到一個IP數據報中,然後盡力而爲地嘗試將此報文段交付給接收主機 。

  • 如果該報文段到達接收主機UDP 使用目的端口號將報文段中的數據交付給正確的應用進程

  • 值得注意的是,使用 UDP 時,在發送報文段之前,發送方和接收方的運輸層實體之間沒有握手 。 正因爲如此, UDP 被稱爲是無連接的

3.UDP的特點

1).關於何時、發送什麼數據的應用層控制更爲精細

  • 採用 UDP 時,只要應用進程將數據傳遞給 UDP , UDP 就會將此數據打包進 UDP 報文段井立即將其傳遞給網絡層 。
  • 此外UDP可以避免TCP的擁塞控制機制,UDP協議不會理會網絡是否擁塞,只會竭盡所能一窩蜂地立馬交付數據,因此其數據交付延遲低但也可能造成網絡的堵塞。

2).無需連接建立

  • TCP 在開始數據傳輸之前要經過三次握手 。UDP 卻不需要任何準備即可進行數據傳輸 (這也是DNS採用UDP的重要原因)。
  • HTTP 使用 TCP 而不是 UDP ,因爲對於具有文本數據的 Web網頁來說,可靠性是至關重要的 。

3).無連接狀態

  • TCP 需要在端系統中維護連接狀態 ,並追蹤一些用於維護連接的參數
  • UDP 不維護連接狀態,也不跟蹤這些參數

4).分組首部開銷小

  • 每個 TCP 報文段都有 20 字節的首部開銷,而 UDP 僅有 8 字節的開銷

4.UDP的報文段結構

下面我們一起來看看UDP的報文段結構下圖是一個UDP報文段的結構示意圖
在這裏插入圖片描述

  • UDP 首部只有 4 個字段,每個字段由兩個字節(16位)組成 。
  • 通過端口號可以使目的主機將應用數據交給運行在目的端系統中的相應進程(即執行多路分解功能) 。
  • 長度字段指示了在 UDP 報文段中的字節數(首部加數據) 。 因爲數據字段的長度在一個 UDP 段中不同於在另一個段巾,故需要一個明確的長度。
  • 接收方使用檢驗和檢查在該報文段中是杏出現了差錯 。 檢驗和計算方式在後面會講到,這裏知道用處是檢驗傳輸中是否出現差錯即可。
  • 數據就是要傳輸的應用層數據,這是報文段存在的最重要的原因。

5.UDP檢驗和的計算

  • 我們之前提到UDP提供了少量的差錯檢測功能,而檢驗和就是UDP提供的少量的差錯檢測功能,即檢驗和用於確定UDP字段從源到目的地移動時,其中比特是否發生改變

檢驗和的計算方式

  • 總的方式就是將所有字段相加,若有超出則回捲(將超出部分相加到未超出部分),將最後的結果取反即是檢驗和

  • 下面舉個栗子來看看:

    • 我們給定三個16比特字段,其值如下並將其相加

      給定下列三個字
      字段1 0110 0110 0110 0000
      字段2 0101 0101 0101 0101
      前兩個字段之和 1011 1011 1011 0101
      字段3 1000 1111 0000 1100
      1 0100 1010 1100 0001
    • 將最後一個和的超出部分進行回捲

      回捲操作
      0100 1010 1100 0001
      + 1
      0100 1010 1100 0010
    • 最後將回卷完的和進行取反結果即爲1011 0101 0011 1101

    • 所以這三個字段的檢驗和就是最後的取反結果1011 0101 0011 1101

    • 再來看一遍總的流程

      流程
      字段1 0110 0110 0110 0000
      字段2 0101 0101 0101 0101
      字段3 1000 1111 0000 1100
      三個字段之和 1 0100 1010 1100 0001
      超出部分回捲 0100 1010 1100 0010
      對最後的結果取反 1011 0101 0011 1101

檢驗和出現的原因:

是由於不能保證源和目的之間的所有鏈路都提供差錯檢測;

這就是說,也許這些鏈路中的一條可能使用沒有差錯檢測的協議。

此外,即使報文段經鏈路正確地傳輸,當報文段存儲在某臺路由器的內存中時,也可能引入比特差錯 。

在既無法確保連鏈路的可靠性,又無法確保內存巾的差錯檢測的情況下,如果端到端數據傳輸服務要提供差錯檢測,所以UDP 就必須在端到端基礎上在運輸層提供差錯檢測 。

6.參考

7.同類文章推薦


都看到這裏了,各位哥哥姐姐叔叔阿姨給小王點個贊 關個注 留個言吧,和小王一起成長吧,你們的關注是對我最大的支持。


如果以上內容有任何不準確或遺漏之處,或者你有更好的意見,就在下面留個言讓我知道吧-我會盡我所能來回答。

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