什么是拥塞控制
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。
拥塞控制和流量控制的区别:
拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
TCP的四种拥塞控制算法(慢开始、拥塞控制、快重传、快恢复)
1. 拥塞控制概要
发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化。
拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些;但只要网络出现拥塞,拥塞窗口就减小一些。
判断网络出现拥塞的依据:没有按时收到应当到达的确认报文(即发生重传)
不考虑流量控制的前提下,发送方将拥塞窗口作为发送窗口,即 swnd = cwnd
TCP拥塞控制维护一个慢开始门限 ssthresh:
- 当 cwnd < ssthresh,使用慢开始算法
- 当 cwnd > ssthresh,停止使用慢开始算法而改用拥塞避免算法
- 当 cwnd = ssth