上一篇讲完三次握手和四次握手,接下来是滑动窗口
四、滑动窗口
首先滑动窗口是在保证可靠性的前提下,让我们进一步提高传输效率。
如果没有滑动窗口的机制:传输N份文件,就需要等待N次应答时间,
总的传输时间=N份传输时间+N份应答传输时间
滑动窗口的本质就是批量传输
总的传输时间:N分数据传输时间叠加成一份时间,N份应答传输时间,重叠成一份时间
窗口大小:不等待ACK的情况下,批量发送最大数据的量
如果在在滑动窗口的机制下传送数据发生丢包:
1.ACK丢包
如上图,数据包已经到达,ACK丢了
如果丢失ACK,不需要做任何处理,如1001这个ACK丢了,但是2001ACK却已经发送给主机A,说明1-1000这个数据也顺利到达,1001ACK丢了无所谓,只要当前序号开始,就说明之前的数据已经正确传输到达主机B
2.数据包丢包
如上图1001-2000数据包丢了,而2001-3000,3001-4000都顺利到达,此时主机B反馈的ACK确认序号始终是1001,主机A如果发现主机B连续发送ACK都是1001,主机A就明白1001-2000这个数据丢包,就会重新传送,当主机B重新收到丢失的1001-2000数据后,直接返回ACK4001,因为2001-4000已经接受过(都在缓冲区等待),接下来ACK直接从4001开始。