TCP擁塞控制

計算機網(wǎng)絡(luò)中的帶寬稿黍、交換結(jié)點中的緩存和處理機等雀摘,都是網(wǎng)絡(luò)的資源玄柏。在某段時間,若對網(wǎng)絡(luò)中某一資源的需求超過了該資源所能提供的可用部分兔辅,網(wǎng)絡(luò)的性能就會變壞。這種情況就叫做擁塞击喂。

擁塞控制就是防止過多的數(shù)據(jù)注入網(wǎng)絡(luò)中维苔,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載。和流量控制不同懂昂,擁塞控制是一個全局性的過程介时,而流量控制是點對點通信量的控制

慢啟動算法與擁塞避免算法

擁塞避免算法的前提是:假定由于分組受到損壞引起的丟失是非常少的,因此分組丟失(發(fā)生超時和接收到重復(fù)的確認(rèn))就意味著在源主機和目的主機之間的某處網(wǎng)絡(luò)發(fā)生了擁塞

慢啟動算法為發(fā)送方的TCP增加了另一個窗口:擁塞窗口潮尝,記為cwnd榕吼。
與另一個網(wǎng)絡(luò)的主機建立TCP連接時,擁塞窗口被初始化為1個報文段(即另一端通告的報文段大小)勉失,每收到一個ACK羹蚣,擁塞窗口就增加一個報文段。

實現(xiàn)

為了防止cwnd增長過大引起網(wǎng)絡(luò)擁塞乱凿,還需設(shè)置一個慢開始門限ssthresh狀態(tài)變量顽素。

ssthresh 的用法如下:

  • 當(dāng)cwnd < ssthresh時,使用慢開始算法徒蟆。
  • 當(dāng)cwnd > ssthresh時胁出,改用擁塞避免算法。
  • 當(dāng)cwnd = ssthresh時段审,慢啟動與擁塞避免算法任意全蝶。
慢啟動與擁塞避免.jpg

無論是在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有收到確認(rèn)ACK寺枉,雖然沒有收到確認(rèn)可能是其他原因抑淫,但是因為無法判定,所以都當(dāng)做擁塞來處理)姥闪,就把慢開始門限設(shè)置為出現(xiàn)擁塞時的發(fā)送窗口大小的一半始苇。然后把擁塞窗口設(shè)置為1,執(zhí)行慢開始算法筐喳。

快速重傳算法

超時重傳是TCP協(xié)議保證數(shù)據(jù)可靠性的一個重要機制催式,其原理是在發(fā)送一個數(shù)據(jù)以后就開啟一個計時器。在一定時間內(nèi)如果沒有得到發(fā)送數(shù)據(jù)報的ACK報文避归,那么就重新發(fā)送數(shù)據(jù)荣月,直到發(fā)送成功為止。

這是數(shù)據(jù)包丟失的情況下給出的一種修補機制槐脏。一般來說喉童,重傳發(fā)生在超時之后,但是如果發(fā)送端接收到3個以上的重復(fù)ACK顿天,就應(yīng)該意識到堂氯,數(shù)據(jù)丟了,需要重新傳遞牌废。這個機制不需要等到重傳定時器溢出咽白,所以叫做快速重傳。

而快速重傳以后鸟缕,因為走的不是慢啟動而是擁塞避免算法晶框,所以這又叫做快速恢復(fù)算法排抬。

  • 為什么需要收到3個以上的重復(fù)ACK,才會執(zhí)行快速重傳授段?

在沒有快速重傳和快速恢復(fù)的算法之前蹲蒲,重傳依靠發(fā)送方的retransmit timeout,就在timeout內(nèi)如果沒有接收到對方的ACK侵贵,默認(rèn)包丟失届搁,發(fā)送方就重傳。
包丟失的原因:

  • 包 checksum 出錯
  • 網(wǎng)絡(luò)擁塞
  • 網(wǎng)絡(luò)斷窍育,包括路由重收斂卡睦。

但是無法判斷是 哪一種算法,于是采用最笨的方法漱抓,就是將自己的發(fā)送速率減半表锻,即cwnd/2,這樣的方法對2是有效的乞娄∷惭罚可以緩解網(wǎng)絡(luò)擁塞。

但是對于1來說补胚,丟包是因為偶爾出錯引起的码耐,一丟包就對半減速不合理追迟。于是有了快速重傳算法溶其,基于在反向還可以接收到ACK,可以認(rèn)為網(wǎng)絡(luò)并沒有斷敦间,否則也接收不到ACK瓶逃,如果在timeout時間內(nèi)沒有接收到>2的重復(fù)的 ACK,則大概率是亂序廓块。而如果收到3個或2個以上的duplicated ACK厢绝,則大概率是丟包。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末带猴,一起剝皮案震驚了整個濱河市昔汉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拴清,老刑警劉巖靶病,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異口予,居然都是意外死亡娄周,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門沪停,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煤辨,“玉大人裳涛,你說我怎么就攤上這事≈诒妫” “怎么了端三?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹃彻。 經(jīng)常有香客問我技肩,道長,這世上最難降的妖魔是什么浮声? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任虚婿,我火速辦了婚禮,結(jié)果婚禮上泳挥,老公的妹妹穿的比我還像新娘然痊。我一直安慰自己,他們只是感情好屉符,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布剧浸。 她就那樣靜靜地躺著,像睡著了一般矗钟。 火紅的嫁衣襯著肌膚如雪唆香。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天吨艇,我揣著相機與錄音躬它,去河邊找鬼。 笑死东涡,一個胖子當(dāng)著我的面吹牛冯吓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疮跑,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼组贺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祖娘?” 一聲冷哼從身側(cè)響起失尖,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渐苏,沒想到半個月后掀潮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡整以,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年胧辽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片公黑。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡邑商,死狀恐怖摄咆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情人断,我是刑警寧澤吭从,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站恶迈,受9級特大地震影響涩金,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜暇仲,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一步做、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奈附,春花似錦全度、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至佑颇,卻和暖如春顶掉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挑胸。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工痒筒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗜暴。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓凸克,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闷沥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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

  • 21.1 引言 TCP提供可靠的運輸層咐容。它使用的方法之一就是確認(rèn)從另一端收到的數(shù)據(jù)舆逃。但數(shù)據(jù)和確認(rèn)都有可能會丟失。T...
    張芳濤閱讀 2,984評論 0 8
  • TCP超時與重傳機制 TCP協(xié)議是一種面向連接的可靠的傳輸層協(xié)議戳粒,它保證了數(shù)據(jù)的可靠傳輸路狮,對于一些出錯,超時丟包等...
    狗尾巴草敗了閱讀 563評論 0 2
  • 個人認(rèn)為蔚约,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記奄妨,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評論 0 8
  • 六、TCP可靠傳輸?shù)膶崿F(xiàn) 首先介紹以字節(jié)為單位的滑動窗口苹祟。為了講述可靠傳輸原理的方便砸抛,假定數(shù)據(jù)傳輸只在一個方向進行...
    dmmy大印閱讀 1,649評論 0 1
  • 1.這篇文章不是本人原創(chuàng)的评雌,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,037評論 6 174