什麼是滑動視窗滑動視窗的機制

  滑動視窗概念不僅存在於資料鏈路層,也存在於傳輸層,兩者有不同的協議,但基本原理是相近的。那麼你對滑動視窗瞭解多少呢?以下是由小編整理關於什麼是滑動視窗的內容,希望大家喜歡!

  滑動視窗的概念

  滑動視窗***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連線階段,雙方協商視窗尺寸,同時接收方預留資料快取區;

  傳送方根據協商的結果,傳送符合視窗尺寸的資料位元組流,並等待對方的確認;

  傳送方根據確認資訊,改變視窗的尺寸,增加或者減少傳送未得到確認的位元組流中的位元組數。調整過程包括:如果出現傳送擁塞,傳送視窗縮小為原來的一半,同時將超時重傳的時間間隔擴大一倍。

  滑動視窗機制為端到端裝置間的資料傳輸提供了可靠的流量控制機制。然而,它只能在源端裝置和目的端裝置起作用,當網路中間裝置***例如路由器等***發生擁塞時,滑動視窗機制將不起作用。

滑動視窗的機制