学习笔记之TCP拥塞控制

TCP的拥塞控制

(1)拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制所要做的都有一个前提,网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。

(2)流量控制:往往指点对点通信量的控制,是个端到端的问题(接收端控制发送端),流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

(3)拥塞控制和流量控制之所以常常被弄混,是因为某些拥塞控制算法是向发送端发送控制报文,并告诉发送端,网络已经出现麻烦了,必须放慢发送速率。

(4)拥塞控制四种算法:慢开始、拥塞避免、快重传、快恢复。

(5)拥塞窗口:拥塞窗口的大小取决于网络的拥塞程度,并且在动态的变化。发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。

(6)慢开始算法思路:当主机发送数据时,如果立即把大量火速据发送到网络上,就有肯呢个引起网络拥塞,因为现在不清楚网络的负荷情况,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,即从小到大逐渐增加拥塞窗口的数值。通常在刚刚开始发送报文时,先把拥塞窗口设置为一个最大报文段MSS的数值。而在每收到一个对新报文段的确认后(重传的不算在内),把拥塞窗口增加值多一个MSS的数值。用这样的方法逐步增大发送方的拥塞窗口,可以使分组注入到网络的速率更加合理。因此使用慢开始算法之后,每经过一个传输轮次(从发送到收到确认的总时间),拥塞窗口就加倍。但是为了防止拥塞窗口增长过大引起网络拥塞,还需要设置一个慢开始门限(ssthresh)。当cwndssthresh时,使用慢开始算法。大于的时候停止使用慢开始算法而改用拥塞避免算法。当相等的时候,两者都可以使用。拥塞避免算法思路:让拥塞窗口缓慢的增大,即每经过一个往返时间RTT就把发送方的拥塞窗口加1,而不是加倍。这样拥塞窗口按线性规律缓慢的增长。无论是在慢开始阶段还是拥塞避免结算,只要网络发生了拥塞,就要把慢开始门限设置为出现拥塞时的发送方窗口值的一半(但不能小于2).然后把拥塞窗口重新设为1,执行慢开始算法。这也叫乘法减小:即不论是在慢开始阶段还是拥塞避免阶段,只要出现超时,就把慢开始门限减半。而加法增大是指:执行拥塞避免算法后,使拥塞窗口缓慢增大,以防止网络过早的出现拥塞。

(7)快重传:首先要求接收方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等待自己发送数据时才捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待为该报文段设置的重传计时器到期。由于发送发尽早重传未被确认的报文段,因此采用快重传后可以使整个网络的吞吐量提高约20%。与快重传相配合的是快恢复算法:1当发送方连续收到3个重复确认时,就执行乘法减小算法,把慢开始门限减半。这是为了预防网络发生拥塞。2由于发送方现在认为网络很有可能没有发生拥塞,因此慢开始门限减半后不执行慢开始算法(即将拥塞窗口设置为1),而是把拥塞窗口值设置为慢开始门限减半后的数值,然后开始执行拥塞避免算法,使拥塞窗口缓慢的线性增大。

最新回复(0)
/jishuLkmzjbOJTMrveOLzRd8JXvhz375X_2FEjGCWgaJw_3D_3D4858721
8 简首页