TCP拥塞控制

1.TCP

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

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

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

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

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

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 时的数据都已收到,该恢复过程已经结束,再次进入【拥塞避免】阶段。
 

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大西瓜写java、C#、.NET

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值