滑动窗口控制机制,是整个TCP协议工作的中控台或核心站。当TCP连接建立时,协议栈会为不同的连接划分出独立的缓冲空间,而在数据传输过程中,则存在复杂的传输控制过程。由于这个过程管理和处理的复杂性,很多性能问题往往就出现在这里。本节介绍如何使用Wireshark分析TCP滑动窗口,查看在数据传输过程中,接收方的窗口大小变化情况,以便更好的了解和优化TCP连接的性能。
如何打开TCP窗口分析界面
打开需要分析的抓包文件。选择想要分析的数据帧。
点击菜单统计——TCP流图形——窗口尺寸。如下图。
窗口大小分析面向单向TCP会话,从打开的窗口可以看到题目信息,窗口尺寸对于某某连接及方向。如下图,显示了114.112.96.29向192.168.30.124流向中,443端口发往54645端口数据的窗口大小及数据传输情况。
如何分析TCP滑动窗口
在TCP窗口分析界面,默认显示2类线条。最上面浅绿色的是接收方宣告的窗口大小(Windows Size),代表接收方还有多大缓冲空间可接收数据。下方深色黑点则代表数据发送方的实际数据传输大小。
在滑动窗口分析过程,分析人员可以使用鼠标放缩功能,定位到具体的某一个细节,详细分析。如下图,通过鼠标放缩,查看数据发送方在某一时刻具体的数据发送大小和数量。
常见TCP窗口故障分析技巧
TCP滑动窗口分析是网络性能分析中关键的分析对象之一。针对TCP窗口可能出现的相关信息或错误,Wireshark通过内置专家系统会自动提示,或者以不同的颜色区分显示。分析人员也可以根据自己的喜好或分析习惯,自定义显示样式。关于如何自定义显示样式,请查看《网络分析系列之九_Wireshark基础设置(一)》和《网络分析系列之十四_自定义Wireshark个性化环境》,关于专家系统内容,在后面有专题小节。
下面简要列举一下在Wireshark专家系统中,可能会看到的关于TCP窗口的相关信息,这其中可能是错误,也可能是告警或记录。
Zero Window:如果TCP接收方窗口已满,这时接收方会通知发送方,让发送方暂停一段时间,不要继续发送消息。这时,在Wireshark专家系统中就会查看到这类消息。
Zero Window Probe:如果从客户端那里接收数据包的服务器不能以客户端发送数据包的相同速率来处理数据包,就会导致丢包的情况。在这种情况下,服务器就会向客户端发送零窗口探测包。让客户端暂停一段时间不要发送数据包,同时保持这条连接不会断开。
Zero Window Probe ACK:和Zero Window Probe消息的例子有关。Zero Window Probe ACK消息是客户端发送的消息,其作用是对服务器的请求做出响应。
Window is full:这种消息的作用是通知发送方主机,TCP接收窗口当前已满。
Windows Update:这类消息可以让发送方意识到TCP接收窗口的大小已更新。
当然,与TCP窗口相关的分析信息不仅限于上述列举出来的。总之,滑动窗口分析在数据包分析过程占有较高的比重和分量,是分析人员不能忽视的对象。只有详细了解了在Wireshark中显示的这些关于TCP窗口的信息的意义和产生原因,才能在实战中得心应手,精准分析出问题根本原因。