TCP滑動窗口

滑動窗口協(xié)議

sliding_win .png

窗口是緩存的一部分丑蛤,用來暫時存放字節(jié)流欲低。發(fā)送方和接收方各有一個窗口聪轿,接收方通過 TCP 報文段中的窗口字段告訴發(fā)送方自己的窗口大小,發(fā)送方根據(jù)這個值和其它信息設(shè)置自己的窗口大小笛质。

發(fā)送窗口內(nèi)的字節(jié)都允許被發(fā)送,接收窗口內(nèi)的字節(jié)都允許被接收捞蚂。如果發(fā)送窗口左部的字節(jié)已經(jīng)發(fā)送并且收到了確認妇押,那么就將發(fā)送窗口向右滑動一定距離,直到左部第一個字節(jié)不是已發(fā)送并且已確認的狀態(tài)洞难;接收窗口的滑動類似舆吮,接收窗口左部字節(jié)已經(jīng)發(fā)送確認并交付主機,就向右滑動接收窗口队贱。

接收窗口只會對窗口內(nèi)最后一個按序到達的字節(jié)進行確認色冀,例如接收窗口已經(jīng)收到的字節(jié)為 {31, 34, 35},其中 {31} 按序到達柱嫌,而 {32, 33} 就不是锋恬,因此只對字節(jié) 31 進行確認。發(fā)送方得到一個字節(jié)的確認之后编丘,就知道這個字節(jié)之前的所有字節(jié)都已經(jīng)被接收与学。

比特滑動窗口協(xié)議(停等協(xié)議)

當發(fā)送窗口和接收窗口的大小固定為1時彤悔,滑動窗口協(xié)議退化為停等協(xié)議(stop-and-wait)。該協(xié)議規(guī)定發(fā)送方每發(fā)送一幀后就要停下來索守,等待接收方已正確接收的確認(acknowledgement)返回后才能繼續(xù)發(fā)送下一幀晕窑。由于接收方需要判斷接收到的幀是新發(fā)的幀還是重新發(fā)送的幀,因此發(fā)送方要為每一個幀加一個序號卵佛。由于停等協(xié)議規(guī)定只有一幀完全發(fā)送成功后才能發(fā)送新的幀杨赤,因而只用一比特來編號就夠了。

回退N幀協(xié)議:

由于停等協(xié)議要為每一個幀進行確認后才繼續(xù)發(fā)送下一幀截汪,大大降低了信道利用率疾牲,因此又提出了后退n協(xié)議。后退n協(xié)議中衙解,發(fā)送方在發(fā)完一個數(shù)據(jù)幀后阳柔,不停下來等待應(yīng)答幀,而是連續(xù)發(fā)送若干個數(shù)據(jù)幀蚓峦,即使在連續(xù)發(fā)送過程中收到了接收方發(fā)來的應(yīng)答幀舌剂,也可以繼續(xù)發(fā)送。且發(fā)送方在每發(fā)送完一個數(shù)據(jù)幀時都要設(shè)置超時定時器枫匾。只要在所設(shè)置的超時時間內(nèi)仍收到確認幀架诞,就要重發(fā)相應(yīng)的數(shù)據(jù)幀。如:當發(fā)送方發(fā)送了N個幀后干茉,若發(fā)現(xiàn)該N幀的前一個幀在計時器超時后仍未返回其確認信息谴忧,則該幀被判為出錯或丟失,此時發(fā)送方就不得不重新發(fā)送出錯幀及其后的N幀角虫。

backn.png

從這里不難看出沾谓,后退n協(xié)議一方面因連續(xù)發(fā)送數(shù)據(jù)幀而提高了效率,但另一方面戳鹅,在重傳時又必須把原來已正確傳送過的數(shù)據(jù)幀進行重傳(僅因這些數(shù)據(jù)幀之前有一個數(shù)據(jù)幀出了錯)均驶,這種做法又使傳送效率降低。由此可見枫虏,若傳輸信道的傳輸質(zhì)量很差因而誤碼率較大時妇穴,連續(xù)測協(xié)議不一定優(yōu)于停止等待協(xié)議。此協(xié)議中的發(fā)送窗口的大小為k隶债,接收窗口仍是1腾它。

選擇重傳協(xié)議:

在后退n協(xié)議中,接收方若發(fā)現(xiàn)錯誤幀就不再接收后續(xù)的幀死讹,即使是正確到達的幀瞒滴,這顯然是一種浪費。另一種效率更高的策略是當接收方發(fā)現(xiàn)某幀出錯后赞警,其后繼續(xù)送來的正確的幀雖然不能立即遞交給接收方的高層妓忍,但接收方仍可收下來虏两,存放在一個緩沖區(qū)中,同時要求發(fā)送方重新傳送出錯的那一幀世剖。一旦收到重新傳來的幀后定罢,就可以原已存于緩沖區(qū)中的其余幀一并按正確的順序遞交高層。這種方法稱為選擇重發(fā)(SELECTICE REPEAT)搁廓,其工作過程如圖所示引颈。顯然,選擇重發(fā)減少了浪費境蜕,但要求接收方有足夠大的緩沖區(qū)空間。

參考資料:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凌停,一起剝皮案震驚了整個濱河市粱年,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罚拟,老刑警劉巖台诗,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赐俗,居然都是意外死亡拉队,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門阻逮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粱快,“玉大人,你說我怎么就攤上這事叔扼∈驴蓿” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵瓜富,是天一觀的道長鳍咱。 經(jīng)常有香客問我,道長与柑,這世上最難降的妖魔是什么谤辜? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮价捧,結(jié)果婚禮上丑念,老公的妹妹穿的比我還像新娘。我一直安慰自己干旧,他們只是感情好渠欺,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著椎眯,像睡著了一般挠将。 火紅的嫁衣襯著肌膚如雪胳岂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天舔稀,我揣著相機與錄音乳丰,去河邊找鬼。 笑死内贮,一個胖子當著我的面吹牛产园,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播夜郁,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼什燕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竞端?” 一聲冷哼從身側(cè)響起屎即,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎事富,沒想到半個月后技俐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡统台,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年雕擂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贱勃。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡井赌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出募寨,到底是詐尸還是另有隱情族展,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布拔鹰,位于F島的核電站仪缸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏列肢。R本人自食惡果不足惜恰画,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓷马。 院中可真熱鬧拴还,春花似錦、人聲如沸欧聘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至费封,卻和暖如春焕妙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弓摘。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工焚鹊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人韧献。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓末患,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锤窑。 傳聞我的和親對象是個殘疾皇子璧针,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355