TCP-拥塞控制

拥塞控制

目的:
主要为了解决网络拥塞问题而提出的一种策略

什么是网络拥塞:
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞

若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。

实际场景:
假设主机A给主机B传输数据:两台主机在传输数据包的时候,如果发送方迟迟没有收到接收方反馈的ACK,那么发送方就会认为数据包丢失了,重新传输这个丢失的数据包。实际情况有可能此时有太多主机正在使用信道资源,导致网络拥塞了,而A发送的数据包被堵在了半路。这个时候A误认为是发生了丢包情况,会进行重传。结果就是不仅浪费了信道资源,还会使网络更加拥塞。因此,需要进行拥塞控制。

思维图:
TCP-拥塞控制_第1张图片

拥塞窗口:发送方A一次性连续发送多少个数据包称之为拥塞窗口,这里用N代表此时拥塞窗口的大小。

原理:
通过控制拥塞窗口大小来最大化利用网络资源,而又不会出现网络拥塞情况。

1、前期让拥塞窗口指数增长,到达预设的阈值之后,就以一个一个线性的速度来增长(如上图)。

我们把指数增长阶段称为:慢启动
线性增长阶段称为:拥塞避免

2、随着拥塞窗口大小N的逐步增大,当出现超时事件时,就认为此时网络拥塞了,N不能再继续增长了。把这个时候的N的值称之为瓶颈值,用MAX来表示。

3、当达到最大值MAX之后,又回到初始状态,从1开始,同时把阈值调为MAX值的一半,如上图,即新阈值7。回到第1步重新再来。

如果没有发生超时,只是通过冗余ACK(重复发起ACK确认)机制检测到丢包了,那就使用快速重传。

快速重传:初始拥塞窗口N从新阈值开始线性增长

你可能感兴趣的:(网络协议,tcp/ip,网络,网络协议)