計算機網路學習筆記:第三章
學習書籍:《計算機網路:自頂向下方法》 第三章:運輸層
其他章節請參閱:
《計算機網路:自頂向下方法》 第一章:計算機網路和因特網
《計算機網路:自頂向下方法》 第二章:應用層
《計算機網路:自頂向下方法》 第三章:運輸層
文章目錄
- 計算機網路學習筆記:第三章
- 前言
- 3.1、概述和運輸層服務
- 3.1.1 運輸層和網路層的關系
- 3.1.2 因特網運輸層概述
- 3.2、多路復用與多路分解
前言
運輸層位于應用層和網路層之間,是分層的網路體系的重要部分;該層為運行在不同主機上的應用行程提供直接的通信服務起著至關重要的作用,在這里我們將討論兩個大的問題:將網路層在不同端系統之間的通信服務擴充到運行在兩個端系統上不同的應用層行程之間的通信服務(如何實作進城之間通信的可靠傳輸)和控制傳輸層物體的傳輸速度以避免網路擁塞或者從網路擁塞中恢復過來,這里需要考慮的有擁塞的后果和原因以及常見的擁塞控制手段;特別的,我們將了解TCP協議中的擁塞控制,
3.1、概述和運輸層服務
傳輸層協議為運行在不同端系統上的應用行程之間提供邏輯通信功能;應用層行程使用傳輸層提供的邏輯通信功能而無需考慮實作通信的物理基礎設施的細節;
傳輸層協議是在端系統中實作的而不是在路由器中實作的,傳輸層接收來自應用層的報文并通過添加傳輸層首部以生成傳輸層報文段,在生成程序中可能會對來自應用層的報文加以分割;然后在發送端系統中,運輸層會將這些報文段交給網路層;網路層將其封裝成網路層分組,也被稱為資料報,然后向目的地發送,路由器不會檢查封裝在資料報中的傳輸層報文段的欄位;在接收端,網路層從資料報中抽取傳輸層報文段,并將其交給運輸層,運輸層接收到報文段后,使該報文段中的資料被接收應用行程所使用,
網路應用可以使用多種傳輸層協議,因特網有兩種傳輸層協議,即TCP和UDP,不同的傳輸層協議提供不同的運輸層服務;
3.1.1 運輸層和網路層的關系
在協議堆疊中,運輸層剛好位于網路層之上;網路層提供主機之間的邏輯通信而傳輸層為運行在不同主機上的應用行程提供邏輯通信;運輸層協議只作業在端系統中,在端系統中,傳輸層協議將來自應用行程的報文移動到網路邊緣即網路層,反過來也從網路層接收這些報文段;傳輸層對報文段如何在網路核心傳輸并不做干涉;事實上中間路由器既不處理也不識別傳輸層加載應用層報文上的任何資訊;
運輸層協議能提供的服務常常受制于底層網路層協議的服務型別,如果網路層協議無法為主機之間的通信提供時延和帶寬保證的話,運輸層協議也就無法為行程之間發送的應用程式報文提供時延或者帶寬保證;
然而即使底層網路協議不能在網路層提供回應的服務,運輸層協議也能提供某些服務,例如,即使底層網路協議是不可靠的,運輸協議也能為應用程式提供可可靠的資料傳輸服務(即使底層網路協議不可靠,使分組丟失和篡改,運輸協議也能為應用程式提供可靠的的資料傳輸服務),
3.1.2 因特網運輸層概述
因特網為應用層提供了截然不同的兩種傳輸層協議:UDP(用戶資料報協議)它提供一種不可靠、無連接的服務;另一種是TCP,它提供可靠的,面向連接的服務;運輸層分組也被稱為報文段;
簡單了解一下因特網的網路層,網路層協議有一個名字即IP,即網際協議,IP為主機間提供邏輯通信,IP的服務模型為盡力而為交付服務(best-effort delivery service)這意味著IP盡最大的努力在主機間交付報文段,但是不做任何保證,它不保證報文段的交付、不保證報文段按序交付、不保證報文段中資料的完整性;即IP提供一種不可靠的服務;每臺主機都需要有一個網路層地址,即IP地址,
UDP和TCP最基本的責任就是將IP提供的主機間交付服務擴展到不同端系統上兩個行程之間的服務,這也被稱為傳輸層的多路分解和多路復用;UDP和TCP通過在傳輸層首部添加差錯檢查欄位來提供完整性檢查,行程到行程之間的資料交付和差錯檢查是最低限度的兩種傳輸層服務,也是UDP可以提供的僅有的兩種服務,UDP和IP一樣,也是不可靠服務;
TCP提供額外的服務,首先它是一種可靠資料服務,這意味著TCP協議保證資料的按序、完整地從發送端應用行程發送到接收端應用行程;TCP通過流量控制、序號、確認和定時器,將IP的不可靠資料傳輸轉換為可靠資料傳輸;其次,TCP提供擁塞控制,擁塞控制與其說是一種提供給應用程式的服務,不如說是一種提供給整個網路的服務,因為整個網路都將因為擁塞控制而受益;不太嚴格地說,擁塞控制力求為每一個經過一條擁塞網路的連接提供平等的共享網路鏈路帶寬,從而避免一條TCP連接用過多的流量來淹沒通信主機之間的鏈路和設備;TCP的擁塞控制是通過調節發送進網路的的流量速率來做得到;UDP不提供擁塞控制,使用UDP傳輸的應用程式可以根據需要以任意的速率發送資料,
3.2、多路復用與多路分解
前文提到,傳輸層將網路層提供的面向主機的邏輯通信擴充為面向不同應用行程的邏輯通信,并且這一程序稱為多路復用和多路分解;多路復用和多路分解是每個計算機網路都需要的;
在目的主機,運輸層從緊鄰其下的網路層接收報文段;運輸層負責將這些報文段中的資料交付給在主機上運行的應用程式行程; 2.7節提到,一個行程有一個或者多個套接字,相當于從網路向行程傳遞資料和從行程向網路傳遞資料的門戶;傳輸層和應用程式行程之間通過套接字關聯,接收主機的運輸層實際上并沒有直接將資料交付給行程,而是將將資料交付給中間的一個套接字;在任一時刻,接收主機上可能不止一個套接字,每個套接字都有唯一識別符號;
傳輸層從同一臺主機上的不同Socket接收資料的程序稱為多路復用;傳輸層向同一臺主機上的不同Socket傳輸資料的程序稱為多路分解;為了實作多路復用和多路分解,我們需要標志套接字,并將相關資訊添加到報文段中,
傳輸層多路復用要求:1)套接字有唯一識別符號;2)每個報文段都有源埠號欄位和目的埠號欄位來指示該報文段所要交付到的套接字;
埠號大小在0-65535之間,其中0-1023屬于周知埠號,它們為特定的Socket而擁有,
運輸層如何實作分解服務:主機上每個套接字能分配一個埠號;報文達到主機時,運輸層檢查報文段的目的埠號,并將其定向到相應套接字,然后報文段中資料通過套接字進入其所連接的行程;UDP大致是這樣做的,TCP更復雜;
無連接的多路復用與多路分解
需要注意的是,在創建Socket的時候,是由傳輸層為之分配埠號;一個UDP套接字是由一個目的IP地址和目的埠號(即二元組)來標志的;如果兩個UDP報文段有不同的源IP地址或者源埠號,但是有相同的目的IP和目的埠號的話,它們將通過同一個Socket到達同一個應用程式;
源埠號的用途:例如A到B的報文段中,源埠號作為“回傳地址”的一部分,即當B要回發一個報文段給A,B到A的報文段中的目的埠號便從A到B的報文段中的源埠號取值(完整回傳地址還包括A的IP地址);
面向連接的多路復用和多路分解
TCP協議中的Socket是通過一個四元組來標記的:(源IP地址,源埠號,目的IP地址,目的埠號);兩個具有不同源IP地址或者源埠號,但有相同的目的IP地址和目的埠號的TCP報文段將通過兩個不同的Socket進入同一應用行程;這也表示,一個應用行程可以關聯多個Socket,而一個Socket將只關聯一個應用行程;常常,這樣的對應關系是通過執行緒來實作的:一個行程有多個執行緒,而每個執行緒關聯了一個Socket;這樣做可以提高服務器性能;
實際上,傳輸層就是根據這些資訊來實作多路分解的;而這些資訊是在多路復用的時候被放置在報文段中的;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224803.html
標籤:其他
上一篇:小白C語言-基礎知識篇1
