【网络&通信协议系列(四)】TCP拥塞控制

拥塞现象是指到达通信子网的某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分甚至整个网络性能下降的现象,严重时可能导致网络通信业务陷入停顿即出现死锁现象。

简单点说,受限于网络状况、带宽以及应用请求处理能力等因素,TCP传输会出现超时、发送失败、重发等现象,要解决拥塞问题,除了增加通信链路带宽、链路缓存以及处理器处理能力外,还需要引入拥塞控制机制;

经过长时间的发展,TCP传输拥塞控制算法有许多种类型,不过大致可以总结为如下四种,分别是:慢启动、拥塞避免、快重传以及快恢复

术语

  • 拥塞窗口(cwnd):发送端在拥塞情况下一次最多能发送多少个数据包
  • 接收窗口(rwnd):接收端对发送端窗口大小所做的限制
  • 通告窗口(awnd):TCP内核缓冲区的大小,通常要求其为MSS(Maxsimum Segment Size:最大报文段大小)的偶数倍
  • 慢启动阙值(ssthresh):慢启动与拥塞避免的临界值,即慢启动过程能达到的最大发送速率
  • 往返时延(RTT):发送端发送报文到收到接收确认的时间
  • 超时重传计时器(RTO):一次发送未接收到确认需要重发的时间,通常为2*RTT或5*RTT

慢启动

在连接建立之初,TCP会指数型增大数据包发送速率直到达到慢启动阙值(ssthresh),可以理解为连接建立之初的网络探测阶段。

详细策略为:连接建立,cwnd=1,如果没有发送丢包与拥塞,则线性增大cwnd,直到cwnd>=ssthresh,这是一个发送速率快速增长的阶段。

拥塞避免

上述慢启动过程直到cwnd等于ssthresh,则进入 拥塞避免 过程。

详细策略为:当拥塞窗口到达慢启动阙值时,保险起见,降低发送速率增长率,这个阶段是发送速率&cwnd缓慢增长的阶段。如果一旦出现拥塞情况,ssthresh会设置为cwnd/2,cwnd会重新设置为1,重复慢启动、拥塞避免的过程(旧版本,现已使用快速恢复算法替换,见下文)。
慢启动&拥塞避免

快重传

快重传用于控制发送方重发丢失的数据包,一旦传输过程出现丢包,则判定出现了拥塞,会使用快速重传重新发送丢失的数据包。

实现策略:接收方接收到失序的报文,立刻向发送方发送重复确认。如果发送方收到三个接收方发来的重复确认,则不必等待重传计时器到期,立即重发未被确认的报文段。
快速重传

快恢复

快恢复算法也是用于控制发送方发送报文的速率,在TCP Reno版本被提出(TCP NewReno又提出队快恢复算法改进的”选择性应答算法”)

实现策略:发送端在执行快速重传后(收到3次重复ACK确认后的快速重传),将ssthresh与cwnd设置为原cwnd一半,直接开始阻塞避免,

TCP Reno版本拥塞控制

总结

拥塞控制机制基于【调整发送端发送速率来控制网络负荷量

参考资料

百度百科:传输层拥塞控制
TCP拥塞控制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值