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