TCP 流量控制


TCP 流量控制

作用:用以消除发送方使接收方缓存溢出的可能性
本质上流量控制是一个速度匹配服务
原理:
接收方根据自己接受缓存的大小,动态地调整发送方的发送窗口发小。发送方通过设置确认报文首部的窗口字段。

TCP拥塞控制

作用:防止过多的数据注入网络中造成网络路由器和链路过载

TCP要求发送方维护两个窗口

  1. 接受窗口 rwnd。接收方根据目前接受缓存大小所许诺的最新的窗口值。由发送方控制。
  2. 拥塞窗口 cwnd。发送发根据自己估算的网络拥塞程度而设置窗口值。由发送方根据链路状态估算。
    $$ 发送窗口的上限值 = Min[rwnd,cwnd] $$

窗口的值指的是最大报文长度(MSS)。MSS的默认值为536字节。所以所有主机都能接受的报文长度为556字节(加上TCP固定首部商都)

维护拥塞窗口的算法

慢开始、拥塞避免、快重传、快恢复

  1. 一开始使用慢开始算法。发送时 cwnd = 1,每收到一个确认报文后加倍。直到到达一个阈值(ssthresh)。此时cwnd是呈指数增长的
  2. 达到阈值以后,使用拥塞避免算法。每经过一个往返时延,就cwnd + 1。此时cwnd的大小时线性增长的。
  3. 当出现第一次超时(网络拥塞)出现时。再使用慢开始算法,同时阈值调整为超时的cwnd大小的一半
  4. 快重传:当连续收到3个重复的ACK的时候,直接重传未收到的报文,不必等待报文段设置重传计时器超时
  5. 快恢复:当连续收到3个重复的ACK的时候,执行快恢复算法。将cwnd的大小设置为超时的cwnd的大小的一半,之后就执行拥塞避免算法。(不执行慢开始算法)

文章作者: 彭峰
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彭峰 !
  目录