TCP拥塞控制

1.TCP

什么是TCP:TCP是一种传输层的网络协议他是可靠性的传输协议主要是1对1,他拥有流量控制和拥塞控制两大优点;

2.TCP的拥塞控制如何实现

实现拥塞控制主要靠4个拥塞控制算法(慢开始、拥塞避免、快重传、快恢复);

tcp会维护一个拥塞窗口(cwnd)的状态量拥塞窗口只是一个变量实际决定发送量的还是发送方窗口

TCP的拥塞控制可以用下图理解:

TCP拥塞控制_第1张图片

1.慢开始:在开始发送数据时发送较少的数据然后慢慢增长数据量采用乘法增加;

如图开始发送数据时由cwnd=1,2,4,8,16,采用乘法增长,当到达ssthresh(慢开始阈值)时就会进入到拥塞避免阶段

2.拥塞避免:当进入拥塞避免阶段数据会采用加法增长

如图cwnd=16当到达ssthresh时采用拥塞避免此时16,17,18......;当此时发生拥塞;

3.拥塞阶段:当进入拥塞阶段则会触发重传机制

1.超时重传:当发生重传超时则会出发超时重传,此时ssthresh则会变为cwnd的一半,然后cwnd变为1,再次执行慢开始;(超时重传在TCP Tahoe版本已经不用)

如图当发生拥塞时ssthresh由原来的16变为当前cwnd24的一半12,cwnd变为1重新执行慢开始;

2.快速重传:当发送方收到三次冗余的ACK时这是不进行超时重传,直接进行快速重传;

进行快速重传时回有一个问题因为由三个SAK接收方不知道重新发送那个数据所以会有SACK方法在首部格式中的[选项]中会有一个SACK它可以将缓存的地图发送给发送方,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。

4.快恢复:当丢包事件被3次冗余的ACK事件触发,此时会进入快速恢复状态,因为TCP认为还能收到3个重复的ACK,网络并没有那么糟糕,所有反应也没有那么强烈。

如图此时将如果收到新数据的 ACK 后,把 cwnd 设置为cwnd(发生三次冗余ACK时cwnd) / 2 + 接收到冗余ACK的数量为:12,ssthresh = cwnd(发生三次冗余ACK时cwnd) / 2,原因是该 ACK 确认了新的数据,说明从 duplicated ACK 时的数据都已收到,该恢复过程已经结束,再次进入【拥塞避免】阶段。
 

你可能感兴趣的:(tcp/ip,网络,服务器)