計算機網絡學習(四)傳輸層Ⅰ

正在學習計算機網絡課程,以下是學習《計算機網絡-自頂向下方法》的一些筆記,部分圖片來自mooc網 哈爾濱工業大學 計算機網絡課程:https://www.icourse163.org/course/HIT-154005


運輸層位於應用層和網絡層之間,是分層的網絡體系結構的重要部分。 該層爲運行在不同主機上的應用進程提供直接的通信服務起着至關重要的作用。與往常一 樣,我們將特別關注因特網協議,即 TCP 和 UDP 運輸層協議。

1.傳輸層服務

1.1 傳輸層服務與協議

  • 傳輸層協議爲運行在不同主機上的進程提供了一種邏輯通信 (logic communication) 功能(非物理通信)。
    • 通過邏輯通信,運行不同進程的主機好像直接相連一樣;
    • 實際上,這些主機也許位於地球的兩側,通過很多路由器及多種不同類型的鏈路相連。
    • 應用進程使用傳輸層提供的邏輯通信功能彼此發送報文,而無需考慮承載這些報文的物理基礎設施的細節
  • 傳輸層協議是在端系統中而不是在路由器中實現的。
    • 發送方:將應用遞交的消息分成一個或多個的報文段(segment),並向下傳遞給網絡層
    • 接收方:將接收到的 segment 組裝成消息,並向上交給應用層
  • 網絡應用程序可以使用多種的傳輸層協議。 例如,因特網有兩種協議,即 TCP 和 UDP。 每種協議都能爲調用的應用程序提供一組不同的傳輸層服務。

1.2 傳輸層 vs 網絡層

  • 網絡層提供了主機之間的邏輯通信
  • 傳輸層爲運行在不同主機上的進程之間提供了邏輯通信。
  • 關係類比:
    • 有兩個家庭, 一家位於美國東海岸,一家位於美國西海岸,每家有 12 個孩子。 每人每星期要互相寫一封信,每封信都用單獨的信封通過傳統的郵政服務傳送。
    • 每個家庭有個孩子負責收發郵件,西海岸家庭是Ann 而東海岸家庭是 Bill。每星期Ann去她的所有兄弟姐妹那裏收集信件,並將這些信件交到每天到家門口來的郵政 服務的郵車上。 當信件到達西海岸家庭時, Ann 也負責將信件分發到她的兄弟姐妹手上。 bill的工作相同。
    • 在這個例子中,郵政服務爲兩個家庭間提供邏輯通信,郵政服務將信件從一家送往另一家,而不是從一個人送往另一個人。
    • Ann和 Bill爲堂兄弟姐妹之間提供了邏輯通信, 從堂兄弟姐妹們的角度來看, Ann和 Bill 就是郵件服務,儘管他們只是端到端交付過程的一部分(即端 系統部分) 。
      • 堂兄弟姐妹 = 應用進程
      • 信封裏的信 = 應用層報文
      • 房子 = 主機(端系統)
      • Ann、Bill = 傳輸層協議
      • 郵政服務 = 網絡層協議
    • Ann 和 Bill 並沒有參與任何一箇中間郵件中心對郵件進行分揀,或者將郵件從一個郵件中心 送到另一個郵件中心之類的工作。 類似地,運輸層協議只工作在端系統中。 在端系統中, 運輸層協議將來自應用進程的報文移動到網絡邊緣(即網絡層) ,反過來也是一樣,但對有關這些報文在網絡核心如何移動並不作任何規定。
    • Ann 和 Bill 所能提供的服務明顯受制於郵政服務所能提供的服務。與此類似,運輸協議能夠提供的服 務常常受制於底層網絡層協議的服務模型。

1.3Internet 傳輸層協議

  • TCP (傳輸控制協議) ,它爲調用它的應用程序提供了一種可靠的、按序的、面向連接的服務。
    • 擁塞控制
    • 流量控制
    • 建立連接
  • UDP (用戶數據報協議) ,它爲調用它的應用程序提供 了一種不可靠、無連接的服務。
    • 基於“盡力而爲(best-effect)”的網絡層,沒有做可靠性方面的擴展
  • 兩種服務均不保證延遲和帶寬

2.多路複用/分用

  • 接收端進行多路分用:傳輸層依據頭部信息將接收到的 segment 交給正確的 socket,即不同的進程
  • 發送端進行多路複用:從多個 socket 接收數據,爲每塊數據封裝上頭部信息,生成 segment,交給網絡層
  • 如何工作?
    • 主機接收到 IP 數據報(datagram)
      • 每個數據報攜帶源 IP 地址和目的 IP 地址
      • 每個數據報攜帶一個傳輸層的段(segment)
      • 每個段攜帶源端口號和目的端口號
    • 主機收到 segment 後,傳輸層協議提取 IP 地址和端口號信息,將 segment 導向相應的 socket
  • 無連接的分用
    • UDP的Socket 用二元組(目的 IP 地址,目的端口號)來標識
    • 當主機收到UDP段後,檢查該段中的目的端口號,將該UDP段導向綁定在該端口號的Socket
    • 來自不同源 IP 地址或源端口號的 IP 數據包被導向同一個Socket
  • 面向連接的分用
    • TCP的Socket 用四元組(源 IP 地址,源端口號,目的 IP 地址,目的端口號)來標識
    • 接受端將利用這四個值將segment 導向合適的Socket

3.UDP:無連接傳輸協議

3.1UDP概述

  • 基於Internet IP 協議: UDP 只是做了運輸協議能夠做的最少工作。 除了複用/分解功 能及少量的差錯檢測外,它幾乎沒有對 IP 增加別的東西。
  • UDP 從應用進程得到數據,附加上用於多路複用/分解服務的源和目的端口號字段,以及兩個其他的小字段, 然後將形成的報文段交給網絡層。
  • 網絡層將該運輸層報文段封裝到一個 IP 數據報中,然後盡力而爲地嘗試將此報文段交付給接收主機。 因此,UDP段可能丟失或非按序到達
  • 使用 UDP 時,在發送報文段之前,發送方和接收方的運輸層實體之間沒有握手。因此, UDP 被稱爲是無連接的
  • DNS 是一個通常使用 UDP 的應用層協議的例子。
  • 有許多應用更適合用 UDP,原因:
    • 關於何時、發送什麼數據的應用層控制更爲精細
    • 無需連接建立( 因此 UDP 不會引人建立連接的時延,這可能是 DNS 運行在 UDP 之上而不是運行在 TCP 之上的主要原因)
    • 無連接狀態(UDP 不維護連接狀態,也不跟蹤這些相關參數。 因此,某些專門用於某種特定應用的 服務器當應用程序運行在 UDP 之上,一般都能支持更多的 活躍客戶 )
    • 分組首部開銷小

3.2 UDP報文段結構

在這裏插入圖片描述

  • 通過端口號可以使目的主機將應用數據交給運行在目的端系統中的相應進程(即執行分解功能)
  • 長度字段指示了在 UDP 報文段中的字節數(首部加數據) 。
  • 接收方使用檢驗和來檢查在該報文段中是否出現了差錯。

3.3 UDP校驗和(checksum)

  • 目的:檢查UDP段在傳輸過程中是否發生了錯誤(如位翻轉)
  • 發送方:
    • 將段的內容視爲16-bit 整數
    • 計算校驗和:發送方的 UDP 對報文段中的所有 16 比特字的和進行反碼運算, 求和時遇到的任何溢出都被回捲(wraparound,最高位的進位加在和的後面)
    • 發送方將校驗和放入校驗和字段
  • 接收方:
    • 全部的 4 個 16 比特字**(包括檢驗和)加在一起。 如果該分組中沒有引人差錯,則顯然在接收方處該和將是 1111111111111111**
    • 如果這些比特之一是 0 ,那麼我們就知道該分組中已經出現了差錯。
  • 校驗和計算示例:
    在這裏插入圖片描述
  • 爲什麼 UDP 首先提供了檢驗和?
    • 不能保證源和目的之間的所有鏈路都提供差錯檢測;這就是說,也許這些鏈路中的一條可能使用沒有差錯檢測的協議。
    • 此外,即使報文段經鏈路正確地傳輸,當報文段存儲在某臺路由器的內存裏時,也可能引入比特差錯。
    • 在既無法確保連鏈路的可靠性,又無法確保內存裏的差錯檢測的情況下, 如果端到端數據傳輸服務要提供差錯檢測.,UDP 就必須在端到端基礎上在運輸層提供差錯檢測 。 這是一個在系統設計中被稱頌的端到端原則( end -end principle) 的例子 。
  • 雖然 UDP 提供差錯檢測,但它對差錯恢復無能爲力 。 UDP 的某種實現只是丟棄受損的報文段;其他實現是將受損的報文段交給應用程序並給出警告。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章