TCP的可靠性与拥塞控制

一、TCP的可靠性

  1. 为了保证数据包的可靠性,发送方必须把已发送的数据包保留在缓冲区
  2. 并为每个已发送的数据包启动一个超时定时器
  3. 如在定时器超时之前收到了对方发来的应答信息(可能是对本包的应答,也可以是对本包后续包的应答),则释放该数据包占用的缓冲区;
  4. 否则,重传该数据包,直到收到应答或重传次数超过规定的最大次数为止;
  5. 接收方收到数据包后,先进行CRC检验,如果正确则把数据与交给上层协议,然后给发送方发送一个累计应答包,表明该数据已收到,如果接收方正好也有数据要发给发送方,应答包也可放在数据包中捎带过去。

二、拥塞的标志

  • 重传计时器超时
  • 接收到三个重复

三、慢开始与拥塞避免

慢开始

  • 慢开始不是指cwnd(拥塞窗口)的增长速度慢(指数增长),而是指TCP发送设置cwnd=1
  • 思路:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小
  • 为了防止cwnd增长过大引起网络拥塞,设置一个慢开始门限(ssthresh状态变量)
    • 当cwnd<ssthresh,使用慢开始算法:拥塞窗口的两倍进行增长;
    • 当cwnd=ssthresh,既可使用慢开始算法,也可以使用拥塞避免算法:拥塞窗口的基础上加一进行增长;
    • 当cwnd>ssthresh,使用拥塞避免算法:拥塞窗口的基础上加一进行增长

拥塞避免(按线性规律增长)

  • 拥塞避免并非完全能够避免拥塞,是说在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞;
  • 思路:让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞控制窗口加一;
  • 出现网络拥塞后,更新门限值(ssthresh)为发生拥塞时拥塞窗口的0.5倍,并将拥塞窗口置为1,重新执行慢开始算法。

四、快重传于快恢复

快重传

  • 快重传要求接收方在收到一个失序的报文段后就立即发出重复确认,而不要等到自己发送数据时捎带确认。
  • 快重传算法规定:发送方只要一连收到三个重复确认,就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
  • 由于不需要等待设置的重传计时器到期,能尽早重传未被确认的报文段,能提高整个网络的吞吐量。

快恢复(与快重传配合使用)

  • 采用快恢复算法时,慢开始只在TCP连接建立时和网络出现超时时才使用;
  • 当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半。但是接下去并不执行慢开始算法。
  • 考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值