背景
对资源需求的总和大于可用资源时,就会出现拥塞。此时,网络中有许多资源同时呈现供应不足,网络性能变坏,进而网络吞吐量将随输入负荷增大而下降。
因此,需要进行拥塞控制,防止过多的数据注入到网络中。
扩展:与流量控制的区别——
流量控制强调控制发送端与接收端之间的流量。拥塞控制是一个全局性的问题,需要控制网络中各个节点的流量。
拥塞控制
假定:
1.数据单方向传送,而另一个方向只传送确认。
2.接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度。
发送窗口=Min{接收窗口rwnd,拥塞窗口cwnd}
接收窗口:接收方根据接受缓存设置的值,并告知给发送方,反映接收方容量。
拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。
一个传输轮次:发送了一批报文段并收到它们的确认的时间。即一个往返时延RTT,开始发送一批拥塞窗口内的报文段到开始发送下一批拥塞窗口内的报文段的时间。
慢开始 拥塞避免
1、初始时,拥塞窗口置为1,以后发送方每收到一个确认ACK,cwnd值加1,即每经过一个传输轮次,cwnd*2。
2、执行拥塞避免算法后,在收到所有报文段的确认后,就把拥塞窗口cwnd增加一个MSS大小。