滑动窗口协议,是传输层协议,该协议允许发送方在停止并等待确认前发送多个数据分组,由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。
TCP 滑动窗口,用来暂存两台计算机要传的数据分组,每台运行TCP协议的计算机有两个滑动窗口,一个用于数据发送一个用于数据接收。
上模型图:
1:首先是AB之间三次握手建立TCP连接, 在报文的交互过程中,A将自己缓冲区大小(窗口大小)3发送给B,B同理,这样双发就知道了对端窗口的大小。
2:A开始发送数据,A连续发送3个单位的数据,因为其知道B的缓冲区的大小。在这一波数据发送完成后,A就不能再发送了,需等待B的确认。
3:A发送过来的数据帧将缓冲区填满。
4:这时候缓冲区中的一个报文被进程读取,缓冲区有一个空位,于是B向A发送一个ACK,这个报文中指示窗口大小为1 。A收到B发送过来的ACK消息,并且知道B窗口调整为1 ,因此其只发送了一个单位的数据并且等待B的下一个确认报文。
5:重复上面的过程。
本篇博文主要来自 http://blog.sina.com.cn/s/blog_5ec353710101g5a7.html, 谢谢分享!!!