tcp重複的確認 TCP 面試系列之快重傳與快恢復

2021-10-11 23:29:49 字數 1199 閱讀 8193

tcp 面試系列第八彈,tcp 快重傳與快恢復。

快重傳演算法首先要求接收方每收到乙個失序的報文段後就立即發出重複確認(為的是使傳送方及早知道有報文段沒有到達對方)而不要等待自己傳送資料時才進行捎帶確認。

快重傳示意圖如下:

如上圖所示,接收方收到了 m1 和 m2 後都分別發出了確認。現假定接收方沒有收到 m3 但接著收到了 m4。顯然,接收方不能確認 m4,因為 m4 是收到的失序報文段(按照順序的 m3 還沒有收到)。

根據之前介紹的 tcp 可靠傳輸原理,接收方可以什麼都不做,也可以在適當時機傳送一次對 m2 的確認。但按照快重傳演算法的規定,接收方應及時傳送對 m2 的重複確認,這樣做可以讓傳送方及早知道報文段 m3 沒有到達接收方。因此,接下來,傳送方傳送 m5 和 m6 後,接收方收到後,也還是要再次發出對 m2 的重複確認。

快重傳演算法規定,傳送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段 m3,而不必繼續等待為 m3 設定的重傳計時器到期。

與快重傳配合使用的還有快恢復演算法,其過程有以下兩個要點:

當傳送方連續收到三個重複確認時,就執行「乘法減小」演算法,把慢開始門限ssthresh 減半。這是為了預防網路發生擁塞。請注意,接下去不執行慢開始演算法。

由於傳送方現在認為網路很可能沒有發生擁塞(如果網路發生了嚴重的擁塞,就不會一連有好幾個報文段連續到達接收方,也就不會導致接收方連續傳送重複確認),因此與慢開始不同之處是現在不執行慢開始演算法(即擁塞視窗 cwnd 現在不設定為 1),而是把 cwnd 值設定為慢開始門限 ssthresh 減半後的數值,然後開始執行擁塞避免演算法(「加法增大」),使擁塞視窗緩慢地線性增大。

如下圖所示:注意圖上關鍵點,從收到 3 個重複的確認,執行快重傳演算法。

上圖給出了快重傳和快恢復的示意圖,並標明了「tcp reno版本」,這是目前使用得很廣泛的版本。

圖中還畫出了已經廢棄不用的虛線部分(tcp tahoe 版本)。請注意它們的區別就是:新的 tcp reno 版本在快重傳之後採用快恢復演算法而不是採用慢開始演算法。

TCP協議的確認重傳機制

tcp協議是面向連線的傳輸層協議,tcp的傳輸特點具有可靠性,它具有面向連線服務來確保可靠穩定傳輸,而確認重傳機制是tcp協議保證可靠穩定傳輸最重要的機制,他包括累計確認 超時時間計算 快速重傳等幾個方面。確認重傳機制 在傳送乙個資料之後,就開啟乙個定時器,若是在這個時間內沒有收到傳送資料的ack確...

tcp擁塞控制 TCP 面試系列之擁塞控制

tcp 面試系列第六彈,tcp 擁塞控制的一般性原理。擁塞的定義。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞。這種情況就叫做擁塞。擁塞常常趨於惡化。舉個例子,如果乙個路由器沒有足夠的快取空間,它就會丟棄一些新到的分組。但當分組被丟棄時,傳送這一分組的源點就...

TCP重傳與確認機制

tcp按照以下特定順序工作 1.放置於重傳佇列中,計時器開始 包含資料的片段一經傳送,片段的乙份複製就放在名為重傳佇列的資料結構中,此時啟動重傳計時器。因此,在某些時間點,每乙個片段都會放在佇列裡。佇列按照重傳計時器的剩餘時間來排列,因此tcp軟體可追蹤那幾個計時器在最短時間內超時。2.確認處理 如...