TCP中滑動視窗介紹

2021-10-03 12:16:36 字數 1007 閱讀 6316

我們知道tcp協議中有乙個確認應答機制,每傳送乙個資料段,就需要有乙個ack來響應,如果這樣一收一發的話,會讓資料傳輸的效率變得很低。滑動視窗就是用來解決這個問題的,也就是我們一次傳送多條資料。例如現在不需要等待確認應答可以傳送資料的最大值為4000個位元組,我們將4000個位元組分為四個資料段來進行傳送。在傳送前四個資料段的時候,我們不需要等待任何的ack應答,可以直接傳送。當收到第乙個資料段的ack之後,滑動視窗就會向後移動乙個單元,再繼續傳送第五段資料,然後依次類推。

傳送緩衝區

作業系統為了維護滑動視窗,會開闢乙個傳送緩衝區來記錄當前有哪些資料沒有被應答,只有確認應答過的資料,才會從緩衝區中刪除掉。

也就是當傳送端傳送乙個視窗大小的幾段資料時,會將資料先儲存在傳送緩衝區中,如果收到了相應的ack確認序號,就會將傳送緩衝區中對應序列號的資料刪除。如果沒有收到ack,就會根據相應情況重新傳送資料段。通過傳送緩衝區,可以有效地幫助傳送端來解決資料的丟包問題。

接收緩衝區

儲存資料和序號,用來告訴傳送緩衝區應該刪除哪些資料。

1.1 ack丟失

ack丟包也就是傳送端將資料傳送到服務端,服務端此時響應會乙個ack應答,但是這個ack在中途丟失,並沒有返回到傳送端。不過在滑動視窗機制中,如果接收到乙個ack應答,根據返回的確認序號,可以知道接收端確認接收到資料的乙個情況。

例如我們還是4000個位元組,分為四個資料段傳送。第乙個資料段的ack應答應該告訴傳送端,我已經接收到了序列號1-1000的資料段,下乙個傳送資料應該是1001開始。假設這第乙個ack資料報在返回到傳送端的中途丟失了,但是沒關係,傳送端可以根據第二個資料段響應的ack來進行確認。就是說第二個資料段返回的ack,其中會告訴傳送端,我已經接收到了1-2000的資料,下乙個傳送資料應該是從2001開始傳送。

1.2 資料報丟失

當傳送端傳送的某乙個報文段丟失之後,就會連續收到該報文段對應起始序號的ack,好比在提醒傳送端,「我需要接下來的這個資料段「。如果傳送端連續三次收到同樣的應答,就會從傳送緩衝區中將對應的資料段再次傳送。這種機制被稱為「高速重發控制」,也叫「快重傳」。

TCP滑動視窗

目前建立在tcp協議上的網路協議特別多,有telnet,ssh,有ftp,有http等等。這些協議又可以根據資料吞吐量來大致分成兩大類 1 互動資料型別,例如telet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如ftp,這種...

TCP滑動視窗

假設a和b之間新建立了一條tcp連線。裝置a需要傳送一長串資料流,但裝置b無法一次全部接收,所以它限制裝置a每次傳送分段指定數量的位元組數,直到分段中已傳送的位元組數得到確認。之後,裝置a可以繼續傳送更多位元組。每乙個裝置都對傳送,接收及確認資料進行追蹤。tcpbuffer中資料可以分為以下四類 1...

TCP滑動視窗

tcp滑動視窗是用來控制流量的,避免擁塞的發生。滑動視窗又包括接收端滑動視窗和傳送端滑動視窗,下面我們簡單分析一下。上圖顯示的是接收緩衝區,其中接收視窗也在其中。接收視窗的大小是8,即4 12,此時由a可知,接收端下乙個預計接收序列號4,當接收端接收到4 7之後,滑動視窗就會右移,此時接收端預計接收...