假设接收方总是有足够大的缓存空间,因而发送窗口的大小由网络的拥塞程度来决定,发送方让自己的发送窗口等于拥塞窗口。因此拥塞窗口cwnd的大小由网络的拥塞程度来决定,并且动态地在变化。
发送方控制拥塞窗口的的原则:
只要网络没有出现拥塞,拥塞窗口就能再增大一些,这样可以把更多的分组发送出去,提高网络的利用率。但只要网络出现拥塞或者是可能出现拥塞,就必须把拥塞窗口减小一些,减小注入到网络中的分组数,以便缓减网络出现的拥塞。
判断网络拥塞的依据:
当网络发生拥塞时,路由器就要丢弃分组。因此只要发送方没有按时收到应该到达的确认报文,也就是说只要出现了超时,就猜想是网络出现了拥塞。因此网络拥塞的依据就是出现了超时。
TCP拥塞控制
TCP进行拥塞控制有四个核心的算法:慢开始、拥塞避免、快重传和快恢复。
慢开始
主机开始发送数据时,并不清楚网络的负荷情况,所以由小到大逐渐增大拥塞窗口数值。慢开始规定:在每收到一个对新的报文段的确认后,可以把拥塞窗口增加以下数值:
拥塞窗口cwnd每次的增加量 = min(N,SMSS),N是原先未被确认的,但现在被刚收到的确认报文段所确认的字节数,SMSS是最大报文段。
使用满开始算法,每经过一个传输轮次,拥塞窗口cwnd就加倍。
一个传输轮次就是把拥塞窗口cwnd所允许发送的报文段都陆续发送出去,并收到对以发送的最后一个字节的确认所经历的时间。
【注意】在TCP实际运行中,发送方只要收到一个对新报文段的确认,其拥塞窗口cwnd就立即加一,并可以发送新