0
点赞
收藏
分享

微信扫一扫

网络协议(九)-传输层(拥塞控制)

以下内容来自于小码哥"网络协议从入门到底层原理"

  • 拥塞控制
    -- 防止过多的数据注入到网络中
    -- 避免网络中的路由器或链路过载

  • 拥塞控制是一个全局性的过程
    -- 涉及到所有主机, 路由器
    -- 以及与降低网络传输性能有关的所有因素
    -- 是大家共同努力的结果

  • 相比而言, 流量控制是点对点通信的控制

TCP-拥塞控制-方法
  • 慢开始(slow start, 慢启动)

  • 拥塞避免(congestion avoidance)

  • 快速重传(fast retransmit)

  • 快速恢复(fast recovery)

  • 几个缩写
    -- MSS(Max Segment Size): 每个段最大的数据部分大小
    ✅在建立连接时确定

-- rwnd(receive window): 接收窗口

-- cwnd(congestion window): 拥塞窗口

-- swnd(send window): 发送窗口
swnd = min(cwnd, rwnd)

TCP-拥塞控制-慢开始

  • cwnd的初始值比较小, 然后随着数据包被接收方确认(收到一个ACK)
    -- cwnd就成倍增长
TCP-拥塞控制-拥塞避免

  • ssthresh(slow start threshold): 慢开始阈值, cwnd达到阈值后, 以线性的方式增加
  • 拥塞避免(加法增大): 拥塞窗口缓慢增大, 以防止网络过早出现拥塞
  • 乘法减小: 只要网络出现拥塞, 把ssthresh减半, 于此同时, 执行慢开始算法(cwnd又恢复到初始值)
TCP-拥塞控制-快重传
  • 接收方
    -- 每收到一个失序的分组后就立即发出重复确认
    -- 使发送方及时知道分组没有到达
    -- 而不是等待自己发送数据时才进行确认

  • 发送方
    -- 只要连续收到三个重复确认(总共4个相同的确认), 就应当立即重传对方尚未收到的报文段
    -- 而不必继续等待重传计时器到期后再重传
TCP-拥塞控制-快重传 + 快恢复

TCP-拥塞控制-快恢复
  • 当发送方连续收到三个重复确认, 就执行"乘法减小"算法, 把ssthresh减半
    -- 与慢开始不同之处是现在不执行慢开始算法, 即cwnd现在不恢复到初始值
    -- 而是把cwnd值设置为ssthresh减半后的数值
    -- 然后开始执行拥塞避免算法("加法增大"), 使拥塞窗口缓慢地线性增大
TCP-拥塞控制-发送窗口的最大值
  • 发送窗口的最大值: swnd = min(cwnd, rwnd)
  • rwnd < cwnd时, 是接收方的接收能力限制发送窗口的最大值
  • cwnd < rwnd时, 是网络的拥塞限制发送窗口的最大值
举报

相关推荐

0 条评论