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