本文是系列文章中的一篇,内容由浅到深进行剖析,为了方便理解建议按顺序一一阅读。
KCP技术原理
KCP解读:基础消息收发
KCP解读:重传机制
KCP解读:滑动窗口
KCP解读:拥塞控制
本文主要摘取https://xiaolincoding.com/network/3_tcp/tcp_feature.html#滑动窗口 的图文总结。
引入窗口概念的原因
我们都知道 TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包收到了应答了, 再发送下一个。
这个模式就有点像我和你面对面聊天,你一句我一句。但这种方式的缺点是效率比较低的。
如果你说完一句话,我在处理其他事情,没有及时回复你,那你不是要干等着我做完其他事情后,我回复你,你才能说下一句话,很显然这不现实。
所以,这样的传输方式有一个缺点:数据包的往返时间越长,通信的效率就越低。
为解决这个问题,TCP 引入了窗口这个概念。即使在往返时间较长的情况下,它也不会降低网络通信的效率。
那么有了窗口,就可以指定窗口大小,窗口大小就是指无需等