TCP是如何通过滑动窗口协议实现流量控制和拥塞控制的?
TCP滑动窗口协议博客
滑动窗口协议
1.滑动窗口是什么?
滑动窗口是类似于一个窗口一样的东西,是用来告诉发送端可以发送数据的大小或者说是窗口标记了接收端缓冲区的大小
ps:窗口指的是一次批量的发送多少数据
2.为什么会出现滑动窗口?
在确认应答策略中,对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后再发送下一个数据段,这样做有一个比较大的缺点,就是性能比较差,尤其是数据往返的时间长的时候
使用滑动窗口,就可以一次发送多条数据,从而就提高了性能
3.滑动窗口的一些知识点
(1)接收端将自己可以接收的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK来通知发送端
(2)窗口大小字段越大,说明网络的吞吐率越高
(3)窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,即就是说不需要接收端的应答,可以一次连续的发送数据
(4)操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有那些数据没有应答,只有确认应答过的数据,才能从缓冲区删掉
ps:发送缓冲区如果太大,就会有空间开销
(5)接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成