码迷,mamicode.com
首页 > 其他好文 > 详细

TCP的拥塞控制

时间:2015-09-05 23:41:53      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:

网络中的链路容量和交换结点中的缓存和处理机都有着工作的极限,当网络的需求超过它们的工作极限时,就出现了拥塞。拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。常用的方法就是
1. 慢开始和拥塞避免
2. 快重传和快恢复

下面分别说一下两种方法:

1. 慢开始和拥塞避免

发送方维持一个叫做“拥塞窗口”的变量,该变量和接收端口共同决定了发送者的发送窗口;
当主机开始发送数据时,避免一下子将大量字节注入到网络,造成或者增加拥塞,选择发送一个1字节的试探报文;
当收到第一个字节的数据的确认后,就发送2个字节的报文;
若再次收到2个字节的确认,则发送4个字节,依次递增2的指数级;
最后会达到一个提前预设的“慢开始门限”,比如24,即一次发送了24个分组。慢开始门限ssthresh的用法如下:
cwnd < ssthresh, 继续使用慢开始算法;
cwnd > ssthresh,停止使用慢开始算法,改用拥塞避免算法;
cwnd = ssthresh,既可以使用慢开始算法,也可以使用拥塞避免算法;

所谓拥塞避免算法就是:每经过一个往返时间RTT就把发送方的拥塞窗口+1,即让拥塞窗口缓慢地增大,按照线性规律增长;
当出现网络拥塞,比如丢包时,将慢开始门限设为原先的一半,然后将cwnd设为1,执行慢开始算法(较低的起点,指数级增长);

技术分享

TCP的拥塞控制

标签:

原文地址:http://www.cnblogs.com/stemon/p/4784142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!