TCP的流量控制【轉(zhuǎn)】

原文鏈接:
TCP的流量控制

1.TCP的滑動(dòng)窗口

為了提高信道的利用率TCP協(xié)議不使用停止等待協(xié)議,而是使用連續(xù)ARQ協(xié)議卓起,意思就是可以連續(xù)發(fā)出若干個(gè)分組然后等待確認(rèn),而不是發(fā)送一個(gè)分組就停止并等待該分組的確認(rèn)。
TCP的兩端都有發(fā)送/接收緩存和發(fā)送/接收窗口爪飘。TCP的緩存是一個(gè)循環(huán)隊(duì)列梧喷,其中發(fā)送窗口可以用3個(gè)指針表示砌左。而發(fā)送窗口的大小受TCP數(shù)據(jù)報(bào)中窗口大小的影響,TCP數(shù)據(jù)報(bào)中的窗口大小是接收端通知發(fā)送端其還可以接收多少數(shù)據(jù)铺敌,所以發(fā)送窗口根據(jù)接收的的窗口大小的值動(dòng)態(tài)變化汇歹。
以下的幾張圖片就幫助理解一下滑動(dòng)窗口的機(jī)制:




注意上圖中的3個(gè)指針P1、P2偿凭、P3产弹!此時(shí)接收窗口中接收的數(shù)據(jù)可能是失序的,但是也先存儲(chǔ)在接收緩存之中弯囊。發(fā)送確認(rèn)號(hào)的時(shí)候依然發(fā)送31痰哨,表示B期望接收的下一個(gè)數(shù)據(jù)報(bào)的標(biāo)示符是31。



當(dāng)B收到31后連同之前接收到的數(shù)據(jù)報(bào)匾嘱,發(fā)送確認(rèn)號(hào)34斤斧,此時(shí)A的滑動(dòng)窗口可以向前移動(dòng)了。

如果發(fā)送窗口中的數(shù)據(jù)報(bào)都屬于已發(fā)送但未被確認(rèn)的話霎烙,那么A就不能再繼續(xù)發(fā)送數(shù)據(jù)撬讽,而需要進(jìn)行等待。

2.TCP流量控制

所謂流量控制就是讓發(fā)送發(fā)送速率不要過快悬垃,讓接收方來得及接收游昼。利用滑動(dòng)窗口機(jī)制就可以實(shí)施流量控制。
原理這就是運(yùn)用TCP報(bào)文段中的窗口大小字段來控制尝蠕,發(fā)送方的發(fā)送窗口不可以大于接收方發(fā)回的窗口大小烘豌。
考慮一種特殊的情況,就是接收方若沒有緩存足夠使用看彼,就會(huì)發(fā)送零窗口大小的報(bào)文扇谣,此時(shí)發(fā)送方將發(fā)送窗口設(shè)置為0,停止發(fā)送數(shù)據(jù)闲昭。之后接收方有足夠的緩存罐寨,發(fā)送了非零窗口大小的報(bào)文,但是這個(gè)報(bào)文在中途丟失的序矩,那么發(fā)送方的發(fā)送窗口就一直為零導(dǎo)致死鎖鸯绿。
解決這個(gè)問題,TCP為每一個(gè)連接設(shè)置一個(gè)持續(xù)計(jì)時(shí)器(persistence timer)。只要TCP的一方收到對(duì)方的零窗口通知瓶蝴,就啟動(dòng)該計(jì)時(shí)器毒返,周期性的發(fā)送一個(gè)零窗口探測(cè)報(bào)文段。對(duì)方就在確認(rèn)這個(gè)報(bào)文的時(shí)候給出現(xiàn)在的窗口大邢鲜帧(注意:TCP規(guī)定拧簸,即使設(shè)置為零窗口,也必須接收以下幾種報(bào)文段:零窗口探測(cè)報(bào)文段男窟、確認(rèn)報(bào)文段和攜帶緊急數(shù)據(jù)的報(bào)文段)盆赤。

3.傳輸效率及Nagle算法

TCP的數(shù)據(jù)傳輸分為交互數(shù)據(jù)流和成塊數(shù)據(jù)流,交互數(shù)據(jù)流一般是一些交互式應(yīng)用程序的命令歉眷,所以這些數(shù)據(jù)很小牺六,而考慮到TCP報(bào)頭和IP報(bào)頭的總和就有40字節(jié),如果數(shù)據(jù)量很小的話汗捡,那么網(wǎng)絡(luò)的利用效率就較低淑际。
數(shù)據(jù)傳輸使用Nagle算法,Nagle算法很簡(jiǎn)單扇住,就是規(guī)定一個(gè)TCP連接最多只能有一個(gè)未被確認(rèn)的未完成的小分組春缕。在該分組的確認(rèn)到達(dá)之前不能發(fā)送其他的小分組。
但是也要考慮另一個(gè)問題艘蹋,叫做糊涂窗口綜合癥锄贼。當(dāng)接收方的緩存已滿的時(shí)候,交互應(yīng)用程序一次只從緩存中讀取一個(gè)字節(jié)(這時(shí)候緩存中騰出一個(gè)字節(jié))簿训,然后向發(fā)送方發(fā)送確認(rèn)信息咱娶,此時(shí)發(fā)送方再發(fā)送一個(gè)字節(jié)(收到的窗口大小為1)米间,這樣網(wǎng)絡(luò)的效率很低强品。
素以要解決這個(gè)問題,可以讓接收方等待一段時(shí)間屈糊,使得接收緩存已有最夠的空間容納一個(gè)最長(zhǎng)報(bào)文段的榛,或者等到接收緩存已有一半的空間。只要這兩種情況出現(xiàn)一種逻锐,就發(fā)送確認(rèn)報(bào)文夫晌,同時(shí)發(fā)送方可以把數(shù)據(jù)積累成大的報(bào)文段發(fā)送。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昧诱,一起剝皮案震驚了整個(gè)濱河市晓淀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盏档,老刑警劉巖凶掰,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡懦窘,警方通過查閱死者的電腦和手機(jī)前翎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畅涂,“玉大人港华,你說我怎么就攤上這事∥缢ィ” “怎么了立宜?”我有些...
    開封第一講書人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)苇经。 經(jīng)常有香客問我赘理,道長(zhǎng),這世上最難降的妖魔是什么扇单? 我笑而不...
    開封第一講書人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任商模,我火速辦了婚禮,結(jié)果婚禮上蜘澜,老公的妹妹穿的比我還像新娘施流。我一直安慰自己,他們只是感情好鄙信,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開白布瞪醋。 她就那樣靜靜地躺著,像睡著了一般装诡。 火紅的嫁衣襯著肌膚如雪银受。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,821評(píng)論 1 314
  • 那天鸦采,我揣著相機(jī)與錄音宾巍,去河邊找鬼。 笑死渔伯,一個(gè)胖子當(dāng)著我的面吹牛顶霞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锣吼,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼选浑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了玄叠?” 一聲冷哼從身側(cè)響起古徒,我...
    開封第一講書人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎读恃,沒想到半個(gè)月后隧膘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崎苗,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年舀寓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胆数。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡互墓,死狀恐怖必尼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情篡撵,我是刑警寧澤判莉,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站育谬,受9級(jí)特大地震影響券盅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膛檀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一锰镀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咖刃,春花似錦泳炉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至枫浙,卻和暖如春刨肃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背箩帚。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工真友, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膏潮。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓锻狗,卻偏偏與公主長(zhǎng)得像满力,于是被迫代替她去往敵國(guó)和親焕参。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

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

  • 20.1 引言 在第15章我們看到TFTP使用了停止等待協(xié)議油额。數(shù)據(jù)發(fā)送方在發(fā)送下一個(gè)數(shù)據(jù)塊之前需要等待接收對(duì)已發(fā)送...
    張芳濤閱讀 878評(píng)論 0 2
  • 個(gè)人認(rèn)為叠纷,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,062評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的潦嘶,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的涩嚣,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,078評(píng)論 6 174
  • 24.1 引言 TCP已經(jīng)在從1200 b/s的撥號(hào)SLIP鏈路到以太數(shù)據(jù)鏈路上運(yùn)行了許多年。在80年代和90年代...
    張芳濤閱讀 1,495評(píng)論 0 3
  • 21.1 引言 TCP提供可靠的運(yùn)輸層。它使用的方法之一就是確認(rèn)從另一端收到的數(shù)據(jù)航厚。但數(shù)據(jù)和確認(rèn)都有可能會(huì)丟失顷歌。T...
    張芳濤閱讀 3,017評(píng)論 0 8