滑动窗口协议
TCP采用可变滑动窗口来实现流量控制。TCP连接的两端交互作用,互相提供数据流的相关信息,包括报文段序列号、ACK号和窗口大小(即接收端的可用空间)。发送端根据这些信息动态调节窗口大小来控制发送,以达到流量控制的目的。每个TCP头部的窗口大小字段表明接收端可用缓存空间的大小。
每个TCP连接的两端都维护一组窗口:发送窗口结构(send window structure)和接收窗口结构(receive window structure)。TCP以字节为单位维护其窗口结构。TCP头部中的窗口大小字段相对ACK号有一个字节的偏移量。发送端计算其可用窗口,即它可以立即发送的数据量。可用窗口(允许发送但还未发送)计算值为提供窗口(即由接收端通告的窗口)大小减去在传(已发送但未得到确认)的数据量。图中P1、P2、P3分别记录了窗口的左边界、下次发送的序列号、右边界。
KCP应用场景:
适用场景是客户端与服务端交互很频繁的游戏。
- 帧同步
- 状态同步