通常我们希望传的数据越多越好,但是在真实的网络环境中,如果不考虑接收方的能力,传过多的数据就会导致数据丢失,因此必须对传输量进行流量控制。
滑动窗口用来帮助我们动态的去调整传输流量,以尽最大能力传输数据。
在传输数据的交互过程中,接收方会告诉发送方自己的窗口大小,发送方会根据接收方回传的接收信息以及窗口信息,来动态的调整自身窗口的大小。
当窗口大小变为0时,发送方会启动持续计时器,到达指定时间后,就会发送探测报文,询问接收方是否有能力接收。每次发送探测报文后,会启动一个新的持续计时器,这种设计是为了避免 窗口报文丢失导致的死机。
某段时间内,对某一资源的需求超过了该资源所能提供的可用部分就会产生拥塞;
四种控制算法:慢开始、拥塞避免、快重传、快恢复;
慢开始门限、拥塞窗口根据这两个关键参数 去选择 慢开始还是拥塞避免算法;
慢开始时 拥塞窗口是以指数速度增长,当拥塞窗口达到慢开始门限后 就启动了拥塞避免算法,拥塞算法中,拥塞窗口是线性增长。
由于个别报文段的丢失可能导致 系统误以为发生了拥塞,降低了传输的效率,因此需要一种算法(快重传)来让发送方尽早知道发生了个别报文段的丢失。快重传其实就是立刻发送确认报文,不要等待超时计时器重传。
关于第四种 快恢复算法,其实是和快重传放在一起联用的,当接收方收到三个重复的报文,就会启动快重传和快恢复,快恢复的目的是 不会让拥塞窗口降为1,而是将拥塞窗口与慢开始门限设为相同值(原慢开始门限的一半)