TCP的快速重傳機(jī)制

一垃沦、快速重傳機(jī)制

上一篇講到了TCP 的超時(shí)重傳懂牧,但是超時(shí)重傳往往會帶來許多微妙的問題锋边,比如說:

  • 當(dāng)一個(gè)報(bào)文段丟失時(shí)皱坛,會等待一定的超時(shí)周期然后才重傳分組,增加了端到端的時(shí)延豆巨。
  • 當(dāng)一個(gè)報(bào)文段丟失時(shí)剩辟,在其等待超時(shí)的過程中,可能會出現(xiàn)這種情況:其后的報(bào)文段已經(jīng)被接收端接收但卻遲遲得不到確認(rèn)往扔,發(fā)送端會認(rèn)為也丟失了贩猎,從而引起不必要的重傳,既浪費(fèi)資源也浪費(fèi)時(shí)間瓤球。

幸運(yùn)的是融欧,由于TCP采用的是累計(jì)確認(rèn)機(jī)制,即當(dāng)接收端收到比期望序號大的報(bào)文段時(shí)卦羡,便會重復(fù)發(fā)送最近一次確認(rèn)的報(bào)文段的確認(rèn)信號噪馏,我們稱之為冗余ACK(duplicate ACK)麦到。
如圖所示,報(bào)文段1成功接收并被確認(rèn)ACK 2欠肾,接收端的期待序號為2瓶颠,當(dāng)報(bào)文段2丟失,報(bào)文段3失序到來刺桃,與接收端的期望不匹配粹淋,接收端重復(fù)發(fā)送冗余ACK 2。


這樣瑟慈,如果在超時(shí)重傳定時(shí)器溢出之前桃移,接收到連續(xù)的三個(gè)重復(fù)冗余ACK(其實(shí)是收到4個(gè)同樣的ACK,第一個(gè)是正常的葛碧,后三個(gè)才是冗余的)借杰,發(fā)送端便知曉哪個(gè)報(bào)文段在傳輸過程中丟失了,于是重發(fā)該報(bào)文段进泼,不需要等待超時(shí)重傳定時(shí)器溢出蔗衡,大大提高了效率。這便是快速重傳機(jī)制乳绕。


二绞惦、為什么是3次冗余ACK

首先要明白一點(diǎn),即使發(fā)送端是按序發(fā)送洋措,由于TCP包是封裝在IP包內(nèi)济蝉,IP包在傳輸時(shí)亂序,意味著TCP包到達(dá)接收端也是亂序的菠发,亂序的話也會造成接收端發(fā)送冗余ACK堆生。那發(fā)送冗余ACK是由于亂序造成的還是包丟失造成的,這里便需要好好權(quán)衡一番雷酪,因?yàn)榘?次冗余ACK作為判定丟失的準(zhǔn)則其本身就是估計(jì)值。
假定通信雙方如下:

A為發(fā)送端涝婉,B為接收端
A的待發(fā)報(bào)文段序號為 N-1,N,N+1,N+2
假設(shè)報(bào)文段N-1成功到達(dá)

`


從以上羅列的情況可以看出哥力,
在沒丟失的情況下,有40%的可能出現(xiàn)3次冗余ACK
在亂序的情況下必定是2次冗余ACK
在丟失的情況下墩弯,必定出現(xiàn)3次冗余ACK

基于這樣的概率吩跋,選定3次冗余ACK作為閾值也算是合理的。在實(shí)際抓包中渔工,大多數(shù)的快速重傳都會在大于3次冗余ACK后發(fā)生锌钮。

三、快速重傳應(yīng)用實(shí)例

快速重傳機(jī)制比較好理解引矩,這里貼上筆者做的兩幅圖供大家學(xué)習(xí)參考梁丘,若有建議可以提出侵浸。第一幅圖是在某報(bào)文段的超時(shí)重傳定時(shí)器溢出前重傳丟失報(bào)文段,第二幅圖是對應(yīng)的接收端緩存隊(duì)列的窗口移動示意氛谜。


快速重傳:在某報(bào)文段的超時(shí)重傳定時(shí)器溢出前重傳丟失報(bào)文段
接收端緩存隊(duì)列的窗口移動示意
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掏觉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子值漫,更是在濱河造成了極大的恐慌澳腹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杨何,死亡現(xiàn)場離奇詭異酱塔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)危虱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門羊娃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人槽地,你說我怎么就攤上這事迁沫。” “怎么了捌蚊?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵集畅,是天一觀的道長。 經(jīng)常有香客問我缅糟,道長挺智,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任窗宦,我火速辦了婚禮赦颇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赴涵。我一直安慰自己媒怯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布髓窜。 她就那樣靜靜地躺著扇苞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寄纵。 梳的紋絲不亂的頭發(fā)上鳖敷,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音程拭,去河邊找鬼定踱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恃鞋,可吹牛的內(nèi)容都是我干的崖媚。 我是一名探鬼主播亦歉,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼至扰!你這毒婦竟也來了鳍徽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤敢课,失蹤者是張志新(化名)和其女友劉穎阶祭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體直秆,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡濒募,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了圾结。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰剃。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖筝野,靈堂內(nèi)的尸體忽然破棺而出晌姚,到底是詐尸還是另有隱情,我是刑警寧澤歇竟,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布挥唠,位于F島的核電站,受9級特大地震影響焕议,放射性物質(zhì)發(fā)生泄漏宝磨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一盅安、第九天 我趴在偏房一處隱蔽的房頂上張望唤锉。 院中可真熱鬧,春花似錦别瞭、人聲如沸窿祥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壁肋。三九已至,卻和暖如春籽慢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猫胁。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工箱亿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弃秆。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓届惋,卻偏偏與公主長得像髓帽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子脑豹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容