TCP的拥塞控制

拥塞的产生是各种可用资源不足以支持对资源的要求,使网络的性能发生了明显的下降,对于拥塞控制来说,是一个关乎整个网络整体的问题,单纯地增加某一项资源甚至增加所有资源是不能完全地解决拥塞问题的。拥塞控制和流量控制都是要让发送端放慢发送速度,但流量控制只是针对于单一线路的控制,而拥塞控制需要从全局角度对每一个发送端进行控制。
拥塞是没办法避免的。
分组的丢失是网络发生拥塞的征兆而不是原因。 在许多情况下甚至正是拥塞控制机制本身成为引起网络性能恶化甚至产生死锁的原因。
TCP进行拥塞控制的算法有四种,慢开始,拥塞避免,快重传,快恢复

  • 慢开始:慢开始是指所有的发送方它会从一个或者两个分组开始,当收到确认之后再增加相应的分组数,结果是在到达慢开始门限ssthresh之前,发送方的发送速度是以指数级增长的,所有慢开始并不是发送的速度很慢,而是指我们开始时是逐步递增的,意味着我们的规程并不慢。慢开始指的是一开始的分组数量比较少,达到的效果是可以防止过多的分组一下子传到网络上导致拥塞。
  • 拥塞避免:拥塞控制是基于也叫基于窗口的拥塞控制。发送方发送一个叫拥塞窗口的状态变量,其大小取决了网络的拥塞程度,并且动态地变化。发送方让自己发送的窗口等于拥塞窗口,当网络没有出现拥塞,拥塞窗口就可以增大一点以便把更多的分组发送出去,这样可以提高网络的利用率,但是一旦当网络出现拥塞或出现了超时,有可能发生拥塞,就把拥塞窗口变小一点来缓解网络出现的拥塞。拥塞避免并不是完全避免拥塞,而是让拥塞来得更慢一点
  • 快重传:快重传算法是为了防止报文段丢失重新进入到慢启动的过程。比方说,发送方发送了m1,m2,m3,m4,m5,m6,接收方一次收到m1,m2并对m1和m2进行确认,但是在m3还没收到之前却收到了m4,这个时候接收方没有收到m3本来可以什么也不做,但按照快重传算法它必须对m2进行重复确认以告诉发送方,自己没有收到m3。发送方继续发送m5,m6,接收方收到后仍要对m2进行重复确认,直到它已经对m2进行了4次确认,后面三次是重复确认。快重传规定,只要发送方收到了三个重复确认就直到接收方没有收到m3,于是应该立即重传m3。发送方收到了三个重复确认并不意味着就要发生拥塞,只是要防止重新进入到慢开始阶段,所以通过3个ACK确认了判断。
  • 快恢复:发送方知道现在只是丢失了个别的报文段,于是不启动慢开始,而是执行快恢复算法。这时发送方重新调整门限值ssthresh=cwnd/2,同时设置拥塞窗口cwnd=ssthresh,并开始执行拥塞避免算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值