TCP的拥塞控制

  1. 目的
    拥塞控制:当一个网络中数据一次性发太多时,为了避免由于数据太多而造成网络链路或者路由器过载。
  2. 解决的方法
    慢启动、拥塞避免
    快速重传、快速恢复
    (1)慢启动
    首先先给发送方设置一个“拥塞窗口”的变量,这个变量和接收端的接受窗口共同决定了发送者的发送窗口。
    为了避免一次将所有数据都注入到网络中,造成网络拥塞。所以进行试探性的发送数据,先发一个字节的数据,收到确认之后,每次都以2^n发送数据。
    最后会达到一个提前预设的“慢开始门限”(ssthresh),当达到这个门限之后开始进行拥塞避免算法。遵循以下的条件:
    a.cwnd < ssthresh 慢启动
    b.cwnd > ssthresh 拥塞避免
    c.cwnd = ssthresh 慢启动 或者拥塞避免都可以
    (2)拥塞避免
    每经过一个轮转时间RTT就把发送者的拥塞窗口+1,让拥塞窗口的大小缓慢增加,呈线性增长。
    当出现网络拥塞时,把慢开始的门限减为原来的一半,把cwnd的值置为1,开始执行慢启动算法
    这里写图片描述
    (3)快速重传
    快速重传算法要求接受方每发出一个失序的报文段就立即发出确认,为的是能够及早知道有报文段没有到达对方,而不要等待自己发送数据时才进行捎带确认。快速重传规定接收方如果连续收到3个重复的确认,就说明对方没有收到数据,应立即重发对方没有收到的报文段,而不必等到重传计时器到期。
    (4)快速恢复
    与快重传配合使用的还有快恢复算法,当发送方连续收到三个重复确认时,就执行乘法减小算法,把慢开始门限ssthresh减半。这是为了预防网络发生拥塞。请注意,接下去就不再执行慢开始算法了。由于发送方现在认为网络很可能没有发生拥塞,因此与慢开始不同之处是现在不执行慢开始算法,即把拥塞窗口cwnd的值设置为1,而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法,使拥塞窗口慢慢的线性的增大。
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值