示意圖
  • 具體解決方案
    共分為2個解決方案:慢開始 & 擁塞避免、快重傳 & 快恢復

其中,涉及4種演算法,即 慢開始 & 擁塞避免、快重傳 & 快恢復

具體介紹如下

解決方案1:慢開始 & 擁塞避免

1.1 儲備知識:擁塞視窗、慢開始演算法、擁塞避免演算法

a. 擁塞視窗

  • 傳送方維持一個狀態變數:擁塞視窗(cwnd, congestion window ),具體介紹如下
示意圖

b. 慢開始演算法

  • 原理
    當主機開始傳送資料時,由小到大逐漸增大 擁塞視窗數值(即 傳送視窗數值),從而 由小到大逐漸增大發送報文段

  • 目的
    開始傳輸時,試探網路的擁塞情況

  • 具體措施

示意圖
  • 示意圖
示意圖
  • 特別注意
    慢開始的“慢”指:一開始傳送報文段時擁塞視窗(cwnd)設定得較小(為1),使得傳送方在開始時只發送一個報文段(目的是試探一下網路的擁塞情況)

並不是指擁塞視窗(cwnd)的增長速率慢

c. 擁塞避免 演算法

  • 原理
    使得擁塞視窗(cwnd)按線性規律 緩慢增長:每經過一個往返時間RTT,傳送方的擁塞視窗(cwnd)加1
  1. 擁塞避免 並不可避免擁塞,只是將擁塞視窗按現行規律緩慢增長,使得網路比較不容易出現擁塞
  2. 相比慢開始演算法的加倍,擁塞視窗增長速率緩慢得多
  • 示意圖
示意圖

1.2 解決方案描述(慢開始 & 擁塞避免)

  • 為了防止擁塞視窗(cwnd)增長過大而引起網路擁塞,採用慢開始 & 擁塞避免 2種演算法,具體規則如下
示意圖
  • 例項說明
示意圖

解決方案2:快重傳 & 快恢復

快重傳 & 快恢復的解決方案 是對慢開始 & 擁塞避免演算法的改進

2.1 儲備知識:快重傳演算法、快恢復演算法

a. 快重傳演算法

  • 原理

    1. 接收方 每收到一個失序的報文段後 就立即發出重複確認(為的是使傳送方及早知道有報文段沒有到達對方),而不要等到自己傳送資料時才進行捎帶確認
    2. 傳送方只要一連收到3個重複確認就立即重傳對方尚未收到的報文段,而不必 繼續等待設定的重傳計時器到期
  • 作用
    由於傳送方儘早重傳未被確認的報文段,因此採用快重傳後可以使整個網路吞吐量提高約20%

  • 示意圖

示意圖

b. 快恢復

當傳送方連續收到3個重複確認後,就:

  1. 執行 乘法減小 演算法:即把慢開始門限(ssthresh)設定為出現擁塞時傳送方視窗值的一半
  2. 將擁塞視窗(cwnd)值設定為 慢開始門限ssthresh減半後的數值
  3. 開始執行擁塞避免演算法(“加法增大”):使擁塞視窗緩慢地線性增大。

注:

  1. 由於跳過了擁塞視窗(cwnd)從1起始的慢開始過程,所以稱為:快恢復
  2. 此處網路不會發生網路擁塞,因若擁塞,則不會收到多個重複確認報文

2.2 解決方案描述(快重傳 & 快恢復)

  • 原理
    為了優化慢開始 & 擁塞避免的解決方案,在上述方案中加入快重傳 & 快恢復 2種演算法,具體規則如下
示意圖
  • 示意圖
示意圖

至此,關於TCP無差錯傳輸的知識講解完畢。

9. 與UDP協議的區別

示意圖

10. 總結

  • 本文全面講解了 計算機網路中最重要的TCP協議,含其特點、三次握手、四次揮手、無差錯傳輸等知識,相信你們對TCP協議已經非常瞭解