TCP详解(四):TCP拥堵控制——Congestion Control

系列文章

TCP详解(一):什么是TCP

TCP详解(二) : TCP三次握手、四次挥手

TCP详解(三):TCP流量控制——Flow Control

TCP详解(四):TCP拥堵控制——Congestion Control

TCP详解(五):TCP与UDP的区别

本篇目录

什么是TCP拥堵控制

TCP拥堵控制机制的实现

cogestion window与sender window的含义

三大举措实现拥堵控制

①慢启动阶段

②拥堵规避阶段

③拥堵探测阶段

总结


什么是TCP拥堵控制

在上一篇文章TCP详解(三):TCP流量控制——Flow Control中我们提到,为了避免TCP发送方发送数据的速度超出接收方的处理能力,通过receiver window表明接收方的接收能力。

不过TCP发送方发送的数据包并不是一步直达接收方,而是跋山涉水,途经多个网络节点,最终抵达接收方。发送方发送的数据量虽然通过receiver window可以保证不超出接收方的处理能力,但有可能超出网络承载的能力,依然会造成数据包丢失。

TCP拥堵控制机制就是避免TCP发送方抛出的数据量超出网络承载的能力,以及当出现网络拥堵后进行调整以消除拥堵。

TCP拥堵控制机制的实现

cogestion window与sender window的含义

congestion window用来表明当前网络能够不受限制地连续接收的数据量大小。sender window表示TCP发送方能够不受限制地连续向网络抛出的数据量大小。由于TCP发送方发送的数据不仅受到接收方数据处理能力的限制,还受网络承载能力的限制,所以sender window的值为二者的最小值。

Sender window size = Minimum (Receiver window size, Congestion window size)

三大举措实现拥堵控制

TCP拥堵控制通过分阶段,不同应对措施的方式实现:

  1. 慢启动——Slow Start
  2. 拥堵规避——Congestion Avoidance
  3. 拥堵探测——Congestion Detection

①慢启动阶段

TCP数据是被分割成小的数据包(称之为segment)传输的,一个sement携带的最大数据量成为MSS——maximum segment size。在初始阶段即慢启动阶段,congestion window的大小被设置为1 MSS。

congestion window size = maximum segment size(1 MSS)

然后每收到一个ack确认包,congestion window size就增加一个MSS的大小。

实际上,这种增长是以2为底数的指数型增长。因为每“发送/确认”一轮,congestion window的大小加倍。初始值为2的0次方,即1 MSS。

congestion window size  =  (2)round trip time

 congestion window以这种方式迅猛增大,直至达到阈值。阈值的大小等于receiver能够容纳的MSS数目的一半的大小。

slow start threshold(单位:MSS) = (Receiver window size / Maximum Segment Size) / 2 

②拥堵规避阶段

在慢启动阶段,congestion window以指数增长达到阈值后,就进入拥堵规避阶段。在拥堵规避阶段,每收到一个ack确认包,congestion window的大小增加一个字节,直至达到receiver window的大小后暂停发送数据。

Congestion window size = Congestion window size + 1

③拥堵探测阶段

拥堵探测阶段指的是在任何时候,一旦触发了数据包重传机制,则说明有可能是因为网络拥堵导致数据包丢失引起的,就要对congestion window进行调整来消除拥堵。引起重传的原因不同,采取的策略不同。

超时重传

TCP发送方每发送一个数据包,都会创建一个与之关联的定时器,如果在定时器超时后仍然没有收到该数据包的ack确认包,将触发重传。这种情况下,因网络拥堵丢包的可能性很大,所以按照如下方式进行调整:

  1. 将Slow Start Threshold设置为当前congestion window的一半
  2. 将congestion window设置为1 MSS的大小
  3. 启动Slow Start流程

连续三次收到同一数据包的ACK确认

当TCP发送方连续三次收到同一数据的ack确认包,会立即触发重传,即使定时器尚未超时,这是接收方主动提出重传数据包的信号。这种情况下,网络拥堵也有一定可能的,所以按照如下方式进行调整:

  1. 将Slow Start Threshold设置为当前congestion window的一半
  2. 将congestion window设置为Slow Start Threshold的大小
  3. 启动拥堵规避流程

总结

  • 拥堵控制机制指的是通过congestion window机制限制TCP发送方向网络中发送数据,来避免网络拥堵以及出现拥堵后及时消除的机制
  • TCP通过三大举措实现网络拥堵控制:①慢启动 ②拥堵规避 ③拥堵探测

下一篇: TCP详解(五):TCP与UDP的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vincent(朱志强)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值