TCP window Full & TCP Zero Window
注:
- 192.168.60.67 是客户端IP
- 10.250.251.223是服务端IP
- 当客户端向服务发送多个280大小应用层数据时,在No 45帧数据时发生TCP Window
Full,应用发送280字节,实际发出去只有67个字节。280 = 334-14(Frame header)-20(IP
header)-20(TCP header) 这时TCP Window
Full代表服务端接收缓冲区已经满了,无法再接收数据,tcp的协议层将溢出的数据丢弃了
- 在No46帧数是服务端的TCP的ACK数据,其中出现 TCP Zero Window,进一步说明服务端的接收缓冲区已经满了
- 在三次握手中第二次握手消息,可以看到服务端的接收缓冲区大小为2920个字节
- 在将服务端的接收缓冲区大小改大以后,解决此问题。如果本来服务端本来接收缓冲区初始很大,那就有可能是服务端处理太慢,没及时取出内核中数据造成。那只能通过提高服务端的处理速度解决。
参考文献
TCP Analysis Flags 之 TCP Window Full
深入浅出之 TCP协议
值得一看!网络协议栈测试神器 - packetdrill
Linux TCP/IP分析工具Packet Drill