TCP拥塞控制
过程:
1. 慢启动(Slow Start)
- 目的: 在连接建立初期,探测网络的可用带宽,并逐渐增加发送速率,避免一开始就发送大量数据导致网络拥塞。
- 工作方式:
- 连接建立后,发送方将拥塞窗口(cwnd,Congestion Window)初始化为 1 个最大报文段大小(MSS,Maximum Segment Size)。
- 每收到一个 ACK 确认报文,cwnd 就增加 1 个 MSS。也就是说,每经过一个往返时间(RTT,Round-Trip Time),cwnd 就翻倍。
- 当 cwnd 达到慢启动门限(ssthresh,Slow Start Threshold)时,慢启动阶段结束,进入拥塞避免阶段。
- 图示: 类似于指数增长。
2. 拥塞避免(Congestion Avoidance)
- 目的: 在网络拥塞发生前,减缓发送速率的增长速度,避免拥塞的发生。
- 工作方式:
- 当 cwnd 达到 ssthresh 时,进入拥塞避免阶段。
- 每收到一个 ACK 确认报文,cwnd 只增加 1/cwnd 个 MSS。也就是说,每经过一个 RTT,cwnd 只增加 1 个 MSS。
- 图示: 类似于线性增长。
拥塞地点(发生拥塞的判断)
TCP 通过以下两种方式判断网络是否发生了拥塞:
- 超时重传: 如果发送方在一定时间内没有收到某个报文段的 ACK 确认报文,就认为该报文段丢失,需要进行重传。超时通常被认为是网络拥塞的信号。
- 收到重复的 ACK: 如果发送方连续收到三个或三个以上重复的 ACK 确认报文,就认为网络中可能发生了丢包,也认为是网络拥塞的信号。
3. 快速重传(Fast Retransmit)
- 目的: 尽早发现并重传丢失的报文段,避免不必要的等待超时。
- 工作方式:
- 当发送方连续收到三个或三个以上重复的 ACK 确认报文时,立即重传丢失的报文段,而不需要等待超时定时器超时。
- 意义: 提高了 TCP 的传输效率。
4. 快速恢复(Fast Recovery)
- 目的: 在快速重传后,避免直接进入慢启动阶段,而是直接进入拥塞避免阶段,更快地恢复传输速率。
- 工作方式:
- 当发送方收到三个重复的 ACK 时:
- 将 ssthresh 设置为当前 cwnd 的一半。
- 将 cwnd 设置为 ssthresh + 3 * MSS。
- 重传丢失的报文段。
- 进入拥塞避免阶段。
- 之后,每收到一个重复的 ACK,cwnd 就增加 1 个 MSS。
- 当收到新的 ACK 确认报文(确认了之前重传的报文段)时,将 cwnd 设置为 ssthresh,并进入拥塞避免阶段。
- 当发送方收到三个重复的 ACK 时:
慢启动、拥塞避免、快速重传和快速恢复的配合使用
这四个算法通常配合使用,形成完整的 TCP 拥塞控制机制:
- 连接建立初期,使用慢启动探测可用带宽。
- 当 cwnd 达到 ssthresh 时,进入拥塞避免,减缓增长速度。
- 当发生超时或收到重复的 ACK 时,认为发生拥塞。
- 如果收到重复的 ACK,则使用快速重传和快速恢复。
- 如果发生超时,则将 ssthresh 设置为 cwnd 的一半,cwnd 设置为 1,然后重新进入慢启动。
- 标题: TCP拥塞控制
- 作者: 三葉Leaves
- 创建于 : 2024-12-26 00:00:00
- 更新于 : 2025-01-05 18:48:33
- 链接: https://kiss1314.top/c95ed24b4625/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论