我们知道TCP有确认应答机制,对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后再发送ACK中携带的序列号。这样保证了可靠传输。但是有时数据往返的时间比较长时,性能就比较差了。
既然这样一发一收的方式性能较低,那么我们一次发送多条数据,就可以大大提升性能。
TCP中提出了滑动窗口这个机制。这个机制是什么?我们看看…
- 窗口大小是指无需等待确认而可以继续发送数据的最大值,上面的图的窗口大小是 4000 字节(4个段)
- 发送前4个段时,无需ACK,直接发送
- 收到第一ACK后,滑动窗口向后移动,继续发送第五个段的数据
- 操作系统内核为了维护这个滑动窗口,需要开辟 发送缓存区来记录当前还有哪些数据没有应答,只有应答了才会把该数据从缓冲区中删除掉
- 窗口越大,则网络的吞吐率就越高