一:摘要概述
TCP作为一个可靠的传输层协议,其精髓就是一系列如滑动窗口、拥塞避免等手段控制流量。可以根据服务器处理速度以及网络情况调整数据传输速率,当然整个过程对于开发人员来讲是透明的。本文将从滑动窗口、拥塞控制两个方面详解TCP对流量控制做的操作
二:接收窗口
服务器处理数据的能力有限,不可能无限制的接收数据。在三次握手的过程中有一个字属性专门用于标记接收窗口大小,三次握手过程告诉对方接收窗口只有这么大,传输未确认的数据
只能这么多,超过就等等再操作
看下面截图就是三次握手的SYN包示例图,可以看到其中红框部分就表示了接收窗口的大小。红框中有三部分值,具体含义如下:
- Window size:接收窗口大小,只有16字节大小不够表示窗口数值,引入缩放比例
- Calculated window:缩放计算后的接收窗口大小
- Window scale:缩放比例
Calculated window = Window size * Window scale
至于为什么我这里的Wireshark抓包出来显示的数值不对,这个还需要研究。应该是可以调试的,但是目前截图的显示确实都是已经计算好之后的数值