TCP是如何運用窗口進行流量控制

 什麼是窗口,TCP是如何運用窗口進行流量控制的

 

窗口一個既抽象而又具體的名字。窗口就是在TCP傳輸中使發送方和接受方能夠協同運作的一種機制。對於發送方而言,不可在接收方沒有緩衝區的時候還繼續發送,否則數據不就丟失了嗎?而且重發機制會進一步加重網絡負擔。所以這個時候發送方需要知道接收方的通告窗口是多大。另一方面,發送方自己還有一個擁塞窗口,只要重發了數據,就將此窗口變爲1,限制後續發送數據段的大小,然後擁塞窗口在網絡正常時又會自動增大。
記住,擁塞窗口和通告窗口,這是比較重要的兩個窗口哦。

 

說說我的一點看法:
    TCP滑動窗口技術通過動態改變窗口大小來調節兩臺主機間數據傳輸。每個TCP/IP主機支持全雙工數據傳輸,因此TCP有兩個滑動窗口:一個用於接收數據,另一個用於發送數據。TCP使用肯定確認技術,其確認號指的是下一個所期待的字節。
    假定發送方設備以每一次三個數據包的方式發送數據,也就是說,窗口大小爲3。發送方發送序列號爲1、2、3的三個數據包,接收方設備成功接收數據包,用序列號4確認。發送方設備收到確認,繼續以窗口大小3發送數據。當接收方設備要求降低或者增大網絡流量時,可以對窗口大小進行減小或者增加,本例降低窗口大小爲2,每一次發送兩個數據包。當接收方設備要求窗口大小爲0,表明接收方已經接收了全部數據,或者接收方應用程序沒有時間讀取數據,要求暫停發送。發送方接收到攜帶窗口號爲0的確認,停止這一方向的數據傳輸。
    滑動窗口機制爲端到端設備間的數據傳輸提供了可靠的流量控制機制。然而,它只能在源端設備和目的端設備起作用,當網絡中間設備(例如路由器等)發生擁塞時,滑動窗口機制將不起作用。

 

T C P使用一種窗口(w i n d o w)機制來控制數據流。當一個連接建立時,連接的每一端分配一個緩衝區來保存輸入的數據,並將緩衝區的尺寸發送給另一端。當數據到達時,接收方發送確認,其中包含了自己剩餘的緩衝區尺寸。剩餘的緩衝區空間的大小被稱爲窗口( w i n d o w) ,指出窗口大小的通知稱爲窗口通告(window advertisement) 。接收方在發送的每一確認中都含有一個窗口通告。 
  如果接收方應用程序讀數據的速度能夠與數據到達的速度一樣快,接收方將在每一確認中發送一個正的窗口通告。然而,如果發送方操作的速度快於接收方(由於C P U更快) ,接收到的數據最終將充滿接收方的緩衝區,導致接收方通告一個零窗口( zero window) 。發送方收到一個零窗口通告時,必須停止發送,直到接收方重新通告一個正的窗口。 
 TCP的特點之一是提供體積可變的滑動窗口機制,支持端到端的流量控制。TCP的窗口以字節爲單位進行調整,以適應接收方的處理能力。處理過程如下: 
    (1)TCP連接階段,雙方協商窗口尺寸,同時接收方預留數據緩存區; 
    (2)發送方根據協商的結果,發送符合窗口尺寸的數據字節流,並等待對方的確認; 
    (3)發送方根據確認信息,改變窗口的尺寸,增加或者減少發送未得到確認的字節流中的字節數。調整過程包括:如果出現發送擁塞,發送窗口縮小爲原來的一半,同時將超時重傳的時間間隔擴大一倍。 
  TCP的窗口機制和確認保證了數據傳輸的可靠性和流量控制。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章