1. 流量控制
我们都知道当网络上数据流量超过网络硬件负荷时就会出现网络拥塞,就是我们平常遇到的网络缓慢的现象。对应影响网络速度的原因主要有网络传输设备的性能和传输的数据多少,网络传输设备包含发送接收主机、路由器、传输线路等。为了解决这个问题,TCP引入了流量控制,顾名思义,就是采用某种方法,控制收发端传输数据的速度,从而维持网络数据传输的平衡。针对收发主机的处理速度,TCP使用滑动窗口来控制数据流量,减轻网络压力。
2. 滑动窗口
- 什么是滑动窗口
通过我们对TCP连接的建立和终止以及对TCP报文的学习,我们知道TCP连接是全双工的,即可以双向通信。TCP报文段首部中主要有序列号、确认号、标志字段、窗口等其他字段属性,其中的窗口字段就是用来实现滑动窗口的。该字段表示发送该窗口字段信息的通信方为即将到来的数据预留的存储空间大小,也就是它能接收的数据大小。另一方受到这个窗口值后,就会动态发送数据。窗口字段长度为16个字节,可以表示最大65535的值,即窗口最大为65535字节。
- 滑动窗口的工作原理
TCP连接中有发送方和接收方,发送方会维护一个发送窗口,接收方会维护一个接收窗口。
先来分析发送窗口,窗口结构如下。