快重傳與快恢復

2022-09-04 23:09:25 字數 1127 閱讀 7529

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

快重傳示意圖如下:

如上圖所示,接收方收到了 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 版本在快重傳之後採用快恢復演算法而不是採用慢開始演算法。

tianny

高階 sre 工程師

快重傳和快恢復

比如傳送方傳送了1,2,3,4四個報文,2 3 4先後到達接收方,由於接收方收到的是三個失序的報文,就會連續發3個ack為1的報文,表示希望收到報文1。當傳送方接收到1個這樣的冗餘報文時,不採取任何措施,直到收到3個冗餘報文,才認定報文1丟失,此時馬上重傳報文1而不是等待1的超時重傳。這就是快重傳。...

TCP擁塞控制 快重傳和快恢復

1 快重傳 快重傳演算法首先要求接收方每收到乙個失序的報文段就立即發出重複確認 為的是使傳送方及早的知道有報文段沒有到達對方 而不要等到自己傳送資料時才捎帶確認。快重傳演算法規定,傳送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段,而不必繼續等待為其設定的重傳計時器到期。2 快恢復 1...

TCP IP慢開始 擁塞避免 快重傳 快恢復

一般原理 發生擁塞控制的原因 資源 頻寬 交換節點的快取 處理機 的需求 可用資源。作用 擁塞控制就是為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載。擁塞控制要做的都有乙個前提 就是網路能夠承受現有的網路負荷。流量控制 流量控制往往指點對點通訊量的控制。是端對端的問題,是...