1.为什么存在拥塞控制?
网络中的资源是有限的,比如说路由器的缓存,网线的传输速率,这些限制传输的条件,使网络传输数据并不能随心所欲,因此为了提高传输效率 所以提出额拥塞控制;
2.拥塞控制的方法
拥塞窗口是指每次发送端发送数据的大小,可以用 多个TCP报文数量表示,或者数据包个数;拥塞窗口的大小是动态变化的,其大小受网络的拥塞程度和接收端的接收窗口大小控制;
慢开始和拥塞避免算法
慢开始算法
假设一台新的电脑不知道网络的拥塞程度和接收端的接收窗口大小,那么发送端就先发一个 1 个数据包的报文给接收端,接收端收到报文后,给发送端回复确认报文,发送端收到确认报文后,则把会修改下一次发送数据包的大小,可以对其大小加1,也可以每次乘以2;而为了刚开始发送窗口增长较快,则选择 乘以2,这样的传输方式叫做慢开始;
拥塞避免算法
当发送端的发送窗口不停变大时,总会出现由于发包数量太多而导致网络拥塞,接收端无法收到报文的情况,触发发送端报文的超时重传;发送端的这个最大发送窗口,我们用MAX标记;
使用慢开始算法发送窗口增长速度太快,而为了避免网络快速拥堵,从而给以这种方式增长的发送窗口设置一个阈值,发送端的发送窗口超过这个值之后,发送窗口就又以每次加1的方式开始增长,直到触发超时重传;这种达到阈值之后转换为发送窗口每次加1的算法称为拥塞避免算法;
快重传和快恢复算法
快重传
网络中发生超时重传的时候,不一定是网络拥塞导致,可能是传输中间丢包或者报文坏等等,而这个时候触发超时重传会让接收端等着数据重新发送,浪费传输的时间;为了解决这个问题,所以提出了快重传。假设,发送端A要给发送端B发送1,2,3,4,5,6个序列的报文,而接收端先收到了1,2,但是没有收到3号报文;发送端继续发送4号报文,这时接收端就不会回复客户端 报文4确认,而是报文2确认;发送端继续发送5,6号报文,接收端依然答复 报文2确认;当发送端收到3个报文2确认时,就会知道报文3丢了,这时,发送端就会直接给接收端重新发送报文3,接收端接收到报文3之后,会给发送端答复报文6确认,表明前6个报文已经有序收到;
快恢复
虽然发送窗口大小的增长速度又变缓了,但是依然会触发超时重传,而这个时候,我们会把阈值修改为MAX的一半,然后发送窗口又重新从1开始增长;这样也会对传输效率有影响;快恢复就是在这种情况下并不从1开始,而是将超时重传时的MAX减半重新作为阈值,而把发送窗口的大小也设置为MAX值的一半并开始执行拥塞避免算法;