TCP IP詳解 滑動視窗機制及其三種協議

2021-08-22 07:19:41 字數 1617 閱讀 2610

在介紹滑動視窗之前先來簡單介紹一下tcp可靠傳輸原理中的停止等待協議,該協議就是傳送方每傳送乙個報文段後就停止傳送,一直等收到接收方的確認後再傳送下乙個報文段。

tcp通訊是全雙工的,這裡為了方便理解,就以乙個方向為例,假設a為傳送方,b為接收方。a會有乙個傳送視窗,b有乙個接收視窗。

傳送視窗表示在沒有收到b確認的情況下,a也可以連續把傳送視窗的資料傳送出去。但是已經傳送過的資料在未收到確認之前,它還需要暫時保留,以便於超時重傳時使用。傳送視窗越大,它就可以在收到對方確認之前傳送更多的資料,因而獲得更高的傳輸效率。(但是a的傳送視窗的值不能超過b的接收視窗的大小,還會受到網路擁塞程度的影響)。

傳送視窗的位置由視窗前沿和後沿的位置共同確定。

它後沿變化有兩種,(1)不動(沒有收到新的確定)(2)前移(收到新的確認);

前沿是不斷向前移動的,但也可能不動(1)沒有收到新確認,對方視窗也不變,(2)收到新的確認,對方的接收視窗縮小了,使前沿正好不變)

p3-p1:a的傳送視窗

p2-p1:已傳送但是沒有收到確定

p3-p2:允許傳送但是未傳送(可用視窗)

接收方b只對按序到達的資料中最高序號給出確認。

此外傳送方和接收方都有自己的緩衝區

傳送緩衝區存放:

1、傳送發tcp準備傳送的資料

2、tcp已傳送但尚未收到確認的資料(為超時重傳準備)

接收緩衝區存放:

1、按序到達但未被應用程式讀取的資料

2、未按序到達的資料

滑動視窗的3種協議

1、1位元滑動視窗協議(傳送視窗=1,接收視窗=1)

當傳送視窗和接收視窗大小都為1時,滑動視窗協議退化成停止等待協議,因為傳送方需要判斷每個傳送的幀是新傳送的幀還是超時重傳的幀,故給每個幀前都加乙個序號,由於停止等待協議中只有當乙個幀傳送確認後才能傳送下乙個,所以用1個位元來編號即可。

2、後退n協議(傳送視窗》1,接收視窗》1)

由於停等協議要為每乙個幀進行確認後才繼續傳送下一幀,大大降低了通道利用率,因此又提出了後退n協議。後退n協議中,傳送方在發完乙個資料幀後,不停下來等待應答幀,而是連續傳送若干個資料幀,即使在連續傳送過程中收到了接收方發來的應答幀,也可以繼續傳送。且傳送方在每傳送完乙個資料幀時都要設定超時定時器。只要在所設定的超時時間內仍收到確認幀,就要重發相應的資料幀。如:當傳送方傳送了n個幀後,若發現該n幀的前乙個幀在計時器超時後仍未返回其確認資訊,則該幀被判為出錯或丟失,此時傳送方就不得不重新傳送出錯幀及其後的n幀。缺點也很明顯,就是重發出錯的幀和之後的即使沒出錯的幀。

3、選擇重傳協議(傳送視窗》1,接收視窗》1)

當接收方發現某個幀出錯後(可能未按序到達),它將後面到達的正確的幀放入接收緩衝區中,同時要求傳送方重傳出錯的幀(對按序到達的最大序號進行確認,當傳送方收到重複確認了就知道出錯了),當重傳的幀到達後,將緩衝區中按序一併傳送給高層

滑動視窗詳解及其應用

僅供自己複習 借鑑李威大佬的 滑動視窗說白了也是雙指標的一種變體,不過區別在於最開始視窗裡為空 也就是說左右指標指向同乙個 然後不斷移動右邊的指標,直到滿足某條件後再收縮左邊的指標 所以一般是雙層迴圈,第一層迴圈動右指標,第二層迴圈動左指標,然後滿足某條件或終止條件就返回 自個兒總結了乙個模板 fu...

TCP IP滑動視窗

t c p使用一種視窗 w i n d o w 機制來控制資料流。當乙個連線建立時,連線的每一端分配乙個緩衝區來儲存輸入的資料,並將緩衝區的尺寸傳送給另一端。當資料到達時,接收方傳送確認,其中包含了自己剩餘的緩衝區尺寸。剩餘的緩衝區空間的大小被稱為視窗 w i n d o w 指出視窗大小的通知稱為...

TCP IP 滑動視窗

這樣的傳輸方式有乙個缺點 資料報的往返時間越長,通訊的效率就越低。為解決這個問題,tcp 引入了視窗這個概念。即使在往返時間較長的情況下,它也不會降低網路通訊的效率。那麼有了視窗,就可以指定視窗大小,視窗大小就是指無需等待確認應答,而可以繼續傳送資料的最大值。視窗的實現實際上是作業系統開闢的乙個快取...