第十四章 TCP超時重傳

14.1 引言

TCP提供可靠的數據傳輸服務,為了保證數據傳出的正確性,TCP重傳其認為已丟失的數據包(或是SACK確認的丟失數據包),TCP根據接收端返回值發送端的一些列ACK來確認是否出現丟包。
當出現丟包,再適合的時候,TCP啟動重傳,重傳腸胃確認的數據。
TCP有兩套獨立的機制來完成重傳:基于時間基于信息構成,第二種更加高效。

TCP發送數據是,會設置一個計時器,若計時器超時未收到數據包的ACK,則會引發相應的超時或基于計時器的重傳操作,計時器超時稱為重傳超時RTO
另一中重傳方式稱為快速重傳,通常發生在沒有延時的視情況,若ACK累計無法確認返回新的ACK(返回的可能是重復ACK),或是包含選擇確認信息SACK,快速重傳會推斷出現丟包。

14.2 簡單的超時與重傳

每次重傳間隔時間加倍稱為二進制指數退避
TCP擁有兩個閾值來決定如何重傳一個報文段,R1表示TCP在想IP層傳遞消極建議前(例如重新評估當前IP路徑),愿意重傳的次數(或等待的時間)。R2(大于R1)指示TCP應放棄當前連接的時機。
R1通常為3次,R2沖腸胃3分鐘。

14.3 設置重傳超時

TCP超時和重傳的基礎是怎么根據連接的RTT里設置RTO。
TCP在收到ACK時,根據數據報中攜帶的數據來測量該確認信息所需的時間。每個這樣的測量結果稱為RTT樣本

14.3.1 經典方法

指數加權移動平均
SRTT=a(SRTT) + (1-a)RTT
也就是,每次的SRTT根據得到的RTT更新,a是一個平滑因子,一般為0.8~0.9.

經典方法
RTO=min(max_value,max(min_value,(SRTT)*b))
其中max_value和min_value是超時等待的上限和下限。b是一個時延離散因子去1.2~1.3

缺點:無法適應大規模的變動,因為新舊RTT的比重不同,因此變化會有延遲。

14.3.2 標準方法

在測量的時候同時測量均值和方差,
再看

14.3.2.1 時鐘粒度與RTO

14.3.3 Linux采用的方法

14.4 基于計時器的重傳

14.5 快速重傳

基于ACK

ACK分組的ACK值,永遠是已收到連續數據的最后一個字節的偏移量+1。也就是出現第一個空洞的位置。

當失序數據到達時,ACK立即返回,不能延時發送。因此發送端會連續收到ACK值相同的ACk分組。當發送端收到相同ACK分組的次數達到重傳的重復ACK閾值(dupthresh),就會重傳對應的分組。

快速重傳算法概括為:TCP發送端在觀測到至少dupthresh個重復ACK后,即重傳可能丟失的數據分組,而不必等待計時器超時。當然也同時發送新的數據。不采用SACK時,在接收到有效ACK(ACK值不在是重復的)之前只能重傳一個報文段。

NewReno算法

統計|流圖

小豎杠是發送端發送的數據報的Seq值。下面的連續梯形是發送端接收到的數據報的ACK值。

如果連續觀測到超過dupthresh個重復ACK,開吃重傳,當前已發送數據報的Seq最大值成為恢復點。發送丟失數據,同時還繼續發送新的數據。以后,當收到新的ACK,如果ACK值小于恢復點,那么立即重傳新的丟失的數據,直到ACK超過恢復點,重傳結束。

14.6 帶選擇確認的重傳

TCP選擇確認選項

TCP接收端提供SACK功能,通過頭部累計ACK號字段來描述收到的數據。
ACK號與接收端緩存中其他數據之間的間隔成為空缺。Seq高于空缺數據成為失序數據。
每個SACK信息包括4字節開始位置,4字節結束為止(表示收到數據的起始值最后一個序列號+1),2字節填充。因此一個SACK為10個字節。SACK還會與TSOPT一起使用,又用掉10字節。
所以每個ACK中只能包含3個SACK塊。(選項一共40字節)。
第一個SACK塊為最新收到的數據,也就是最后的那段,其余兩端為從頭開始收到的兩端連續數據。因此這就有兩個空洞了。

tcptrace

發送端在收到SACK以后,不能因為SACK塊標記的已接收到數據而清空字節的重傳緩存中的數據,必須等待ACK才清除。
這是因為接收端變更:食言。不過很少發生。

14.7 偽超時與重傳

14.8 包失序與包重復

每個包可以選擇各自的傳送路徑。某些高級路由器的采用多個并行數據鏈路,不同的處理演示也會導致包的離開順序和到達順序不匹配

包的失序會造成重傳,很近單嘛,前面一個小號的Seq沒到達,后面的先到達,那么ACK就會 重復

14.9 目的度量

14.10 重新組包

當TCP超時重發是,循序執行重新租寶,發送送一個更大的報文段提高性能,不超過MSS和MTU。
出現在每次傳送的包較小,又丟包的情況

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容