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

TCP中拥塞控制

时间:2015-09-21 17:15:49      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

TCP拥塞控制,是防止网络中过多数据注入网络,导致路由器或链路过载。

TCP拥塞控制十一个全局性过程。

几个窗口值:

发送方窗口值:发送方缓冲区大小

接收方窗口值:接收方缓冲区大小

拥塞窗口值:   cwnd,表示网络拥塞情况

通告窗口值:  接收方通过这个值去通知 发送方 调整其发送缓冲区大小

慢启动窗口值:当拥塞窗口值小于这个值时,为防止网络拥塞,要采用慢启动。

传输效率及Nagle算法

       TCP的数据传输分为交互数据流和成块数据流,交互数据流一般是一些交互式应用程序的命令,所以这些数据很小,而考虑到TCP报头和IP报头的总和就有40字节,

如果数据量很小的话,那么网络的利用效率就较低。故交互数据流不实用Nagle 算法。

          Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段。 所谓“小段”,指的是小于MSS尺寸的数据块,所谓“未被确认”,是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到

 Nagle算法的规则(可参考tcp_output.c文件里tcp_nagle_check函数注释):

      (1)如果包长度达到MSS,则允许发送;

      (2)如果该包含有FIN,则允许发送;

      (3)设置了TCP_NODELAY选项,则允许发送;

      (4)未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;

      (5)上述条件都未满足,但发生了超时(一般为200ms),则立即发送。

 

当cwnd<ssthresh时,使用慢开始算法。

 

当cwnd>ssthresh时,改用拥塞避免算法。

 

当cwnd=ssthresh时,慢开始与拥塞避免算法任意。

拥塞避免算法:

 

TCP中拥塞控制

标签:

原文地址:http://www.cnblogs.com/niupan369/p/4826293.html

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