网络拥塞和死锁
什么是网络拥塞?
网络拥塞是数据链路层、网络层、传输层都会考虑的问题。与流量控制相比,是全局的概念,流量控制是针对点对点的,二网络拥塞可能是大量的发送消息来不及处理,导致网络性能下降。
严重时甚至导致网络通信业务陷入停顿,即出现死锁现象。
判断网络是否进入拥塞状态的方法?
网络负载增加,但是网络的吞吐量明显小于正常的吞吐量。
网络拥塞的原因?
1)大量分组涌入,到达同一个分组。
2)路由器处理比较慢,存在大量的缓冲区排队。
防止拥塞的方法
1)数据链路层:停止-等待协议,滑动窗口协议。
2)网络层:
3)传输层:
TCP拥塞控制的算法
慢开始,拥塞避免,快重传,快恢复。
慢开始
TCP刚连接好并开始发送TCP报文段时,先令拥塞窗口 cwnd = 1。
然后每经过一个RTT,cwnd就会加倍,指数式增长,直到达到慢开始门限。
拥塞避免
每经过一个RTT,cwnd就会增加一个 MSS,线性增加。
超时,慢开始门限减半,(乘法减少)
网络拥塞的处理
发生超时的时候,拥塞窗口 cwnd = 1,慢开始门限减半为发生拥塞时的拥塞窗口。
快重传
更早地重传丢失的报文段。发送方连续收到三个重复的ACK报文(失序),可以认为网络可能已经出现了拥塞,直接重传不必等待重
传计时器超时。
快恢复
发送方连续收到三个重复的ACK报文,cwnd = 1/2(发生拥塞的拥塞窗口),窗口线性增加。
总结:
慢开始和拥塞避免是针对超时;收到冗余ACK,采用快重传和快恢复。