計算機網路:這是一份全面 & 詳細 的TCP協議攻略
阿新 • • 發佈:2019-02-08
示意圖
- 具體解決方案
共分為2個解決方案:慢開始 & 擁塞避免、快重傳 & 快恢復
其中,涉及4種演算法,即 慢開始 & 擁塞避免、快重傳 & 快恢復
具體介紹如下
解決方案1:慢開始 & 擁塞避免
1.1 儲備知識:擁塞視窗、慢開始演算法、擁塞避免演算法
a. 擁塞視窗
- 傳送方維持一個狀態變數:擁塞視窗
(cwnd, congestion window )
,具體介紹如下
b. 慢開始演算法
原理
當主機開始傳送資料時,由小到大逐漸增大 擁塞視窗數值(即 傳送視窗數值),從而 由小到大逐漸增大發送報文段目的
開始傳輸時,試探網路的擁塞情況具體措施
- 示意圖
- 特別注意
慢開始的“慢”指:一開始傳送報文段時擁塞視窗(cwnd)
並不是指擁塞視窗
(cwnd)
的增長速率慢
c. 擁塞避免 演算法
- 原理
使得擁塞視窗(cwnd)
按線性規律 緩慢增長:每經過一個往返時間RTT
,傳送方的擁塞視窗(cwnd)
加1
- 擁塞避免 並不可避免擁塞,只是將擁塞視窗按現行規律緩慢增長,使得網路比較不容易出現擁塞
- 相比慢開始演算法的加倍,擁塞視窗增長速率緩慢得多
- 示意圖
1.2 解決方案描述(慢開始 & 擁塞避免)
- 為了防止擁塞視窗
(cwnd)
增長過大而引起網路擁塞,採用慢開始 & 擁塞避免 2種演算法,具體規則如下
- 例項說明
解決方案2:快重傳 & 快恢復
快重傳 & 快恢復的解決方案 是對慢開始 & 擁塞避免演算法的改進
2.1 儲備知識:快重傳演算法、快恢復演算法
a. 快重傳演算法
原理
- 接收方 每收到一個失序的報文段後 就立即發出重複確認(為的是使傳送方及早知道有報文段沒有到達對方),而不要等到自己傳送資料時才進行捎帶確認
- 傳送方只要一連收到3個重複確認就立即重傳對方尚未收到的報文段,而不必 繼續等待設定的重傳計時器到期
作用
由於傳送方儘早重傳未被確認的報文段,因此採用快重傳後可以使整個網路吞吐量提高約20%示意圖
b. 快恢復
當傳送方連續收到3個重複確認後,就:
- 執行 乘法減小 演算法:即把慢開始門限
(ssthresh)
設定為出現擁塞時傳送方視窗值的一半 - 將擁塞視窗
(cwnd)
值設定為 慢開始門限ssthresh
減半後的數值 - 開始執行擁塞避免演算法(“加法增大”):使擁塞視窗緩慢地線性增大。
注:
- 由於跳過了擁塞視窗
(cwnd)
從1起始的慢開始過程,所以稱為:快恢復- 此處網路不會發生網路擁塞,因若擁塞,則不會收到多個重複確認報文
2.2 解決方案描述(快重傳 & 快恢復)
- 原理
為了優化慢開始 & 擁塞避免的解決方案,在上述方案中加入快重傳 & 快恢復 2種演算法,具體規則如下
- 示意圖
至此,關於TCP
無差錯傳輸的知識講解完畢。
9. 與UDP協議的區別
示意圖10. 總結
本文全面講解了 計算機網路中最重要的
TCP
協議,含其特點、三次握手、四次揮手、無差錯傳輸等知識,相信你們對TCP
協議已經非常瞭解