计算机网络学习笔记三、拥塞控制

拥塞控制

  TCP协议相关的内容可以分为五个部分:TCP报文,TCP连接,Socket编程,可靠传输机制和流量控制,拥塞控制。本篇文章记录拥塞控制部分的内容。


1. 网络拥塞

  流量控制是避免发送方数据填满接收方缓存,发送方和接收方仅仅知道彼此的网络状态,并不知道整个网络环境中发生了哪些事情。一般来说,计算机网络都处在一个共享网络环境。当网络发生拥堵时,如果继续发送大量数据包,可能会导致数据包丢失等,此时TCP会重发数据,又会导致网络负担更严重,进而导致更大延迟和更多丢包。为了解决重传机制导致的网络环境恶性循环问题,便有了拥塞控制。

   网络中进行数据传输时,如果发送方发送窗口无节制的变大,一定会导致网络不堪重负,发生网络拥堵。因此需要对发送方发送窗口进行一定控制,称为拥塞控制。

  拥塞控制是为了避免发送方数据填满整个网络,该方案提出拥塞窗口的概念,由发送方维护一个状态变量(cwnd),会根据网络拥塞程度动态变化 ,并且 s w n d = m i n ( r w n d , c w n d ) swnd = min(rwnd,cwnd) swnd=min(rwnd,cwnd)

2. 拥塞控制算法

  发送方维护一个“拥塞窗口”(cwnd),单位为MSS(1046),发送方让自己的发送窗口=cwnd。发送窗口和接收窗口用于控制发送方和接收方均衡,拥塞窗口用于控制整个网络的均衡。
在这里插入图片描述

2.1. 慢启动算法

  发送方开始发送数据时,选择发送1个字节的试探性报文,收到确认后,指数级增长cwnd,直到达到预先设定的慢开始门限(ssthresh)。
  当cwnd达到ssthresh后,切换为拥塞避免算法。

2.2. 拥塞避免算法

  加法增大:每经过一个往返RTT,拥塞窗口+1,即让拥塞窗口缓慢的增大,按照线性增长,称为拥塞避免算法
  乘法减小:当出现网络拥塞时,将慢开始门限设为cwnd的一半,然后将cwnd置为1,执行慢启动算法(已弃用改为快恢复算法)。

2.3. 快重传和快恢复

   1. 一旦发送方收到三个一样的确认(连续4个相同的ACK,标志着1个数据段已丢失),就知道该包之后出现了问题,立刻重传该包,称为快重传
   2. 发送方开始执行“快恢复”算法,慢开始门限(ssthresh) 减为发生拥塞时cwnd的一半。
   3. cwnd设为慢开始门限(ssthresh)减半后的数值,执行“拥塞避免”算法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值