网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

TCP拥塞控制

更新时间:2026年03月27日   作者:spoto   标签(Tag):

TCP拥塞控制机制负责管理数据流量,以避免网络过载。它利用拥塞窗口和相应的策略来调整传输速率。虽然接收方可以自行设定窗口大小,但网络也会对这一过程产生影响——当网络无法处理当前的传输速率时,它会向发送方发出信号,要求发送方降低传输速率。

TCP中的拥塞控制策略

  • 缓慢启动阶段:启动后,增长速度与阈值呈指数关系。
  • 拥堵避免阶段:当达到阈值增量后,数值会增加1。
  • 拥堵检测阶段:发送方会回到“慢启动阶段”或“拥塞避免阶段”。

缓慢启动阶段

在连接建立初期,TCP会指数级地增加其拥塞窗口大小,从而能够快速了解网络的承载能力。

指数级增长在这一阶段之后,每次……RTT拥塞窗口的大小会以指数方式递增。

例如:如果初始的拥塞窗口大小为1个段,而第一个段被成功确认了,那么拥塞窗口的大小就会变为2个段。如果下一个传输也被成功确认了,那么拥塞窗口的大小就会再次翻倍,变成4个段。这种指数级的增长会一直持续下去,只要所有段都被成功确认了。

最初,cwnd的值为1。
经过1次RTT后,cwnd的值为2^1 = 2。
2个RTT,cwnd = 2^2 = 4
3个RTT,cwnd = 2^3 = 8

2. 拥塞避免阶段

在慢启动阶段之后,TCP会线性地增加其拥塞窗口大小,以防止网络出现拥塞现象。

增量加成:这一阶段在阈值达到该值时开始,这个阈值也被称为ssthresh。此时,拥塞窗口的大小会以递增的方式增加。每次经过一个RTT之后,拥塞窗口的大小就会增加1。即:cwnd = cwnd + 1。

例如:如果拥塞窗口的大小为20的话部分/片段如果所有20个段都在一个RTT时间内被成功确认,那么下一个RTT周期中,拥塞窗口的大小将会增加到21个段。如果这21个段同样被成功确认,那么拥塞窗口的大小将继续增加,直到达到22个段为止。如此循环下去。

最初,cwnd = i
在经历1次RTT之后,cwnd的值为i+1。
2个RTT,cwnd = i+2
3个RTT,cwnd = i+3

3. 拥塞检测阶段

TCP通过检测数据包的丢失或重复确认来识别网络拥塞情况,并触发窗口大小的减小,从而控制网络流量。

乘法递减:如果发生拥塞情况,TCP会减小拥塞窗口的大小。当数据包需要重新传输时,即出现RTO超时或收到三个重复的ACK信号时,发送方就会意识到已经发生了拥塞。

案例1:由于超时导致的重新传输——在这种情况下,出现拥塞的可能性非常高。

ssthresh的值被减少到当前窗口大小的一半。
(b) 将 cwnd 设置为 1
(c) 再次从缓慢启动阶段开始。

案例2:由于存在3个确认重复的数据包而导致的重传情况——这种情况下,出现拥塞的可能性较小。

(a) ssthresh值减少为当前窗口大小的一半。
(b) 设置 cwnd=ssthresh
(c) 从避免拥堵的阶段开始着手处理。

例如:TCP连接的过程始于“慢启动”阶段。到第5轮时,拥塞窗口的大小达到ssthresh值(32),此时TCP会切换到“拥塞避免”模式,这一状态会持续到第10轮。在第10轮时,有3个重复的ACK信号被触发,导致拥塞窗口进一步增加。到了第16轮时,由于超时事件发生,拥塞窗口的大小会减小。任务是将传输轮数(时间)与拥塞窗口大小之间的关系绘制出来。

拥塞检测阶段
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料