tcp 滑动窗口简单理解

来源:互联网 发布:雍正篡位还是继位 知乎 编辑:程序博客网 时间:2024/05/17 03:14


主要是根据接收端的接收情况,动态去调整Window Size,然后来控制发送端的数据流量

1. 客户端不断快速发送数据,服务器接收相对较慢,看下实验的结果

a. 包175,发送ACK携带WIN = 384,告知客户端,现在只能接收384个字节

b. 包176,客户端果真只发送了384个字节,Wireshark也比较智能,也宣告TCP Window Full

c. 包177,服务器回复一个ACK,并通告窗口为0,说明接收方已经收到所有数据,并保存到缓冲区,但是这个时候应用程序并没有接收这些数据,导致缓冲区没有更多的空间,故通告窗口为0, 这也就是所谓的零窗口,零窗口期间,发送方停止发送数据

d. 客户端察觉到窗口为0,则不再发送数据给接收方

e. 包178,接收方发送一个窗口通告,告知发送方已经有接收数据的能力了,可以发送数据包了

f.  包179,收到窗口通告之后,就发送缓冲区内的数据了.


总结一点,就是接收端可以根据自己的状况通告窗口大小,从而控制发送端的接收,进行流量控制