精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

4000字詳解TCP超時與重傳,看完沒收獲算我輸

網絡 網絡管理
上一篇介紹 TCP 的文章「TCP 三次握手,四次揮手和一些細節」反饋還不錯,還是蠻開心的,這次接著講一講關于超時和重傳那一部分。

上一篇介紹 TCP 的文章「TCP 三次握手,四次揮手和一些細節」反饋還不錯,還是蠻開心的,這次接著講一講關于超時和重傳那一部分。

我們都知道 TCP 協議具有重傳機制,也就是說,如果發送方認為發生了丟包現象,就重發這些數據包。很顯然,我們需要一個方法來「猜測」是否發生了丟包。最簡單的想法就是,接收方每收到一個包,就向發送方返回一個 ACK,表示自己已經收到了這段數據,反過來,如果發送方一段時間內沒有收到 ACK,就知道很可能是數據包丟失了,緊接著就重發該數據包,直到收到 ACK 為止。

你可能注意到我用的是「猜測」,因為即使是超時了,這個數據包也可能并沒有丟,它只是繞了一條遠路,來的很晚而已。畢竟 TCP 協議是位于傳輸層的協議,不可能明確知道數據鏈路層和物理層發生了什么。但這并不妨礙我們的超時重傳機制,因為接收方會自動忽略重復的包。

超時和重傳的概念其實就是這么簡單,但內部的細節卻是很多,我們最先想到的一個問題就是,到底多長時間才能算超時呢?

[[311799]]

一、超時是怎么確定的?

一刀切的辦法就是,我直接把超時時間設成一個固定值,比如說 200ms,但這樣肯定是有問題的,我們的電腦和很多服務器都有交互,這些服務器位于天南海北,國內國外,延遲差異巨大,打個比方:

  • 我的個人博客搭在國內,延遲大概 30ms,也就是說正常情況下的數據包,60ms 左右就已經能收到 ACK 了,但是按照我們的方法,200ms 才能確定丟包(正常可能是 90 到 120 ms),這效率實在是有點低。
  • 假設你訪問某國外網站,延遲有 130 ms,這就麻煩了,正常的數據包都可能被認為是超時,導致大量數據包被重發,可以想象,重發的數據包也很容易被誤判為超時。。。雪崩效應的感覺

所以設置固定值是很不可靠的,我們要根據網絡延遲,動態調整超時時間,延遲越大,超時時間越長。

在這里先引入兩個概念:

  • RTT(Round Trip Time):往返時延,也就是**數據包從發出去到收到對應 ACK 的時間。**RTT 是針對連接的,每一個連接都有各自獨立的 RTT。
  • RTO(Retransmission Time Out):重傳超時,也就是前面說的超時時間。

比較標準的 RTT 定義:

Measure the elapsed time between sending a data octet with a particular sequence number and receiving an acknowledgment that covers that sequence number (segments sent do not have to match segments received). This measured elapsed time is the Round Trip Time (RTT).

1. 經典方法

最初的規范「RFC0793」采用了下面的公式來得到平滑的 RTT 估計值(稱作 SRTT):

  1. SRTT  <-  α·SRTT +(1 - α)·RTT 

RTT 是指最新的樣本值,這種估算方法叫做「指數加權移動平均」,名字聽起來比較高大上,但整個公式比較好理解,就是利用現存的 SRTT 值和最新測量到的 RTT 值取一個加權平均。

有了 SRTT,就該設置對應的 RTO 的值了,「RFC0793」是這么算的:

  1. RTO = min(ubound, max(lbound, (SRTT)·β)) 

這里面的 ubound 是 RTO 的上邊界,lbound 為 RTO 的下邊界,β 稱為時延離散因子,推薦值為 1.3 ~ 2.0。這個計算公式就是將 (SRTT)·β 的值作為 RTO,只不過另外限制了 RTO 的上下限。

這個計算方法,初看是沒有什么問題(至少我是這么感覺的),但是實際應用起來,有兩個缺陷:

There were two known problems with the RTO calculations specified in RFC-793. First, the accurate measurement of RTTs is difficult when there are retransmissions. Second, the algorithm to compute the smoothed round-trip time is inadequate [TCP:7], because it incorrectly assumed that the variance in RTT values would be small and constant. These problems were solved by Karn's and Jacobson's algorithm, respectively.

這段話摘自「RFC1122」,我來解釋一下:

當出現數據包重傳的情況下,RTT 的計算就會很“麻煩”,我畫了張圖來說明這些情況:

圖上列了兩種情況,這兩種情況下計算 RTT 的方法是不一樣的(這就是所謂的重傳二義性):

但是對于客戶端來說,它不知道發生了哪種情況,選錯情況的結果就是 RTT 偏大/偏小,影響到 RTO 的計算。(最簡單粗暴的解決方法就是忽略有重傳的數據包,只計算那些沒重傳過的,但這樣會導致其他問題。。詳見 Karn's algorithm)

  • 情況一:RTT = t2 - t0
  • 情況二:RTT = t2 - t1

另一個問題是,這個算法假設 RTT 波動比較小,因為這個加權平均的算法又叫低通濾波器,對突然的網絡波動不敏感。如果網絡時延突然增大導致實際 RTT 值遠大于估計值,會導致不必要的重傳,增大網絡負擔。( RTT 增大已經表明網絡出現了過載,這些不必要的重傳會進一步加重網絡負擔)。

2. 標準方法

說實話這個標準方法比較,,,麻煩,我就直接貼公式了:

  • SRTT <- (1 - α)·SRTT + α·RTT //跟基本方法一樣,求 SRTT 的加權平均
  • rttvar <- (1 - h)·rttvar + h·(|RTT - SRTT |) //計算 SRTT 與真實值的差距(稱之為絕對誤差|Err|),同樣用到加權平均
  • RTO = SRTT + 4·rttvar //估算出來的新的 RTO,rttvar 的系數 4 是調參調出來的

這個算法的整體思想就是結合平均值(就是基本方法)和平均偏差來進行估算,一波玄學調參得到不錯的效果。如果想更深入了解這個算法,參考「RFC6298」。

二、重傳——TCP的重要事件

1. 基于計時器的重傳

這種機制下,每個數據包都有相應的計時器,一旦超過 RTO 而沒有收到 ACK,就重發該數據包。沒收到 ACK 的數據包都會存在重傳緩沖區里,等到 ACK 后,就從緩沖區里刪除。

首先明確一點,對 TCP 來說,超時重傳是相當重要的事件(RTO 往往大于兩倍的 RTT,超時往往意味著擁塞),一旦發生這種情況,TCP 不僅會重傳對應數據段,還會降低當前的數據發送速率,因為TCP 會認為當前網絡發生了擁塞。

簡單的超時重傳機制往往比較低效,如下面這種情況:

假設數據包5丟失,數據包 6,7,8,9 都已經到達接收方,這個時候客戶端就只能等服務器發送 ACK,注意對于包 6,7,8,9,服務器都不能發送 ACK,這是滑動窗口機制決定的,因此對于客戶端來說,他完全不知道丟了幾個包,可能就悲觀的認為,5 后面的數據包也都丟了,就重傳這 5 個數據包,這就比較浪費了。

2. 快速重傳

快速重傳機制「RFC5681」基于接收端的反饋信息來引發重傳,而非重傳計時器超時。

剛剛提到過,基于計時器的重傳往往要等待很長時間,而快速重傳使用了很巧妙的方法來解決這個問題:服務器如果收到亂序的包,也給客戶端回復 ACK,只不過是重復的 ACK。就拿剛剛的例子來說,收到亂序的包 6,7,8,9 時,服務器全都發 ACK = 5。這樣,客戶端就知道 5 發生了空缺。一般來說,如果客戶端連續三次收到重復的 ACK,就會重傳對應包,而不需要等到計時器超時。

但快速重傳仍然沒有解決第二個問題:到底該重傳多少個包?

3. 帶選擇確認的重傳

改進的方法就是 SACK(Selective Acknowledgment),簡單來講就是在快速重傳的基礎上,返回最近收到的報文段的序列號范圍,這樣客戶端就知道,哪些數據包已經到達服務器了。

來幾個簡單的示例:

case 1:第一個包丟失,剩下的 7 個包都被收到了。

當收到 7 個包的任何一個的時候,接收方會返回一個帶 SACK 選項的 ACK,告知發送方自己收到了哪些亂序包。注:Left Edge,Right Edge 就是這些亂序包的左右邊界。

  1. Triggering    ACK      Left Edge   Right Edge 
  2. Segment 
  3.  
  4. 5000         (lost) 
  5. 5500         5000     5500       6000 
  6. 6000         5000     5500       6500 
  7. 6500         5000     5500       7000 
  8. 7000         5000     5500       7500 
  9. 7500         5000     5500       8000 
  10. 8000         5000     5500       8500 
  11. 8500         5000     5500       9000 

case 2:第 2, 4, 6, 8 個數據包丟失。

  • 收到第一個包時,沒有亂序的情況,正常回復 ACK。
  • 收到第 3, 5, 7 個包時,由于出現了亂序包,回復帶 SACK 的 ACK。

因為這種情況下有很多碎片段,所以相應的 Block 段也有很多組,當然,因為選項字段大小限制, Block 也有上限。

  1. Triggering  ACK    First Block   2nd Block     3rd Block 
  2. Segment            Left   Right  Left   Right  Left   Right 
  3.                    Edge   Edge   Edge   Edge   Edge   Edge 
  4.  
  5. 5000       5500 
  6. 5500       (lost) 
  7. 6000       5500    6000   6500 
  8. 6500       (lost) 
  9. 7000       5500    7000   7500   6000   6500 
  10. 7500       (lost) 
  11. 8000       5500    8000   8500   7000   7500   6000   6500 
  12. 8500       (lost) 

不過 SACK 的規范「RFC2018」有點坑爹,接收方可能會在提供一個 SACK 告訴發送方這些信息后,又「食言」,也就是說,接收方可能把這些(亂序的)數據包刪除掉,然后再通知發送方。以下摘自「RFC2018」:

Note that the data receiver is permitted to discard data in its queue that has not been acknowledged to the data sender, even if the data has already been reported in a SACK option. Such discarding of SACKed packets is discouraged, but may be used if the receiver runs out of buffer space.

最后一句是說,當接收方緩沖區快被耗盡時,可以采取這種措施,當然并不建議這種行為。。。

由于這個操作,發送方在收到 SACK 以后,也不能直接清空重傳緩沖區里的數據,一直到接收方發送普通的,ACK 號大于其最大序列號的值的時候才能清除。另外,重傳計時器也收到影響,重傳計時器應該忽略 SACK 的影響,畢竟接收方把數據刪了跟丟包沒啥區別。

4. DSACK 擴展

DSACK,即重復 SACK,這個機制是在 SACK 的基礎上,額外攜帶信息,告知發送方有哪些數據包自己重復接收了。DSACK 的目的是幫助發送方判斷,是否發生了包失序、ACK 丟失、包重復或偽重傳。讓 TCP 可以更好的做網絡流控。

關于 DSACK,「RFC2883」里舉了很多例子,有興趣的讀者可以去閱讀一下,我這里就不講那么細了。

 

責任編輯:趙寧寧 來源: tobe的囈語
相關推薦

2018-02-25 22:37:34

2014-12-09 16:30:18

TCP定時器

2018-03-05 09:31:23

2020-07-16 09:07:19

LVS硬件服務器

2019-12-13 10:50:10

TCP排查服務器

2018-06-11 23:34:42

2023-10-17 10:11:50

TCPIP

2021-05-27 10:57:01

TCP定時器網絡協議

2020-07-09 10:30:34

開源替代品VS Code

2021-07-05 10:27:48

VS Code開源Linux

2021-05-18 09:12:40

TCP網絡分層網絡協議

2022-05-07 11:06:03

TkinterPython代碼

2021-10-08 08:58:35

物聯網通信發布者

2022-02-12 17:29:16

LogoChrome設計更新

2020-04-20 10:51:26

TCP擁塞控制網絡協議

2022-08-09 20:48:24

算力網絡運營商

2018-03-15 13:48:45

架構技術棧微信半月刊

2014-09-22 09:15:03

TCPIP

2021-07-27 05:13:12

TCPUDP 擁塞

2022-07-27 07:36:01

TCP可靠性
點贊
收藏

51CTO技術棧公眾號

www高清在线视频日韩欧美| 欧美视频裸体精品| 高清视频一区| www成人在线| 日韩精品久久| 欧美大片顶级少妇| 欧美精品aaaa| 九色91在线| 国产女主播一区| 国产精品一区二区不卡视频| 国产午夜无码视频在线观看| 欧美在线看片| 在线日韩av观看| 国产艳妇疯狂做爰视频| 国产91欧美| 黄色成人在线免费| 成人在线观看www| 麻豆国产在线播放| 国产成a人亚洲精品| 国产精品久久久久9999| 在线观看 中文字幕| 视频在线不卡免费观看| 亚洲精品小视频在线观看| 人妻精油按摩bd高清中文字幕| 久久野战av| 欧美日韩国产中文精品字幕自在自线| 黄瓜视频免费观看在线观看www | 色乱码一区二区三区熟女| 亚洲人在线观看视频| 国产精品一品视频| 国产日韩在线视频| 国产第一页在线观看| 亚洲黑丝一区二区| 欧美另类高清videos| 手机av在线不卡| 欧美日韩播放| 日韩成人激情在线| 亚洲视频天天射| 精品国产亚洲一区二区三区在线 | 少妇喷水在线观看| 国产一区二区按摩在线观看| 国产精品嫩草视频| 无码人妻久久一区二区三区不卡| 亚洲毛片网站| 国产做受69高潮| 国产一国产二国产三| 一区二区中文| 不卡中文字幕av| 日韩在线一卡二卡| 99久久99久久精品国产片桃花 | 欧美专区一区二区三区| 国模私拍视频一区| 日本少妇久久久| 尹人成人综合网| 久久久人成影片一区二区三区| 久久黄色免费网站| 欧美体内she精视频在线观看| 另类视频在线观看| 欧美丰满艳妇bbwbbw| 香蕉精品视频在线观看| 久热爱精品视频线路一| 婷婷久久综合网| 欧美精品偷拍| 91国产精品91| 国产伦精品一区二区三区视频我| 久久亚洲美女| 国产精品老女人视频| 亚洲视频一区在线播放| 狠狠色综合播放一区二区| 成人观看高清在线观看免费| 国产免费黄色片| 国产成人精品综合在线观看 | 九九热免费在线观看| 99久久久成人国产精品| 欧美一区二区大片| 亚洲色偷偷色噜噜狠狠99网| 免费成人av| 色婷婷综合成人| 国产盗摄一区二区三区在线| 亚洲成人在线| 国产精品久久久久久久久久三级 | 免费三级在线观看| 欧美日韩一卡| 热久久免费国产视频| 啪啪小视频网站| 国产麻豆91精品| 国产一区二区中文字幕免费看| 欧美日韩在线中文字幕| 国产亚洲一区二区三区四区 | av电影免费在线观看| 亚洲二区视频在线| 国产一线二线三线在线观看| 欧洲大片精品免费永久看nba| 亚洲护士老师的毛茸茸最新章节| 国产肥白大熟妇bbbb视频| 欧美xxxxx视频| 亚洲2020天天堂在线观看| 超碰在线97观看| 国产a区久久久| 日韩高清国产一区在线观看| 直接在线观看的三级网址| 欧美日韩裸体免费视频| 亚洲免费黄色网| 日韩深夜福利| 久久久999国产精品| 天堂中文在线网| 国产一区二区三区免费看| 久久综合伊人77777麻豆| 麻豆视频在线观看免费网站| 欧美日韩一区二区免费视频| www.成人黄色| 成人亚洲一区| 2018中文字幕一区二区三区| 国产美女精品视频国产| 久久久久久免费| www.国产在线播放| 99精品女人在线观看免费视频| 亚洲美女中文字幕| 福利一区二区三区四区| 九色|91porny| 日韩免费电影一区二区| 国产精品xx| 日韩女优电影在线观看| 日本 欧美 国产| 久久久精品五月天| 精品亚洲第一| 成人在线免费观看黄色| 91精品国产91综合久久蜜臀| 久久丫精品忘忧草西安产品| 国产日本精品| 国产伦精品一区二区三区照片 | 日本中文字幕精品—区二区| 精品一区三区| 91精品国产精品| 亚洲精品一区二区三区新线路| 成人免费一区二区三区视频 | 国产亚洲精品激情久久| 圆产精品久久久久久久久久久| 国产91色综合久久免费分享| 91视频成人免费| 9999精品| 久久伊人91精品综合网站| 伊人免费在线观看| 国产精品女上位| 一区二区三区视频在线观看免费| 亚洲免费福利一区| 国产999在线观看| 男人久久精品| 91成人在线免费观看| 97人妻精品一区二区免费| 久久九九免费| 亚洲国产综合自拍| 外国成人毛片| 欧美俄罗斯性视频| 亚洲伦理在线观看| 亚洲超丰满肉感bbw| 手机av免费看| 国产精品一国产精品k频道56| 九九99玖玖| 国产精品一区二区av影院萌芽| 亚洲精品中文字幕av| 亚洲黄网在线观看| 国产精品国产精品国产专区不蜜| 99re6在线观看| 午夜欧美精品| 精品产品国产在线不卡| 国产精品伦理| 久久精品成人一区二区三区| 99久久精品无免国产免费| 一区二区成人在线视频| 欧洲一级黄色片| 视频一区在线播放| 一区精品在线| 成人三级毛片| 国产成人综合精品| 久久亚洲天堂| 亚洲国产精品免费| 中文字幕有码视频| 依依成人综合视频| 你懂得在线视频| 热久久国产精品| 国产香蕉一区二区三区| 亚洲人成网站77777在线观看| 国产精品视频99| 免费在线国产视频| 亚洲天堂一区二区三区| www.亚洲欧美| 色婷婷综合久久| 国产精品 欧美激情| 91免费观看在线| 91亚洲免费视频| 亚洲乱码视频| 在线观看欧美亚洲| 任你弄精品视频免费观看| 国产精品一区二区三区成人| √8天堂资源地址中文在线| 夜夜嗨av一区二区三区免费区| av老司机久久| 在线一区二区三区四区五区| 久久精品这里只有精品| 国产日韩在线不卡| 国产大学生视频| 久久aⅴ国产欧美74aaa| 免费国产a级片| 欧美xxxxx视频| 鲁丝一区鲁丝二区鲁丝三区| 国产午夜精品一区在线观看 | 91video| 玉足女爽爽91| 美女av免费看| 久久综合久色欧美综合狠狠| 日本高清免费在线视频| 日韩高清中文字幕一区| 人妻少妇精品久久| 欧美.www| 天天综合中文字幕| 精品国产精品久久一区免费式| 国产精品视频免费一区二区三区| 99视频这里有精品| 国产精品久久久| 超级碰碰久久| 性日韩欧美在线视频| 牛牛电影国产一区二区| 久久久精品国产一区二区| 国产三级视频在线看| 亚洲男人的天堂网站| 粉嫩小泬无遮挡久久久久久| 日韩丝袜情趣美女图片| 国产伦理吴梦梦伦理| 欧美午夜一区二区| 免费污污视频在线观看| 亚洲sss视频在线视频| 久草视频在线免费看| 亚洲视频1区2区| 很污很黄的网站| 亚洲国产精品成人综合| 国产18无套直看片| 欧美国产欧美综合| 波多野结衣av在线观看| 国产亚洲精品aa| 中文字幕第20页| 国产亚洲精久久久久久| 魔女鞋交玉足榨精调教| 91麻豆国产精品久久| 亚洲人人夜夜澡人人爽| 26uuu欧美| 亚洲乱码国产乱码精品精大量| av色综合久久天堂av综合| 亚洲一区二区三区四区五区六区| av欧美精品.com| 深爱五月激情网| 久久久午夜精品理论片中文字幕| 国产福利在线观看视频| 久久精品在这里| youjizz亚洲女人| 中文字幕一区二区三区视频| 视频国产一区二区| 一区二区三区四区高清精品免费观看| 欧美国产精品一二三| 亚洲成a人在线观看| 可以在线观看av的网站| 在线观看免费亚洲| 亚洲香蕉在线视频| 日韩视频在线你懂得| 欧美一级一区二区三区| 国产视频丨精品|在线观看| 成人性爱视频在线观看| 久久久91精品国产一区不卡| 黄色大片在线| 日韩美女在线看| 四虎影视国产精品| 国产精品免费看一区二区三区| 精品视频自拍| 亚洲精品国产精品国自产| 女生裸体视频一区二区三区| 国产精品第157页| 久久精品123| 91亚洲精品久久久蜜桃借种| 国产69精品久久久久毛片| 性欧美成人播放77777| 欧美国产精品v| 青青草手机在线视频| 狠狠躁夜夜躁人人爽天天天天97| 无码一区二区三区| 欧美一区在线视频| 天堂视频中文在线| 久久精品99久久久香蕉| 国内激情视频在线观看| 国产精品自产拍在线观看| a级日韩大片| 亚洲成人a**址| 在线国产日韩| 色播五月激情五月| 不卡视频在线看| 国产又粗又长又硬| 午夜视频一区二区| 97精品人妻一区二区三区香蕉| 亚洲成年人在线| yiren22亚洲综合伊人22| 高清一区二区三区四区五区| 青娱乐极品盛宴一区二区| 久久大片网站| 中文字幕午夜精品一区二区三区| 妞干网在线免费视频| 国产91精品一区二区| 蜜桃av免费观看| 欧美午夜xxx| 亚洲第一色视频| 色偷偷9999www| 日本成人伦理电影| 精品国产免费久久久久久尖叫| 亚洲高清资源在线观看| 香蕉视频网站入口| 99久精品国产| 免费在线视频观看| 欧美日本高清视频在线观看| 日韩精品系列| 91精品国产高清久久久久久| 国产日韩欧美中文在线| 亚洲mv在线看| 久久综合导航| a级在线观看视频| 亚洲超碰精品一区二区| 亚洲精品97久久中文字幕| 精品国产依人香蕉在线精品| 日韩欧美一区二区三区在线观看 | 国产精品丝袜一区二区三区| 亚洲激情77| 日韩精品xxxx| av在线综合网| 久久综合色综合| 日韩欧美精品在线| 羞羞电影在线观看www| 亚洲va男人天堂| 99精品视频在线观看免费播放| 亚洲福利精品视频| 国产喷白浆一区二区三区| 国产美女激情视频| 精品亚洲国产视频| 亚洲色图官网| 欧美精品尤物在线| 午夜在线播放视频欧美| 国产精品三级在线观看无码| 精品美女久久久久久免费| 亚洲欧洲综合在线| 欧美亚洲国产精品| 亚洲婷婷伊人| 日韩毛片在线免费看| 国产欧美日韩亚州综合| 午夜视频网站在线观看| 在线成人免费网站| 热久久久久久| 欧美美女黄色网| 丁香六月综合激情| 日韩av无码中文字幕| 日韩成人网免费视频| 中文字幕 在线观看| 欧美日韩精品中文字幕一区二区| 久久一区欧美| 国产精品久久国产精麻豆96堂| 欧美精品丝袜中出| 亚洲夜夜综合| 国产亚洲一区二区三区在线播放| 国产日韩欧美| 久久国产柳州莫菁门| 在线播放中文字幕一区| 伊人福利在线| 国产综合动作在线观看| 日日嗨av一区二区三区四区| 亚洲高潮女人毛茸茸| 日韩免费高清视频| 少妇在线看www| 一区二区三区四区| 国产999精品久久久久久| 国产精品黄色大片| 日韩最新中文字幕电影免费看| 日韩一区二区三区色| 久久综合九色综合88i| 国产喂奶挤奶一区二区三区| 一级做a爰片久久毛片16| 久久99热这里只有精品国产| 亚洲精品合集| 欧美性受xxxxxx黑人xyx性爽| 亚洲一区二区精品3399| 国产三级电影在线观看| 91久久精品久久国产性色也91| 一区在线免费| 国产伦精品一区二区三区视频女| 91精品国产欧美日韩| 无码小电影在线观看网站免费 | 欧美私人网站| 久久99精品久久久久久久久久| 免费在线观看不卡| 精品无码一区二区三区电影桃花 | 国产一区在线免费| 麻豆精品一区二区| 尤物视频在线观看国产| 久久韩国免费视频| 亚洲警察之高压线| 国产成人av免费观看|