運輸層(一)UDP協議詳解

前言:

來源於《計算機網絡自頂向下方法》,這學期在上計網的課程,順路就補一補相關知識,UDP / TCP平時聽得多了,這次跟住這本書來深入瞭解一下吧。

運輸層

首先udp/tcp是運輸層的協議,我們先來了解一下運輸層的概念。

運輸層協議爲不同主機上的應用程序提供邏輯通信功能,通過邏輯功能,運行不同進程的主機好像直接相連,在發送端,運輸層將發送應用程序進程接收到的報文轉換成運輸層分組(運輸層報文段)。實現的方法將應用報文劃分成較小的塊,併爲每塊加上一個運輸層首部以生成運輸層報文段並向目的地發送。在接收端,網絡層從數據包中提取到運輸層報文段,並將該報文段上交給運輸層。運輸層則處理接收到的報文段,使該報文段中的數據爲接受應用進程使用。

運輸層的多路複用與多路分解

從主機之間交付(網絡層ip)到進程之間交付被稱爲運輸層的多路複用和多路分解

運輸層報文段的結構圖:
在這裏插入圖片描述

多路複用: 在源主機從不同套接字中手機數據塊,併爲每一個數據塊封裝上首部信息(這將以後用於分解)從而生成報文段,然後將報文段傳遞到網絡層
多路複用的要求:1.套接字有唯一的標識符 2.每段報文段有特殊字段來指示該報文段要交付到的套接字。如上圖這些特使的字段是源端口號字段和目的端口號字段。
多路分解: 每個運輸層報文段中具有幾個字段,在接收端,運輸層檢查這些字段,標示出接受套接字,進而將報文段定向到該套接字,將運輸層報文段中的數據交付給正確的套接字
在主機上的每一個套接字能夠分配一個端口號,當報文到達主機時,運輸層檢查豹紋中的目的端口號,並將其定向到相應的套接字,然後報文中的數據通過套接字進入所連接的進程

無連接的多路複用和多路分解

基本和運輸層的基本概念無差,因爲udp只做了運輸協議做的最少工作。一個udp套接字由一個二元組全面標識的,該二元組包含一個目的ip地址和一個目的端口號,因此如果兩個udp報文段有不同的源ip地址和或者源端口號,但是有相同的目的ip地址和目的端口號,那麼這兩個報文將通過相同的目的套接字被定向到相同的目的進程

無連接運輸:UDP

定義的udp只做了運輸協議能夠做的最少工作,除了複用、分解功能和少量的差錯檢測外,他幾乎沒有對IP新增別的東西。使用udp時,在發送報文段之前,發送方和接收方的運輸層實體之間沒有握手,so,udp被稱爲是無連接的。
UDP協議特點:

  • 無需鏈接建立
    tcp鏈接開始數據傳輸之前要經過三次握手,udp則不需要任何準備即可開始進行數據傳輸,因此udp不會引入建立鏈接的時延
  • 無連接狀態
    因爲無連接,所以不可靠,數據包會丟失,不可靠協議
  • 分組首部開銷少
    每個tcp報文段都有20字節的首部開銷,而udp只有8字節的開銷
  • UDP使用盡最大努力交付,即不保證可靠交付,不需要維持複雜的連接狀態表
  • 面向報文的傳輸
    面向報文的傳輸方式是應用層交給UDP多長的報文,UDP添加首部後就照樣發送,即一次發送一個報文。因此,應用程序必須選擇合適大小的報文。若報文太長,則IP層需要分片,降低效率。若太短,會是IP太小。UDP對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界。這也就是說,應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。

UDP報文段結構

在這裏插入圖片描述

  • 各16bit的源端口和目的端口用來標記發送和接受的應用進程。因爲UDP不需要應答,所以來源端口是可選的,如果來源端口不用,那麼置爲零。
  • 報文長度域,用來指定udp報文段中的字節數(首部➕數據),長度最小值爲8byte。
  • 首部剩下地16bit是用來對首部和數據部分一起做校驗和(Checksum)

UDP 檢驗和

udp檢驗和提供了差錯檢測功能。到底是如何的一個操作呢?
發送方的udp對報文段中所有的16bit的和進行反碼運算(c此時還沒有檢驗和),即全部16bit相加,溢出的都被回捲,隨後得到一個16bit的檢驗和,在接收方在將所有的16bit加在一起包括檢驗和,如果沒有引入差錯,則接收方顯示的將是1111111111111111 如果有其中一個爲0則出現了差錯。
在這裏插入圖片描述注意:
1.校驗時,若UDP數據報部分的長度不是偶數個字節,則需要填入一個全0字節,但是次字節和僞首部一樣,是不發送的。
2.如果UDP校驗和校驗出UDP數據報是錯誤的,可以丟棄,也可以交付上層,但是要附上錯誤報告,告訴上層這是錯誤的數據報。

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