TCP拥塞控制

283 阅读1分钟

image.png tcp的拥塞控制主要有4个算法分别为慢启动、拥塞避免、快重传、快恢复。

  1. 慢启动:刚开始不知道网络能承受多少数据,所以初始的cwnd(拥塞窗口)为1MSS或者10MSS(新标准) 每收到一个ACK,cwnd += 1MSS(指数增长),当达到阈值ssthresh,进入拥塞避免阶段
  2. 拥塞避免:防止窗口增长过快导致拥塞。进入该阶段后,增长变平缓,不再指数增长,改为线性增长。
  3. 快速重传:不用等RTO超时就快速重传丢包收到 3 个重复 ACK → 判断该包丢失 → 快速重传 如果连续接收2个相同ACK还可能是因为顺序出错导致的。 4.快速恢复:丢包后不进入慢启动阶段,ssthresh = cwnd / 2, cwnd = ssthresh,进入拥塞避免阶段。

如果发生超时导致拥塞会直接进入慢启动状态。同时ssthresh = cwnd / 2

ssthresh 是一个阈值,当拥塞窗口 cwnd 小于它时使用慢启动;大于等于它时使用拥塞避免。

MSS(Maximum Segment Size,最大报文段长度) 是 TCP 数据部分的最大大小,不包括 TCP 头和 IP 头。

名称所属层说明
Message(报文)应用层App 产生的数据,如 HTTP 请求报文
Segment(报文段)传输层TCP 封装后的数据单元(TCP 头 + 数据)
Packet(数据包)网络层IP 头 + TCP 段
Frame(帧)数据链路层MAC 头 + IP 包