今日总结 (TCP拥塞控制总结)

所学时间:130min
代码量:30
博客量:41
所学的知识点:
今天我们对于之前学习了TCP的拥塞控制,之前学习的流量控制是防止过多的数据注入到网络中,以防止网络中
的路由器或链路不至于过载,对于这种我们采用的是闭环控制,而不采用开环控制:事先将发生拥塞的有关因素
考虑周到,中途不需要进行修改。
其中主要呢是对拥塞控制方法:慢开始、拥塞避免、快开始、快恢复。
主要是发送方维持一个叫做拥塞窗口cwnd的状态变量,四种拥塞控制方法,是对发送报文段时,超时时或者重复
确认时我们需要采用那种解决方法。
1.慢开始(Slow Start)
原理:在连接建立时,发送方的拥塞窗口(cwnd,Congestion Window)初始值通常为一个最大报文段长度(MSS,Maximum Segment Size)。每收到一个确认(ACK),拥塞窗口就增加一个 MSS 大小。发送方按照拥塞窗口的大小发送数据,随着确认的不断到达,拥塞窗口呈指数增长。例如,初始 cwnd = 1MSS,收到第一个 ACK 后,cwnd
= 2MSS;收到接下来的 ACK 后,cwnd = 4MSS 。
作用:避免在网络初始阶段发送大量数据而导致网络拥塞,逐步探测网络的承载能力。
阈值(ssthresh,Slow Start Threshold):为了防止拥塞窗口增长过大,引入了慢开始门限。当拥塞窗口达到慢开始门限时,就会进入拥塞避免阶段。

  1. 拥塞避免(Congestion Avoidance)
    原理:当拥塞窗口(cwnd)达到慢开始门限(ssthresh)后,进入拥塞避免阶段。在这个阶段,每收到一个 ACK,拥塞窗口增加 1/cwnd 个 MSS。例如,当 cwnd = ssthresh 时,收到一个 ACK,cwnd = cwnd + 1/cwnd * MSS。拥塞窗口呈线性增长,而不是像慢开始阶段那样指数增长。
    作用:在网络已经处于一定负载的情况下,缓慢增加发送的数据量,维持网络的稳定运行,避免拥塞的发生。
    拥塞检测:当出现超时(即发送的数据在规定时间内未收到 ACK)时,认为网络出现了拥塞。此时,ssthresh 会被设置为当前 cwnd 的一半,cwnd 会被重置为 1 个 MSS,然后重新进入慢开始阶段。

  2. 快重传(Fast Retransmit)
    原理:当接收方发现某一个报文段丢失时,会立即发送重复确认(即对已收到的、但后面出现丢失的数据的前一个报文段的确认)。发送方只要收到 3 个重复确认,就会立即重传丢失的报文段,而不需要等待超时。例如,发送方发送了报文段 1、2、3、4,其中报文段 3 丢失,接收方收到 1、2、4 后,会多次发送对 2 的确认。当发送方收到 3 个对 2 的重复确认时,就会重传 3。
    作用:快速恢复丢失的报文段,提高网络的传输效率,减少因等待超时导致的网络性能下降。
    特点:快重传没有像超时那样大幅降低发送方的发送速率,只是快速重传丢失的报文段,保持了网络数据的连续性。

  3. 快恢复(Fast Recovery)
    原理:在快重传之后,执行快恢复算法。此时,ssthresh 会被设置为当前 cwnd 的一半,cwnd 会被设置为 ssthresh 加上 3 倍的 MSS(因为已经收到了 3 个重复确认,说明有 3 个报文段已经离开了网络)。然后进入拥塞避免阶段,cwnd 呈线性增长。
    作用:在快速重传丢失报文段后,快速调整拥塞窗口大小,恢复网络的正常传输,避免像慢开始那样重新从较小的拥塞窗口开始发送数据,提高了网络的利用率。
    与慢开始的区别:快恢复是在快重传之后执行,没有将拥塞窗口直接重置为 1 个 MSS,而是保持了一定的发送速率,更能适应网络的变化。

综上所述,TCP 的慢开始、拥塞避免、快重传、快恢复机制相互配合,根据网络的实际情况动态调整发送方的发送速率,在保证网络不发生拥塞的前提下,尽可能提高网络的传输效率。

posted @ 2025-05-14 20:47  真的不会qiao代码  阅读(55)  评论(0)    收藏  举报