天天看點

計算機網絡第三章-運輸層概述、多路複用與多路分解 -運輸層一、運輸層概述二、多路複用和多路分解

計算機網絡第三章-運輸層概述、多路複用與多路分解 -運輸層

  • 一、運輸層概述
    • 1.1 運輸層是幹啥的?
    • 1.2 運輸層與網絡層的關系
    • 1.3 關于運輸層概述中其他需要補充的知識點
  • 二、多路複用和多路分解
    • 2.1 一些小知識點
    • 2.2 無連接配接的多路複用與多路分解
    • 2.3 面向連接配接的多路複用與多路分解

一、運輸層概述

1.1 運輸層是幹啥的?

運輸層頭頂應用層腳踢網絡層,擁有TCP/UDP2大協定,而且在3兄弟中隻有運輸層中的TCP可以提供可靠的傳輸服務。運輸層是提供程序間的邏輯通信。

運輸運輸,這個名字差點以為他是開大貨車的是吧?NONONO他就是個居家辦公的舒适boy,他就隻作用與端系統,和通信過程中經過的路由等都沒有關系。(是以我們又可知路由器中沒有運輸層,從底層開始算隻到網絡層)。

在繼續下面的筆記時,我們在這裡規定,在運輸層進行包裝的分組稱為封包段。

他主要的工作有2個,将主機收到的網絡層消息進行處理得到運輸層封包段并分發到對應的程序中的套接字。(這裡有點繞,具體在後面多路複用與分解會說到)上面這個工作被稱為多路分解就是在家裡發包裹給家裡人。另外一個工作是将家裡要寄出去的包裹(每個程序要發送的封包)進行收集,然後填好快遞單(進行運輸層協定包裝)拿給郵政系統(網絡層)。這個工作被稱為多路複用。

那運輸層如何填快遞單(如何将接收到的封包轉換成運輸層分組)?

運輸層将封包拆分為較小的塊,并為每一個塊添加上一個運輸層首部以生成運輸層封包段。

1.2 運輸層與網絡層的關系

運輸層的運輸協定能提供的服務常常受制于底層網絡層協定的服務模型。如果網絡層協定無法為主機之間發送的應用程式封包提供時延或寬帶保證的話,運輸層協定也沒有辦法保證。那怎麼辦呢?這個在後面的文章中會講。但是我先說明一下TCP還是可以在網絡層沒有保證的時候進行保證。

1.3 關于運輸層概述中其他需要補充的知識點

  1. UDP隻能提供單個封包段的資料傳遞和差錯檢測這2個服務,而無法保證正确的、順序的多個封包段組成的資訊的正誤。而TCP可以保證多個封包段組成的資訊的正确傳輸,TCP還可以提供阻塞控制,防止任何一條TCP連接配接使用過多的流量。從端系統的流量控制開始,對整個網絡進行調節。通過調節TCP發送端發送進網絡的流量速率來實作。

二、多路複用和多路分解

2.1 一些小知識點

  1. 接收主機中的運輸層實際上并沒有總結将資料傳遞給程序,而實将資料傳遞給了中間的套接字,也就是我們上一篇文章中所模拟的python代碼中的socket。是以在運輸層和應用層中間還有一個套接字進行連接配接。
  2. 運輸層是如何讓封包認識對應程序下的對應套接字?

    我們從上一篇文章中的UDP用戶端和UDP伺服器代碼中可知運輸層是通過端口号将其定向到對應的套接字,但是TCP還有一個例外就是需要确定請求方的IP和端口号。

2.2 無連接配接的多路複用與多路分解

  1. 關于申請的端口号會不會在請求方主機上有沖突的解答:可以由主機的運輸層通過建立一個socket的時候自動給你配置設定端口進行解決。或者你自己使用bind((’’,xxxxx))函數對端口号進行指定。
  2. 每個主機都能一些多個程序,每個程序都有自己對應的端口号。
  3. 因為UDP的套接字隻通過請求方的目的IP和目的端口來識别請求方,是以不同的請求方有可能進入同一個套接字。所有人可以共用一個套接字。

2.3 面向連接配接的多路複用與多路分解

  1. 對應2.2 中的3,TCP的套接字就需要通過請求方IP與端口号,目的方IP和端口号進行識别,是以隻有當上面4個值都相同時才會進入同一個套接字中。但是握手連接配接使用的套接字是一個例外。
  2. 連接配接套接字與程序之間并非總是一一對應的關系,有可能是與程序中的線程是一一對應的關系。

繼續閱讀