¨ 重傳定時器:tcp 必須維護乙個重傳定時器,以進行超時重傳
¨ 問題:如何設定超時時間間隔 rto?
時間間隔太短則可能導致大量不必要的重傳;太長則導致效能下降;
¨ tcp 採用了乙個高度動態的演算法,來不斷的調整時間間隔,這個演算法就是 jacobson 1988 演算法
在此演算法中, tcp 需要維護幾個變數:
1)、rtt:對往返時間的當前最佳估計值
當乙個資料段被傳送出去後,tcp 啟動定時器,如果在定時器過期之前確認資料段回來的話,則 tcp 測量一下這次確認所花的時間 m,然後根據如下公式更新 rtt。
rtt = artt + (1-a)m
其中 a 是平滑因子,典型的值是 7/8
這個公式的意思就是說,舊的 rtt 占有 7/8 的權重,新的往返時間占有 1/8 的權重
2)、d:平滑的平均偏差
有了 rtt, 如何選擇 rto 仍然需要考量,
它的計算公式是:
d = ad + (1-a)|rtt-m|
¨ rto 的計算公式: rto = rtt + 4d
這個演算法簡單高效,
¨ karn 演算法:
jacobson 演算法只用於處理正常的情況,但是當發生重傳後,如果收到乙個確認,這時候就不用這個演算法來調整 rto 值了。因為你無法判斷這個確認是針對第一次傳輸,還是後來的重傳。在這種情況下,採用 karn 演算法來調整 rto 的值 。
karn 演算法很簡單:
1)、 對於發生重傳的資料段,在收到確認後,不更新 rtt
2)、在重傳的時候,rto 是倍增的,直到達到最大值的限制。如果重傳超過一定的次數,tcp 連線會斷開
3)、在重傳並收到確認後,如果下一次的資料段沒有發生重傳(即一次性收到確認),則又恢復 jacobson 演算法
TCP IP 重傳機制
tcp 實現可靠傳輸的方式之一,是通過序列號與確認應答。在 tcp 中,當傳送端的資料到達接收主機時,接收端主機會返回乙個確認應答訊息,表示已收到訊息。但在錯綜複雜的網路,並不一定能如上圖那麼順利能正常的資料傳輸,萬一資料在傳輸過程中丟失了呢?所以 tcp 針對資料報丟失的情況,會用重傳機制解決。接...
TCP IP學習筆記 超時重傳
當網路中出現擁塞,client端在給定的時間收不到server端傳送的ack資訊,那麼client就會認為是包丟失了。此時client就需要重新傳輸包,從包丟失到包重傳這個時間間隔就是rto。為了解決上面的問題,提出了慢啟動演算法和擁塞避免演算法,具體過程如下 當我們傳送的資料報出現亂序時,這個時候...
TCP IP詳解 快速重傳與快速恢復
快速重傳演算法在之前的文章中有介紹,如果收到乙個out of order的報文段時,tcp需要立刻產生乙個ack,這個ack不應該被延時,目的在於讓對方知道收到乙個失序的報文,並告訴對方自己希望收到的報文seq,我們不知道這個重複的ack的原因,因為還是會等待少量的重複ack到來,如果連續收到3個或...