TCP滑動視窗和socket緩衝區之間的關係

2021-09-30 07:53:03 字數 806 閱讀 4210

一、tcp的滑動視窗大小實際上就是socket的接收緩衝區大小的位元組數

二、對於server端的socket一定要在listen之間設定緩衝區大小,因為,accept時新產生的socket會繼承監聽socket 的緩衝區大小。對於client端的socket一定要在connet之前設定緩衝區大小,因為connet時需要進行三次握手過程,會通知對方自己的窗 口大小。在connet之後再設定緩衝區,已經沒有什麼意義。

三、由於緩衝區大小在tcp頭部只有16位來表示,所以它的最大值是65536,但是對於一些情況來說需要使用更大的滑動視窗,這時候就要使用擴充套件的滑動視窗,如光纖高速通訊網路,或者是衛星長連線網路,需要視窗盡可能的大。這時會使用擴充套件的32位的滑動視窗大小。

四、滑動視窗聽移動規則:

1、視窗合攏:在收到對端資料後,自己確認了資料的正確性,這些資料會被儲存到緩衝區,等待應用程式獲取。但這時候因為已經確認了資料的正確性,需 要向對方傳送確認響應ack,又因為這些資料還沒有被應用程序取走,這時候便需要進行視窗合攏,緩衝區的視窗左邊緣向右滑動。注意響應的ack序號是對方 傳送資料報的序號,乙個對方傳送的序號,可能因為視窗張開會被響應(ack)多次。

2、視窗張開:視窗收縮後,應用程序一旦從緩衝區中取出資料,tcp的滑動視窗需要進行擴張,這時候視窗的右邊緣向右擴張,實際上視窗這是乙個環形 緩衝區,視窗的右邊緣擴張會使用原來被應用程序取走內容的緩衝區。在視窗進行擴張後,需要使用ack通知對端,這時候ack的序號依然是上次確認收到包的 序號。

3、視窗收縮,視窗的右邊緣向左滑動,稱為視窗收縮,host requirement rfc強烈建議不要這樣做,但tcp必須能夠在某一端產生這種情況時進行處理。

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之後,滑動視窗就會右移,此時接收端預計接收...