- 作者:老汪软件技巧
- 发表时间:2023-12-19 09:00
- 浏览量:
虽然TCP 有了滑动窗口这个大杀器,能够高效可靠的发送大量的数据。但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题。因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵。在不清楚当前网络状态下,贸然发送大量的数据,是很有可能引起雪上加霜的。TCP引入 慢启动 机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传 输数据;如果通畅,就增大数据量,如果不通畅,就减小数据量。而这个数据量就是拥塞窗口。 发送开始的时候,定义拥塞窗口大小为1;每次收到一个ACK应答,拥塞窗口加1;每次发送数据包的时候,将拥塞窗口和接收端主机反馈的窗口大小做比较,取较小的值作为实际发送的窗口; 像这样的拥塞窗口增长速度,是指数级别的。 " 慢启动" 只是指初使时慢,但是增长速度非常快。当指数增长到一个阈值后,就会从指数增长变成线性增长。当TCP 开始启动的时候,慢启动阈值等于窗口最大值;在每次超时重发的时候,慢启动阈值会变成原来的一半,同时拥塞窗口置回1。所以,拥塞控制为先慢增长,然后指数增长,在线性增长,然后回归小窗口。因此拥塞控制和流量控制,共同的限制了滑动窗口在保证可靠性的前提下高效快速的传输数据。