TCP协议是一个很有意思的内容,这半年对TCP协议有了更多的认识,于是想重新更新一些对TCP协议的内容。今天先从TCP协议里面的滑动窗口说起。
1、先说原理
就发送端来说,一般如下所示:
主要分为:已发送已确认的包(应用层未读取)。发送未确认的包,未发送可发送的包,未发送不可发送的包。其中,滑动窗口指的是发送未确认和未发送可发送区域的大小。
2、滑动窗口
通常情况下,在wireshark抓包中看到的 win 表示向对方声明自己的接收窗口的大小,对方收到以后,会把自己的[发送窗口]限制在 指定大小之内。如果自己的处理能力有限,导致自己的接收缓冲区满,接收窗口大小为 0时发送端应该停止发送数据。
比如,使用模拟工具产生的TCP报文,其中客户端窗口声明为20,抓包如下:
- 第1~3包:三次握手过程,其中第一包是客户端向服务端发起连接,并声明自己的接收窗口为20字节。第2包为服务端返回的ACK+SYN,同时也声明了自己的接收窗口29200字节。第三包为客户端回复服务端的ACK,此时自己接口窗口还是20。此后开始正常的数据收发。
- 第4包&#x