精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩一级不卡| 老汉色老汉首页av亚洲| 亚洲精品乱码久久久久久日本蜜臀| 成人免费激情视频| 亚洲一区 视频| 国产一区二区在线| 欧美一级xxx| 免费在线a视频| 黄色一级大片在线免费看产| 成人av综合一区| 国产精品r级在线| 青娱乐国产在线视频| 久久综合色占| 日韩欧美三级在线| 日韩一级片播放| 欧美人与牲禽动交com| 国产欧美日韩中文久久| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 91精品国产91久久久久久最新毛片 | 欧美日韩免费高清一区色橹橹 | 在线国产精品网| 婷婷伊人综合中文字幕| 狠狠色丁香久久婷婷综合_中 | 国产精品黄色片| 亚洲国产成人高清精品| 亚洲综合五月天| 欧美性孕妇孕交| 国产盗摄视频一区二区三区| 国产精品免费久久久久影院| 国产99久久久| 亚洲激情网站| 欧美区二区三区| 天堂av网手机版| 美女久久99| 亚洲国产精品嫩草影院久久| 在线免费看v片| 国产原创一区| 日本丶国产丶欧美色综合| 精品少妇在线视频| 国产婷婷视频在线| 国产精品伦理在线| 亚洲精美视频| aaa日本高清在线播放免费观看| 99久久免费视频.com| 成人国产一区二区| 国产黄a三级三级三级| 久久se精品一区二区| 国产精品av网站| 久久久国产免费| 久久一二三区| 国产精品电影久久久久电影网| 国产欧美日韩另类| 国内激情久久| 久久久久一本一区二区青青蜜月| a级黄色片免费看| 欧美一区不卡| 欧美另类69精品久久久久9999| 精品国产欧美日韩不卡在线观看| 91麻豆精品国产91久久久平台| 最近2019中文字幕大全第二页| 国产jjizz一区二区三区视频| 国产亚洲欧美日韩在线观看一区二区 | 天堂在线中文资源| 99精品视频在线播放观看| 国产一区二区精品在线| 人妻与黑人一区二区三区| av影院午夜一区| 精品综合在线| 免费国产在线视频| 欧美国产精品一区二区| 亚洲午夜精品福利| 国产原创精品视频| 香蕉影视欧美成人| 国产中文字幕视频在线观看| 欧美一区久久久| 欧美三级电影网| 丰满少妇中文字幕| 欧美理论电影在线精品| 亚洲欧洲在线看| 毛片久久久久久| 欧美 日韩 国产 一区| 欧美精品www| 国产一级片毛片| 免费成人在线视频观看| 亚洲一区中文字幕| 高潮毛片7777777毛片| 久久久久久久一区| 亚洲综合五月天| 99热99re6国产在线播放| 一本色道久久综合亚洲91| 亚洲欧美自偷自拍另类| silk一区二区三区精品视频| 亚洲美女av电影| 女人18毛片毛片毛片毛片区二 | 欧美黄色免费网站| 久久久久久久久黄色| 精品在线你懂的| 精品国产乱码久久久久久久软件 | 日本一区二区在线不卡| 91xxx视频| 在线看片国产福利你懂的| 欧美色区777第一页| 日本泡妞xxxx免费视频软件| 国产成人av| 欧美日韩第一页| 国产亚洲欧美日韩高清| 丁香天五香天堂综合| 日本三级中国三级99人妇网站| 中文字幕有码在线视频| 日本韩国欧美国产| 国产吃瓜黑料一区二区| 日韩欧美高清| 欧美洲成人男女午夜视频| 国产精品视频a| 久久久久国产精品免费免费搜索 | 久久国产直播| 99re在线观看视频| 9191在线| 一本一道波多野结衣一区二区| 日韩欧美中文视频| 日韩a一区二区| 欧洲永久精品大片ww免费漫画| 国产福利第一页| 国产精品久久久久久户外露出 | 亚洲一区高清| 欧美片第一页| 日韩av中文字幕在线| 欧美又粗又大又长| 狠狠色丁香久久婷婷综合丁香| 日韩欧美三级电影| 深夜成人在线| 亚洲第一av网站| 懂色av懂色av粉嫩av| 麻豆国产欧美日韩综合精品二区 | 婷婷色在线资源| 另类小说欧美激情| 久久久久久久久久码影片| 啪啪免费视频一区| 日韩一区二区三区在线观看| 中国美女黄色一级片| 日韩成人免费看| 日日噜噜噜噜夜夜爽亚洲精品| 免费毛片b在线观看| 亚洲成色www8888| 日韩av一二三区| 国产99久久精品| 日本香蕉视频在线观看| 欧洲大片精品免费永久看nba| 久久亚洲国产精品| 亚洲中文一区二区三区| 国产精品少妇自拍| 91欧美视频在线| 久久亚洲影视| 亚洲在线免费看| 在线午夜影院| 日韩精品一区二区三区在线播放 | 欧美图片第一页| 爽好久久久欧美精品| 日本不卡高清视频一区| 国产精品久久久久av电视剧| 国产午夜精品一区理论片飘花| 中文字幕手机在线视频| 中文字幕免费不卡在线| 国产精品任我爽爆在线播放| 色噜噜狠狠一区二区三区果冻| 成人片黄网站色大片免费毛片| 久久成人亚洲| 日韩av一区二区三区美女毛片| 日韩一区二区三区免费| 在线视频亚洲欧美| 91丨porny丨在线中文 | 成人影院在线视频| 亚洲精品理论电影| 久久99国产综合精品免费| 欧美国产激情二区三区 | 精品久久毛片| 欧美巨大黑人极品精男| 刘亦菲毛片一区二区三区| 图片区小说区国产精品视频| 色噜噜日韩精品欧美一区二区| 蜜臀国产一区二区三区在线播放| 综合网五月天| 日本午夜精品久久久| 国产精品极品美女粉嫩高清在线| 国产区在线观看| 亚洲精品美女久久| 这里只有精品999| 麻豆成人在线观看| 日本老太婆做爰视频| 久久精品论坛| 国产精品欧美久久久| 成年视频在线观看| 日韩av最新在线观看| 中文字幕+乱码+中文| 亚洲猫色日本管| 波多野结衣 在线| 国模少妇一区二区三区| 鲁一鲁一鲁一鲁一澡| 欧美a级成人淫片免费看| 国产高清精品一区二区| 天堂久久午夜av| 久久久综合av| 欧美另类极品| 亚洲级视频在线观看免费1级| 中文字幕久久熟女蜜桃| 亚洲超丰满肉感bbw| 懂色av蜜臀av粉嫩av永久| 成人毛片老司机大片| 亚洲精品久久久久久宅男| 99伊人成综合| 男人天堂成人网| 亚洲va久久久噜噜噜久久| 亚洲最大激情中文字幕| 日韩制服一区| 91成人福利在线| 91亚洲天堂| 日韩视频亚洲视频| 亚洲欧美日本在线观看| 日韩精品一区二区三区视频 | 日韩精品电影网站| caoporn成人| 亚洲已满18点击进入在线看片| 欧美日韩电影免费看| 午夜精品久久久久久久久久久久久 | 北条麻妃一区二区三区在线观看 | 精品精品国产毛片在线看| 国产一区香蕉久久| 香蕉成人影院| 国产不卡在线观看| 蜜桃视频m3u8在线观看| 久久欧美在线电影| 在线观看电影av| 久久精品小视频| 日p在线观看| 中文字幕在线看视频国产欧美在线看完整 | 国产女同互慰高潮91漫画| 大地资源二中文在线影视观看| 丰满放荡岳乱妇91ww| 免费不卡av网站| 国产专区欧美精品| 久久久久国产一区| 日韩高清不卡一区| 男女啪啪网站视频| 久久亚洲美女| 人人干人人干人人| 蜜臀av性久久久久av蜜臀妖精| 久久久精品三级| 男女男精品网站| 亚洲另类第一页| 久久精品久久精品| 看看黄色一级片| 国产原创一区二区| 99国产精品久久久久久| 狠狠色综合播放一区二区| 日韩欧美理论片| 国产麻豆精品视频| 岛国精品一区二区三区| av欧美精品.com| 能免费看av的网站| 亚洲国产精品精华液2区45| xxxxx99| 亚洲色图欧美在线| 中文字幕av免费在线观看| 夜夜嗨av一区二区三区中文字幕| 久久综合综合久久| 欧美三级欧美成人高清www| 特级做a爱片免费69| 在线影视一区二区三区| 91欧美日韩麻豆精品| 精品欧美一区二区三区精品久久 | 欧美成人合集magnet| 免费在线看电影| 日本乱人伦a精品| 亚洲福利影视| 国产麻豆一区二区三区在线观看| 亚洲a级精品| 国产又大又长又粗又黄| 亚洲婷婷免费| 久久国产乱子伦免费精品| 美女一区二区三区| 国产精品成人免费一区久久羞羞| av动漫一区二区| 欧美性受xxxx黑人| 一区二区三区中文字幕电影| 婷婷激情五月网| 欧美乱妇23p| 天天干视频在线观看| 国产小视频91| 污片视频在线免费观看| 国产精品99久久久久久www| 国产aⅴ精品一区二区四区| 国语精品中文字幕| 欧美gayvideo| 3d动漫一区二区三区| 久久爱www久久做| 亚洲精品乱码久久久久久不卡 | 日韩美女视频网站| 欧美系列在线观看| 成人精品在线播放| 日韩中文字幕网址| 男人天堂视频在线观看| 成人疯狂猛交xxx| 中文字幕亚洲影视| 9色视频在线观看| 日本欧美在线看| 亚洲精品乱码久久| 日韩毛片在线免费观看| 久久精品视频5| 精品久久人人做人人爱| 18免费在线视频| 欧美最猛性xxxxx免费| 国产精品亚洲一区二区在线观看| 日韩av一级大片| 国产亚洲永久域名| 日本中文字幕在线不卡| 国产嫩草影院久久久久| 成人午夜视频在线播放| 精品国产精品网麻豆系列| 超碰在线最新| 成人av电影天堂| 精品国产一区一区二区三亚瑟| 日本福利视频在线| 成人综合在线观看| 国产大学生自拍| 欧美福利视频导航| 日本亚洲精品| 国产精品视频久| 欧美在线电影| 男人透女人免费视频| 99re成人精品视频| 粉嫩aⅴ一区二区三区| 欧美大片国产精品| 中文av资源在线| 亚洲一区二区免费| 亚洲成av人电影| 91视频这里只有精品| 中文字幕巨乱亚洲| 综合久久中文字幕| 亚洲系列中文字幕| 精品成人av| 日韩精品伦理第一区| 久久久久久久欧美精品| 精品少妇人妻一区二区黑料社区| 欧美日韩免费看| 天堂成人在线| 日韩美女中文字幕| 精品日韩毛片| 亚洲xxxx2d动漫1| 国产精品国产三级国产普通话99 | 日韩成人高清视频| 亚洲第一福利视频| 182在线视频观看| 久久riav二区三区| 久久亚洲风情| 懂色av蜜臀av粉嫩av永久| 欧美一区二区视频观看视频| 污污的网站在线免费观看| 99九九视频| 99xxxx成人网| 在哪里可以看毛片| 欧美伊人精品成人久久综合97| 一广人看www在线观看免费视频| 国产日韩在线亚洲字幕中文| 亚洲精品极品少妇16p| 日本人妻一区二区三区| 精品久久久久久亚洲精品| 国产在线视频资源| 成人久久久久久久| 国产一区亚洲| www.色多多| 欧美日韩国产片| 密臀av在线| 日本不卡二区高清三区| 激情综合亚洲精品| 国产黄色片视频| 亚洲天堂一区二区三区| 国产精品久一| av之家在线观看| 日本一区二区三区在线不卡| 99在线精品视频免费观看软件| 国内伊人久久久久久网站视频| 猛男gaygay欧美视频| 三级av免费看| 欧美日韩亚洲精品内裤| 日本免费视频在线观看| 国产美女在线精品免费观看| 日本亚洲三级在线| 久久艹精品视频| 在线看福利67194| 97久久综合精品久久久综合| 日日碰狠狠丁香久燥| 一区二区三区四区乱视频| 理论视频在线| 国产精品视频入口| 日韩在线卡一卡二| jizz国产免费| xvideos亚洲人网站| 女同久久另类99精品国产| 国产乱叫456| 色爱区综合激月婷婷|