TCP 可靠傳輸的實現-02超時重傳時間的選擇/03選擇確認 SACK
02超時重傳時間的選擇
- TCP 每傳送一個報文段,就對這個報文段設定一次計時器。
- 只要計時器設定的重傳時間到但還沒有收到確認,就要重傳這一報文段。
由於TCP的下層是網際網路環境,傳送的報文段可能只經過一個高速率的區域網,也可能經過多個低速率的網路,並且每個IP資料包所選擇的路由還可能不同。如果把超時重傳時間設定得太短,就會引起很多報文段的不必要的重傳,使網路負荷增大。但若把超時重傳時間設定得過長,則又使網路的空閒時間增大,降低了傳輸效率。
TCP 採用了一種自適應演算法,它記錄一個報文段發出的時間,以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間 RTT。
超時重傳時間 RTO介紹
往返時間 (RTT) 的測量
如何判定此確認報文段是對原來的報文段 1 的確認,還是對重傳的報文段 2 的確認?
Karn 演算法
- 在計算平均往返時間 RTT 時,只要報文段重傳了,就不採用其往返時間樣本。
- 這樣得出的加權平均平均往返時間 RTTS 和超時重傳時間 RTO 就較準確。
- 但是,這又引起新的問題。當報文段的時延突然增大了很多時,在原來得出的重傳時間內,不會收到確認報文段。於是就重傳報文段。但根據Karn演算法,不考慮重傳的報文段的往返時間樣本。這樣,超時重傳時間就無法更新。
修正的 Karn 演算法
03選擇確認 SACK
問題:若收到的報文段無差錯,只是未按序號,中間還缺少一些序號的資料,那麼能否設法只傳送缺少的資料而不重傳已經正確到達接收方的資料?
答案是可以的。選擇確認 SACK
(Selective ACK) 就是一種可行的處理方法。
RFC 2018 的規定
- 如果要使用選擇確認,那麼在建立 TCP 連線時,就要在 TCP 首部的選項中加上“允許 SACK”的選項,而雙方必須都事先商定好。
- 如果使用選擇確認,那麼原來首部中的“確認號欄位”的用法仍然不變。只是以後在 TCP 報文段的首部中都增加了 SACK 選項,以便報告收到的不連續的位元組塊的邊界。
- 由於首部選項的長度最多隻有 40 位元組,而指明一個邊界就要用掉 4 位元組,因此在選項中最多隻能指明 4 個位元組塊的邊界資訊。另外還需要兩個位元組。一個位元組用來指明是SACK選項,另一個位元組是指明這個選項要佔用多少位元組。如果要報告五個位元組塊的邊界資訊,那麼至少需要42個位元組。
相關文章
- 計算機網路之傳輸層TCP與UDP對比、流量控制、擁塞控制、超時重傳時間的選擇、可靠傳輸計算機網路TCPUDP
- element-ui 時間選擇器設定時間選擇範圍UI
- 自定義時間選擇器
- 時間選擇外掛ClockPickerKPI
- IOS之UIDatePicker實現時間日期選擇iOSUI
- angular 實現一週選擇時間段外掛Angular
- TCP可靠傳輸原理TCP
- NIO中如何實現超時重傳?
- BootStrapDatePicker時間選擇器--TangobootGo
- iOS簡易時間選擇器iOS
- AngularJS教程十六—— 時間選擇AngularJS
- [轉帖]【tcp】關於tcp 超時重傳次數TCP
- ant-design date-picker 可以選擇當天,時間不能選擇過去的小時
- 直播帶貨原始碼,日期時間選擇器 選擇範圍限制原始碼
- 何時選擇敏捷?敏捷
- React Native日期時間選擇元件React Native元件
- 怎樣選擇TCP還是選擇UDPTCPUDP
- 微信小程式-選擇時間(一週的某一時刻)微信小程式
- 社交時代IT廠商的傳播選擇
- LSTM擇時+StockRanker選股的視覺化策略實現視覺化
- 4種傳輸協議設定,檔案傳輸協議如何選擇?協議
- 時間序列化資料庫選型?時序資料庫的選擇?資料庫
- vue 手寫一個時間選擇器Vue
- 【MySQL】時間型別儲存格式選擇MySql型別
- 計算機網路之八:TCP協議(2) TCP可靠傳輸的實現計算機網路TCP協議
- 選擇排序中用異或實現swap()時出現的問題排序
- 設計表時,如何選擇正確的資料型別資料型別
- 監獄單位如何選擇適合的FTP傳輸替代方案?FTP
- GO中的函式設計時候,引數傳遞選擇傳遞值還是傳遞指標?Go函式指標
- 遊戲陪玩系統開發,日期時間選擇介面的實現遊戲
- 小程式年月日時間段區間選擇
- 關於My97DatePicker時間外掛選擇周的時間格式
- 移動端時間選擇器(更新 1.2.0 版本)
- 如何用 UDP 實現可靠傳輸?UDP
- TCPIP-------超時與重傳TCP
- 【智慧優化演算法】遺傳演算法的精英選擇策略、期望選擇策略優化演算法
- 使用 CSS 選擇器實現對不含 title 屬性元素的選擇CSS
- TCP 學習筆記(三) 可靠傳輸TCP筆記