tcp 滑動視窗
滑動視窗分為接受視窗和傳送視窗
滑動視窗協議是傳輸層進行流控的一種措施,接收方告訴傳送方自己視窗的大小,從而控制傳送方的傳送速度,
ack是收到資料後,接收方給傳送方的乙個確認ack,它包含了兩個重要的資訊;
期望接受到的下乙個位元組的序號n,代表接收方已經接受到n-1位元組的資料,如果之後傳送方傳送的不是序號為n的位元組資料,接收方不會返回後續的序號的。
當前視窗的大小m,通過這兩個資料,傳送方就能計算出還可以傳送多少資料給對方,假設當前傳送第x位元組:
x-n。視窗中已經有的
m-(x-n) 還能傳送的位元組數
因此:
y = m - ( x - n )
在乙個tcp的段中,可以看到如下資訊
window字段就是視窗字段,是乙個16bit的字段,代表視窗位元組容量,也就是說視窗最大資料為2^16 - 1 = 65535
滑動視窗原理
在傳送方,所有傳送快取內資料可以分為以下4種:
已經傳送並且得到對面ack的(send and acknowledged)
已經傳送並且未得到對面ack的 (send but not acknowledged)
未傳送但是得到對面允許的(not send recipient ready to receive)
為傳送並且對方不允許的 (not sent recipient not ready to receive)
當接收方新的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之後,滑動視窗就會右移,此時接收端預計接收...