《自頂向下法》學習筆記——第三章:運輸層

第三章 運輸層

1、概述和運輸層服務

0)概述
    *邏輯通信:
        a)運輸層協議爲運行在不同主機上的應用進程之間提供了邏輯通信功能;
        b)實際上這些主機可能通過很多路由器及多種不同類型的鏈路相連;
        c)應用進程使用運輸層提供的邏輯通信功能彼此發送報文,而無需考慮承載這些報文的物理基礎設施細節。
1)運輸層和網絡層的關係
    *網絡層提供了主機之間的邏輯通信,運輸層爲運行在不同主機上的進程之間提供了邏輯通信。
    *運輸層協議只工作在端系統中:
        a)運輸層協議是在端系統中,而不是在路由器中實現的;
        b)在端系統中,運輸層協議將來自應用進程的報文移動到網絡邊緣(即網絡層),但對這些報文在網絡核心中如何移動並不做任何規定。
    *運輸層協議能夠提供的服務(如時延和帶寬保證)常常受制於底層網絡層協議的服務模型。
    *但即使網絡層協議是不可靠的(存在分組丟失、篡改和冗餘),運輸層協議也能爲應用程序提供可靠的數據傳輸服務。
2)因特網運輸層概述
    *UDP協議爲調用它的應用程序提供一種不可靠、無連接的服務。
    *TCP協議爲調用他的應用程序提供一種可靠、面向連接的服務。
    *IP網際協議:
        a)IP爲主機之間提供了邏輯通信;
        b)IP的服務模型是盡力而爲交付服務,即盡他最大努力在通信主機之間交付報文段,但並不做任何確保。即它不保證報文段的交付、不保證報文段按序交付、不保證報文段中數據的完整性;
        c)由於上述原因,IP被稱爲不可靠服務。
    *運輸層的基本服務:
服務名稱 服務描述 TCP UDP
進程到進程的數據交付 通過多路複用和多路分解,將主機間交付擴展到進程間交付 提供 提供
差錯檢查 通過在其報文段部首中包括差錯檢查字段而提供完整性檢查 提供 提供
可靠數據傳輸 通過使用流量控制、序號和定時器,TCP確保正確地、按序地將數據從發送進程交付給接收進程 提供 不提供
擁塞控制 TCP擁塞控制防止任何一條TCP連接用過多的流量來淹沒主機之間的通信鏈路和交換設備 提供 不提供

2、多路複用與多路分解

0)概念:
    *運輸層的多路複用與多路分解,就是將網絡層提供的“主機到主機交付服務” -》延伸到 -》爲運行在主機上的應用程序提供“進程到進程的交付服務”。
    *過程描述:
        a)運輸層與應用層之間通過套接字發送和接收數據;
        b)套接字有唯一標識符,主機上的每個套接字分配一個唯一的端口號
        c)每個報文段有特殊字段(源端口號目的端口號)來指示該報文段所要交付到的套接字;
    *多路分解:
        報文到達目的主機 => 運輸層檢查報文段中的目的端口號 => 將報文段定向到相應的套接字 => 報文段中的數據通過套接字進入其所連接的進程
    *多路複用:
        發送源主機從不同套接字中收集數據塊 => 運輸層爲每個數據塊封裝上部首信息(包括源端口號+目的端口號)生成報文段 => 將報文段傳遞到網絡層
   
2)UDP套接字與TCP套接字
   *UDP套接字由一個二元組唯一標識——目的IP地址+目的端口號;
   *TCP套及誒由一個四元組唯一標識——源IP地址+源端口號+目的IP地址+目的端口號。
3)web服務器與TCP
    *連接套接字與進程直接並非總有着一一對應的關係。當今的高性能web服務器通常只使用一個進程,但是爲每個新進的客戶連接創建一個新的連接套接字,在任意給定時間內都可能有許多連接套接字連接到相同的進程。

3、無連接運輸-UDP

0)概述
    *UDP只是做了運輸協議能做的最少工作,除了複用/分解功能及少量的差錯檢測外,它幾乎沒有對IP增加別的東西。
    *更適用UDP的幾點:
        a)實時性=>實時應用通常不希望過分地延遲報文段的傳送,且能容忍一些數據丟失,UDP協議更爲合適;
        b)無需連接建立=>UDP不會引入建立連接的時延;
        c)無連接狀態=>TCP需要在端系統中維護連接狀態,包括接收和發送緩存、擁塞控制參數、序號和確認號等;
        d)分組部首開銷小。
1)UDP報文段結構
      
   *UDP部首隻有四個字段,每個字段由兩個字節組成:
        a)“端口號”用於實現UDP的多路分解功能;
        b)“長度字段”指示了UDP報文段的字節數(部首+數據);
        c)“校驗和”用於使接收方檢查接收到的報文段是否存在差錯。
2)UDP校驗和
    *生成方法——對UDP報文段中的所有16比特字節的和進行反碼運算,求和時遇到的任何溢出都被回捲。
    *作用:在既無法確保逐鏈路的可靠性,又無法確保內存中的差錯檢測的情況下,如果端到端數據傳輸服務要提供差錯檢測,就必須在端到端基礎上在運輸層提供差錯檢測。
    *雖然UDP提供了差錯檢測,但它對差錯恢復無能爲力。UDP的某種實現只是丟棄受損的報文段。

4、可靠數據傳輸原理

0)概述
    *可靠數據傳輸協議的職責:數據可以通過一條可靠的信道進行傳輸。藉助於可靠信道,傳輸數據比特就不會受到損壞或丟失,而且所有數據都是按照其發送順序進行交付。
    *TCP是在不可靠的(IP)端到端網絡層之上實現的可靠數據傳輸協議。
1)構造可靠數據傳輸協議
    *基本技術:校驗和,序號,定時器,ACK/NAK分組。
    *停止等待協議:當發送方處於等待ACK或NAK的狀態時,它不能從上層獲得更多的數據。
    *數據分組中的比特受損:
        a)自動重傳請求(ARQ)協議=>差錯檢測(校驗和)+接收方反饋(ACK/NAK分組)+重傳;
     *ACK或NAK分組受損:
        a)序號=>在數據分組中添加“序號”字段,讓發送方對其數據分組編號,接收方只需檢查序號即可確定收到的分組是否是一次重傳。
    *底層信道丟包:
        a)倒計數定時器+重傳=>不管是數據分組丟失、ACK分組丟失、數據或ACK分組過度延時,都進行重傳;
2)流水線可靠數據傳輸協議
    *停止等待協議缺點:有着非常低的發送方利用率。
    *流水線:不使用停等方式運行,運行發送方發送多個分組二無需等待確認。
        a)必須增加序號範圍;
        b)協議的發送方和接收方兩端也必須緩存多個分組;
        c)流水線的差錯恢復基本方法——“回退N步”和“選擇重傳”。
3)回退N步(滑動窗口協議)
    *窗口長度:流水線中未確認的分組數不能超過某個最大允許數N。
    *累積確認:對序號爲n的分組確認表明接收方已正確接收到序號n及其之前的所有分組。
    *回退N步:超時事件發生時,發送方重傳所有已發送但還未被確認過的分組。
    *接收方丟棄所有失序分組:發送方必須維護窗口的上下邊界及nextSeqnum在窗口中的位置,接收方僅需維護的唯一信息是下一個按序接收的分組的序號。 
     
4)選擇重傳
    *回退N步的性能問題:單個分組的差錯就能夠引起GBN重傳大量分組,許多分組根本沒有必要重傳。
    *選擇重傳(SR)協議:
        a)通過讓發送方僅重傳那些它懷疑在接收方出錯(丟失或受損)的分組而避免了不必要的重傳;
        b)SR接收方將確認一個正確的分組而不管其是否按序。失序的分組將被緩存直到所有丟失分組(即序號更小的分組)皆被收到爲止,這時纔可以將一批分組按序交付給上層;
        c)發送方和接收方的窗口並不總是一致;
        d)窗口長度必須小於或等於序號空間大小的一半。
     
5)可靠傳輸機制總結 
     

5、面向連接的運輸-TCP

1)TCP連接
    *面向連接:在一個應用進程可以向另一個應用進程發送數據之前,這兩個進程必須先相互“握手”。即它們必須互相發送某些預備報文段,以建立確保數據傳輸的參數。
    *TCP連接狀態完全保留在兩個端系統中,中間網絡元素(路由器和鏈路層交換機)不會維持TCP連接狀態。
    *TCP連接提供的是全雙工服務,TCP連接也總是點對點的。
    *幾個關鍵概念:
        a)三次握手;
        b)發送緩存/接收緩存,TCP連接的每一端都有各自的發送緩存和接收緩存;
        c)最大報文段長度MSS,MSS的典型值是1460字節;
     
2)TCP報文段結構
    *TCP報文段由部首字段和一個數據字段組成,TCP的部首一般是20字節。
    *當TCP發送一個大文件時,TCP通常是將該文件劃分成長度爲MSS的若干塊;然而交互式應用通常傳輸長度小於MSS的數據塊。      
     
    *序號和確認號:
        a)他們TCP報文段部首中兩個最重要的字段,是TCP可靠傳輸服務的關鍵部分;
        b)序號是建立在傳送的字節流之上,一個報文段的序號是該報文段首字節的字節流編號;
        c)主機A填充進報文段的確認號是主機A期望從主機B收到的下一個字節的序號。
    *累積確認:TCP只確認流中至第一個丟失字節爲止的字節。
3)往返時間的估計與超時
    *超時時間間隔必須大於該TCP連接的往返時間RTT,即從一個報文段發出到它被確認的時間。
    *除了測量RTT外,還需要估算RTT的變化。
4)可靠數據傳輸
    *因特網的網絡層服務(IP服務)是不可靠的。IP不保證數據報的交付,不保證數據報的按序交付,也不保證數據報中數據的完整性。對於IP服務,數據報能夠溢出路由器緩存而永遠不能到達目的地,數據報也可能是亂序到達,而且數據報中的比特也可能損壞。由於運輸層報文段是被IP數據報攜帶着在網絡中傳輸的,所以運輸層報文段也會遇到這些問題。
    *TCP在IP不可靠的盡力而爲的服務之上創建了一種可靠數據傳輸服務。TCP的可靠數據傳輸服務確保一個進程從其接收緩存中讀出的數據流是無損壞、無間隔、非冗餘和按序的數據流;即該字節流與另一方端系統發出的字節流完全相同。
    *SendBase:最早未被確認的字節序號。
    *累積確認:TCP採用累積確認,所以y確認了字節編號在y之前的所有字節都已經收到。
    *超時時間間隔加倍:發生超時事件時,每次TCP重傳都會將超時間隔設爲先前值的兩倍。然而每當定時器在另外兩個事件(即收到上層應用的數據和收到ACK)中的任意一個啓動時,超時間隔都經過重新推算得到。
    *快速重傳:如果TCP發送方接收到對相同數據的3個冗餘ACK,它把這當做一種指示,說明跟在這個已經被確認過3次的報文段之後的報文段丟失。TCP就執行快速重傳,即在該報文段的定時器過期之前重傳丟失的報文段。
    *TCP的差錯恢復機制也許更像回退N步和選擇重傳的混合體。
5)流量控制
    *一條TCP連接每一側主機都爲該連接設置了接收緩存。當該TCP連接收到正確、按序的字節後,它就將數據放入接收緩存。相關聯的應用進程會從該緩存中讀取數據,但不必是數據剛一到達就立即讀取。
    *TCP爲它的應用程序提供了流量控制服務以消除發送方使接收方緩存溢出的可能性。流量控制是一個速度匹配服務,即發送放的發送速率與接收方應用程序的讀取速率相匹配。
    *TCP通過讓發送方維護一個稱爲“發送窗口”的變量來提供流量控制。主機B通過把當前的rwnd值放入它發給主機A的報文段的接收窗口字段中,通知主機A它在該連接的緩存中還有多少可用空間。
    *當主機B的接收窗口爲0時,主機A繼續發送只有一個字節數據的報文段。
    *UDP並不提供流量控制。
6)TCP連接管理
     
     
     
    *創建連接——3次握手:
        a)server接收到client的TCP SYN報文段時,會爲該TCP連接分配緩存和變量,並返回給client端SYNACK報文段;
        b)client端收到SYNACK報文段後,客戶端也會給該TCP連接分配緩存和變量。
    *連接結束——4次揮手 :
        a)當連接結束後,主機中的資源(即緩存和變量)將被釋放。

6、擁塞控制原理

1)擁塞原因與代價
    *分組重傳常被作爲網絡擁塞的徵兆,但是卻無法處理導致網絡擁塞的原因。爲了處理網絡擁塞原因,需要一些機制以在面臨網絡擁塞是遏制發送方。
2)擁塞控制方法
    *端到端擁塞控制:
        a)即使網絡中存在擁塞,端系統也必須通過多網絡行爲的觀察(如分組丟失與時延)來推斷之;
        b)TCP必須通過端到端的方法來解決擁塞控制,TCP報文的丟失(超時或3次冗餘確認)被認爲是網絡擁塞的一個跡象,TCP會相應減少其窗口長度。
    *網絡輔助的擁塞控制:網絡層構件(即路由器)向發送方提供關於網絡中擁塞狀態的顯式反饋信息。

7、TCP擁塞控制

0)概述
    *因爲IP層不向端系統提供顯式的網絡擁塞反饋,TCP必須使用端到端擁塞控制。
    *TCP所採用的方法是讓每一個發送方根據所感知到的網絡擁塞程度,來限制其能向連接發送流量的速率。
        a)運行在發送方的TCP擁塞控制機制跟蹤一個額外的變量,即擁塞窗口cwnd,在一個發送方中未被確認的數據量不會超過cwnd與rwnd中的最小值;
        b)TCP使用確認(網絡上傳輸的報文被成功地交付給目的地)來觸發增大它的擁塞窗口長度;
        c)一個丟失的報文段意味着擁塞,因此當丟失報文段時會降低TCP發送方的速率,減小它的擁塞窗口長度。
1)TCP擁塞控制算法
    *慢啓動:
        a)cwnd的值以一個MSS開始,並且每當傳輸的報文段首次被確認cwnd的值就增加一個MSS;
        b)TCP發送速率起始慢,但在慢啓動接待以指數增長;
        c)如果產生由超時導致的丟包事件,TCP發送方將cwnd設置爲1並重新開始慢啓動過程,同時將“慢啓動閾值”設置爲cwnd/2;
        d)當達到或超過“慢啓動閾值”時,繼續使cwnd翻番可能有些茹莽,此時TCP結束慢啓動並轉移到擁塞避免模式。
    *擁塞避免:
        a)TCP無法每過一個RTT將cwnd的值翻番,而是採用一種較爲保守的方法,每個RTT只將cwnd的值增加一個MSS;
        b)出現TCP超時丟包時,TCP發送方將cwnd設置爲1並重新開始慢啓動過程,同時將“慢啓動閾值”設置爲cwnd/2,然後進入慢啓動狀態;
        c)連續3個冗餘ack發生時,TCP將cwnd的值減半,同時將“慢啓動閾值”設置爲cnwd/2,然後進入快速恢復狀態。
    *快速恢復:
        a)對於引起TCP進入快速恢復狀態的缺失報文段,對收到的每個冗餘的ACK,cnwd的值增加一個MSS;
        b)快速恢復是TCP推薦而非必須的構件。
    *小結:TCP的擁塞控制是每個RTT內cwnd線性增加1MSS,然後出現3個冗餘ACK時cwnd減半,因此TCP擁塞控制方式常被稱爲“加性增、乘性減”。
     
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章