什么是滑動窗口滑動窗口的機制
什么是滑動窗口滑動窗口的機制
滑動窗口概念不僅存在于數據鏈路層,也存在于傳輸層,兩者有不同的協議,但基本原理是相近的。那么你對滑動窗口了解多少呢?以下是由學習啦小編整理關于什么是滑動窗口的內容,希望大家喜歡!
滑動窗口的概念
滑動窗口(Sliding window)是一種流量控制技術。早期的網絡通信中,通信雙方不會考慮網絡的擁擠情況直接發送數據。由于大家不知道網絡擁塞狀況,同時發送數據,導致中間節點阻塞掉包,誰也發不了數據,所以就有了滑動窗口機制來解決此問題。參見滑動窗口如何根據網絡擁塞發送數據仿真視頻。圖片是一個滑動窗口的實例:
滑動窗口協議是用來改善吞吐量的一種技術,即容許發送方在接收任何應答之前傳送附加的包。接收方告訴發送方在某一時刻能送多少包(稱窗口尺寸)。
TCP中采用滑動窗口來進行傳輸控制,滑動窗口的大小意味著接收方還有多大的緩沖區可以用于接收數據。發送方可以通過滑動窗口的大小來確定應該發送多少字節的數據。當滑動窗口為0時,發送方一般不能再發送數據報,但有兩種情況除外,一種情況是可以發送緊急數據,例如,允許用戶終止在遠端機上的運行進程。另一種情況是發送方可以發送一個1字節的數據報來通知接收方重新聲明它希望接收的下一字節及發送方的滑動窗口大小。
滑動窗口的機制
滑動窗口協議的基本原理就是在任意時刻,發送方都維持了一個連續的允許發送的幀的序號,稱為發送窗口;同時,接收方也維持了一個連續的允許接收的幀的序號,稱為接收窗口。發送窗口和接收窗口的序號的上下界不一定要一樣,甚至大小也可以不同。不同的滑動窗口協議窗口大小一般不同。發送方窗口內的序列號代表了那些已經被發送,但是還沒有被確認的幀,或者是那些可以被發送的幀。
下面舉例說明,假設發送窗口尺寸為2,接收窗口尺寸為1:
分析:①初始態,發送方沒有幀發出,發送窗口前后沿相重合。接收方0號窗口打開,等待接收0號幀;②發送方打開0號窗口,表示已發出0幀但尚確認返回信息。此時接收窗口狀態不變;③發送方打開0、1號窗口,表示0、1號幀均在等待確認之列。至此,發送方打開的窗口數已達規定限度,在未收到新的確認返回幀之前,發送方將暫停發送新的數據幀。接收窗口此時狀態仍未變;④接收方已收到0號幀,0號窗口關閉,1號窗口打開,表示準備接收1號幀。此時發送窗口狀態不變;⑤發送方收到接收方發來的0號幀確認返回信息,關閉0號窗口,表示從重發表中刪除0號幀。此時接收窗口狀態仍不變;⑥發送方繼續發送2號幀,2號窗口打開,表示2號幀也納入待確認之列。至此,發送方打開的窗口又已達規定限度,在未收到新的確認返回幀之前,發送方將暫停發送新的數據幀,此時接收窗口狀態仍不變;⑦接收方已收到1號幀,1號窗口關閉,2號窗口打開,表示準備接收2號幀。此時發送窗口狀態不變;⑧發送方收到接收方發來的1號幀收畢的確認信息,關閉1號窗口,表示從重發表中刪除1號幀。此時接收窗口狀態仍不變。
若從滑動窗口的觀點來統一看待1比特滑動窗口、后退n及選擇重傳三種協議,它們的差別僅在于各自窗口尺寸的大小不同而已。1比特滑動窗口協議:發送窗口=1,接收窗口=1;后退n協議:發送窗口>1,接收窗口=1;選擇重傳協議:發送窗口>1,接收窗口>1。
滑動窗口流量控制
TCP的特點之一是提供體積可變的滑動窗口機制,支持端到端的流量控制。TCP的窗口以字節為單位進行調整,以適應接收方的處理能力。處理過程如下:
TCP連接階段,雙方協商窗口尺寸,同時接收方預留數據緩存區;
發送方根據協商的結果,發送符合窗口尺寸的數據字節流,并等待對方的確認;
發送方根據確認信息,改變窗口的尺寸,增加或者減少發送未得到確認的字節流中的字節數。調整過程包括:如果出現發送擁塞,發送窗口縮小為原來的一半,同時將超時重傳的時間間隔擴大一倍。
滑動窗口機制為端到端設備間的數據傳輸提供了可靠的流量控制機制。然而,它只能在源端設備和目的端設備起作用,當網絡中間設備(例如路由器等)發生擁塞時,滑動窗口機制將不起作用。
看過“滑動窗口的機制”的人還看了: