計網考點:傳輸層—TCP擁塞控制的過程和TCP的流量控制

  • TCP擁塞控制的過程。(四個狀態都要解釋清楚)算法

    • 在某段時間裏,對網絡中某一資源的需求超過可用範圍,也就是供不該求,網絡性能就會降低。這種情況,就是擁塞緩存

    • 研究的前提網絡

      1. 數據是單方向傳送的,另外一個方向只傳送確認
      2. 接收方老是有足夠大的緩存空間,於是發送方發送窗口的大小由網絡的擁塞程度來決定
      3. 以最大報文段MSS的個數爲討論問題的單位,而不是以字節爲單位
    • 若出現擁塞而不控制,整個網絡的吞吐量將隨輸入負荷的增大而降低
      性能

  • 發送方要維護一個擁塞窗口cwnd的狀態變量,其值取決於網絡的擁塞程度,而且動態變化3d

    • 擁塞窗口cwnd的維護原則:只要網絡沒有出現擁塞,擁塞窗口就在增大一些;只要出現擁塞,擁塞窗口就減少一些
    • 判斷出現網絡擁塞的依據:沒有按時收到應當到達的確認報文(即發生超時重傳)
  • 發送方將擁塞窗口做爲發送窗口swnd,即swnd=cwndcode

  • 維護一個慢開始門限ssthresh狀態變量:blog

    • 當cwnd<ssthresh時,使用慢開始算法
    • 當cwnd>ssthresh時,中止使用慢開始算法而改用擁塞避免算法
    • 當cwnd=ssthresh時,既可使用慢開始算法,也可使用擁塞避免算法
  • 四種擁塞控制算法:慢開始(slow-start)、擁塞避免(congestion avoidance)、快重傳(fast retransmit)、快恢復(fast recovery)資源

    • 若重傳計時器超時,則判斷網絡可能出現擁塞:it

      1. 將ssthresh值更新爲發生擁塞時cwnd的一半
      2. 將cwnd值減少爲1,並從新開始慢開始算法
    • 慢開始io

      • 慢開始算法下,擁塞窗口數量隨着傳播輪次指數增加,不斷翻倍
      • 慢開始是指一開始的報文段少,而不是擁塞窗口增加速度滿
    • 擁塞避免

      • 擁塞避免算法下,擁塞窗口數量隨着傳播輪次,不斷+1,線性增加
      • 擁塞避免算法沒法徹底避免擁塞,只是讓擁塞窗口線性增加,網絡不容易出現擁塞

      ---------------慢開始和擁塞避免算法是最開始出現的---------------

      有時個別報文段丟失會被誤認爲發送擁塞,錯誤減少擁塞算法,下降效率。爲了解決這個問題,增長了後兩個算法

    • 快重傳

      • 快重傳算法可讓發送方儘快知道發生了個別報文段的丟失

      • 快重傳就是讓發送方儘快開始重傳,而不是等待超時重傳計時器超時再重傳

        • 要求接收方不要等待發送數據時才進行稍待確認,而是要當即確認
        • 即便收到了失序的報文段也要當即發出對已收到的報文段的重複確認
        • 發送方一旦受到了三個連續的重複確認,就將相應的報文段當即重傳,而不是等待該報文段的超時重傳計時器超時再重傳
        • 快重傳可使整個網絡的吞吐量提升20%

    • 快恢復

      • 發送端收到了三個重複確認,就知道如今只是丟失了個別報文段,啓動快恢復算法。
      • 發送方將慢開始門限ssthresh值和擁塞窗口cwnd值調整爲當前窗口的一半;開始執行擁塞避免算法
      • 也有的快恢復實現十八恢復開始時二點擁塞窗口值cwnd增大一些,也就是ssthresh+3
        • 既然發送方收到3個重複確認,表面有3個數據報文段已經離開了網絡
        • 這三個報文段再也不消耗網絡資源而是停留在接收緩存中
        • 因此如今的網絡不是堆積了報文段,而是減小了,能夠把窗口擴大些
  • TCP的流量控制

    • 流量控制說白了就是讓發送方不要傳的那麼快,太快了來不及接收

    • 利用滑動窗口能夠很方便地在TCP鏈接上實現對發送方的流量控制

      • seq=1 DATA:seq取值1,表示TCP報文段數據載荷的第一個字節的序號是1
      • DATA表示該報文段爲TCP數據報文段
      • ACK:TCP報文段首部中的標誌位,取值1表示這是TCP確認報文段
      • ack:TCP報文段首部中的確認號字段,取值201表示序號201之前都正確接受,等待接受201後的數據
      • rwnd:TCP報文段首部中的窗口字段,取值300表示,接受窗口改成300
    • 只要TCP鏈接的一方,收到對方的零窗口通知,就啓動一個持續計時器,若超時,就發送一個零窗口探測報文(只攜帶1字節數據),接收方在收到探測報文段時,給出本身的接收窗口值。若依然是0,就重啓計時器。

    • 事實上,TCP規定,即便接收窗口爲0,也必須接收零窗口探測報文段、確認報文段、帶有緊急數據的報文段

    • 零窗口探測報文段也有重傳計時器,超時就重傳。

相關文章
相關標籤/搜索