流量控制-滑动窗口
在TCP中,滑动窗口用来流量控制。确保发送方不会过快的发送数据导致接收方无法处理数据。
TCP拥塞控制是为了解决发送方以过高的速率发送导致网络中出现阻塞,其核心思想就是发生重传时控制发送方滑动窗口(通过控制拥塞窗口cwnd)的大小,从而控制其发送速率。
滑动窗口
TCP窗口包括发送窗口和接收窗口,用来限制不同端所能容纳数据的上限,达到控制发送数据的速率。
TCP报文里面的窗口大小,作用是告诉对方本端的接受缓冲区还能容纳多少字节的数据。
在通信过程中,接收方每次收到数据包,在发送确认报文的时候,还需要告诉发送方自己的缓冲区剩余大小。缓冲区剩余大小,我们称之为接受窗口大小。也就是WIN。
发送端的滑动窗口
- 已发送且已收到 ACK 确认
- 已发送但未收到 ACK 确认
- 未发送但可以发送
- 未发送也不可以发送
接收端的滑动窗口
- 已成功接收并确认
- 未收到数据但可以接收
- 未收到数据并不可以接收的数据