0%

Wireshark 图形显示分析网络数据

wireshark statistics常用图形工具

  • IO Graph
  • Flow Graph
  • HTTP Packet Counter
  • HTTP Requests
  • HTTP Request Sequences
  • TCP Throughput
  • TCP Window Scaling
  • TCP Round Trip Time

IO Graph

IO Graphs这个窗口可以让我们对网络上的数据吞吐情况进行绘图。这样就可以很容易地发现数据吞吐的峰值,找出不同协议中的性能瓶颈,并且还可以用来比较实时的数据流。

选中任意一个 TCP 数据包,在菜单栏选择“Statistics”->“IO Graphs”。这是一台电脑从互联网下载文件时的例子:

1552440846433

1552896238527

过滤条件为空,此图形显示所有流量。 双击Y Axis将 Y 轴改为bits/tick这样就可以看到每秒的流量

1552902520535

常用过滤条件

  1. tcp.analysis.lost_segment:表明已经在抓包中看到不连续的序列号。报文丢失会造成重复的 ACK,这会导致重传
  2. tcp.analysis.duplicate_ack:显示被确认过不止一次的报文。大量的重复 ACK 是 TCP 端点之间高延时的迹象
  3. tcp.analysis.retransmission:显示抓包中的所有重传。如果重传次数不多的话还是正常的,过多重传可能有问题。这通常意味着应用性能缓慢和 / 或用户报文丢失
  4. tcp.analysis.window_update:将传输过程中的 TCP window 大小图形化。如果看到窗口大小下降为零,这意味着发送方已经退出了,并等待接收方确认所有已传送数据。这可能表明接收端已经不堪重负了
  5. tcp.analysis.bytes_in_flight:某一时间点网络上未确认字节数。未确认字节数不能超过你的 TCP 窗口大小(定义于最初 3 此 TCP 握手),为了最大化吞吐量你想要获得尽可能接近 TCP 窗口大小。如果看到连续低于 TCP 窗口大小,可能意味着报文丢失或路径上其他影响吞吐量的问题
  6. tcp.analysis.ack_rtt:衡量抓取的 TCP 报文与相应的 ACK。如果这一时间间隔比较长那可能表示某种类型的网络延时(报文丢失,拥塞,等等)

在抓包中应用以上一些过滤条件:

1552959516799

得到如下图:

1552959550482

  • Line 是 HTTP 总体流量,显示形式为 packets/tick,时间间隔 1 秒
  • Red 是 TCP 丢失报文片段
  • Green 是 TCP 重复 ACK
  • Blue 重传

函数

IO Graphs有六个可用函数:SUM, MIN, AVG, MAX, COUNT, LOAD

MINAVGMAX帧之间的最小,平均和最大时间,这对于查看帧 / 报文之间的延时非常有用可以将这些函数结合frame.time_delta过滤条件看清楚帧延时,并使得往返延时更为明显。

1552972558253

COUNT此函数计算时间间隔内事件发生的次数,在查看 TCP 分析标识符时很有用,例如重传。例图如下:

1552972717700

SUM该函数统计事件的累加值。有两种常见的用例是看在捕获 TCP 数据量,以及检查 TCP 序列号。

Flow Graph

数据流图功能可以将连接可视化,并且将一段时间中的数据流显示出来。数据流图一般以的方式将主机之间的连接显示出来,并将数据组织到一起,便于更加直观地解读。

选择菜单栏的Statistics->Flow Graph,就可以打开数据流图窗口:

1552441053261

从上图中我们可以更好地看到整个连接的情况,比如 TCP 的三次握手,数据传输以及 HTTP 协议等的信息都一目了然。

Packet Counter

Statistics->HTTP->Packet Counter,每一个网站的报文数量。帮助识别有多少响应和请求

1552441081950

Requests

Statistics->HTTP->Requests,各网站的请求分布

1552441138425

Request Sequences

Statistics->HTTP->Request Sequences

1552441180076

Throughput

Statistics->TCP->Throughput,显示 TCP 流吞吐量图形

1552441779141

Window Scaling

显示 TCP 滑动窗口图形

1552441808903

Round Trip Time

Wireshark 的另一个绘图功能就是对所捕获的文件进行往返时间的绘图。往返时间(round-trip time, RTT)是指一个数据包从发出到确认被成功接收所需要的时间。或者说,往返时间就是数据包抵达目的地的时间,加上收到对方的确认信息的时间之和。通过对这个时间的分析,可以找到通信中的瓶颈,确定是否存在延迟。

选择Statistics->TCP Stram Graph->Round Trip Time Graph,来查看往返时间图:

1552441901150

上图中的每个点代表的是一个数据包的往返时间。在默认情况下,这些值按照序号进行排序。单击图中任意一个点,就可以在Packet List面板中看到相应的数据包。