tcp stream graphs 分析tcp传输过程

184 阅读5分钟

慢启动阶段

慢启动阶段的特点,单位时间内,发包的数量在呈现指数级的增长。wireshark 可以通过tcp 时序图 Stevens来看到这种增长的变化。x轴是时间,y轴是包的序列号。

接收窗口

绿色代表接收窗口的大小,蓝色的点叫 bytes out 也就是在途数据(指已经发送但是还未被确认的数据。在途数据越多,说明发送端发送的数据就越多,整个过程,接收窗口在达到4M的时候就基本不变了。

发送端发送数据只是在差不多5s的时候达到了接收窗口的瓶颈,但由于网络拥塞,发送端发现之前发的包丢了,所以没有继续发送新的数据。而旧的数据包在慢慢ack过程中,所以bytes out变小了。

并且后续,发送的数据量大小都远远小于接收窗口的大小。如果接收窗口是瓶颈,在5s后,整个图应该是 bytes out和接收窗口处于一条基本重合的水平直线上,这里显然不是这样

TCP数据流图形tcptrace

除此之外,另外还有两种线:

丢包

很多红色 SACK,说明接收端那边重复在说:中间有一个包我没有收到,中间有一个包我没有收到。

吞吐受到接收 window size 限制

这个图可以看出,黄色的线(接收端一 ACK)一上升,蓝色就跟着上升(发送端就开始发),直到填满绿色的线(window size)。说明网络并不是瓶颈,可以调大接收端的 buffer size.

吞吐受到网络质量限制

从这张图中可以看出,接收端的 window size 远远不是瓶颈,还有很多空闲。

放大可以看出,中间有很多丢包和重传,并且每次只发送一点点数据,这说明很有可能是 cwnd 太小了,受到了拥塞控制算法的限制。

如果图中绘制的点的趋势比较陡,数据的吞吐量也就比较高。

每张时序图中会包含3条线。其中密密麻麻的那条线是TCP数据段,其中小选段越长,表示数据包中的载荷数据越多。TCP数据段下面的那条线表示的是发送数据的ACK数据流,而最上面的那条线表示的是计算出来的客户端接收窗口。

通过放大效果,数据段曲线图中有红色或深红色竖线,代表专家系统事件。关于专家系统介绍,会在今后的章节详细描述。

TCP数据流分析技巧

使用TCP数据流图形分析,掌握以下规则,有助于更好更快的得到分析结果。

所有斜线越陡越好,平坦的曲线代表传输平缓。

数据段中出现的红色信息越少越好,代表专家系统中事件越少。

客户端接收窗口的那条线和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接收窗口的大小已更新。

统计->已解析地址

如果咱们排查的是和公网通信的问题,可通过"已解析地址"查看地址对应的域名情况。

统计->流量图

"流量图"可查看会话的流量情况。特别适合分析丢包、重传、重复ACK等情况。

分析->专家信息

通过调试"专家信息",可展示出数据包所有分组的问题,并自动进行问题分级,便于查看数据包的错误情况。

找到相应的错误后,右击"作为过滤器应用"->"选中",即可过滤出该类型的所有数据包。下图过滤出了重复序列号的所有数据包。

流量图

流量图,该工具直观显示了会话节点之间的信息,包括时间、端口及详细的TCP传输控制和数据传输报文信息。

这是Wireshark最强大的特性之ー,当用户需要面对存在大量连接断开、大量数据帧丟失或者大量流量重传等情况的环境时,这种特性就可以协助用户进行排错。数量图可以让我们创建一个很多列的图,这张图会显示两个端点间传输流量的汇总信息,它甚至可以让用户将输出结果导出为一个简单的文本格式文件。这是验证客户端和服务器之间连接状态的最佳方式。