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”。这是一台电脑从互联网下载文件时的例子:
过滤条件为空,此图形显示所有流量。 双击Y Axis
将 Y 轴改为bits/tick
这样就可以看到每秒的流量
常用过滤条件
tcp.analysis.lost_segment
:表明已经在抓包中看到不连续的序列号。报文丢失会造成重复的 ACK,这会导致重传tcp.analysis.duplicate_ack
:显示被确认过不止一次的报文。大量的重复 ACK 是 TCP 端点之间高延时的迹象tcp.analysis.retransmission
:显示抓包中的所有重传。如果重传次数不多的话还是正常的,过多重传可能有问题。这通常意味着应用性能缓慢和 / 或用户报文丢失tcp.analysis.window_update
:将传输过程中的 TCP window 大小图形化。如果看到窗口大小下降为零,这意味着发送方已经退出了,并等待接收方确认所有已传送数据。这可能表明接收端已经不堪重负了tcp.analysis.bytes_in_flight
:某一时间点网络上未确认字节数。未确认字节数不能超过你的 TCP 窗口大小(定义于最初 3 此 TCP 握手),为了最大化吞吐量你想要获得尽可能接近 TCP 窗口大小。如果看到连续低于 TCP 窗口大小,可能意味着报文丢失或路径上其他影响吞吐量的问题tcp.analysis.ack_rtt
:衡量抓取的 TCP 报文与相应的 ACK。如果这一时间间隔比较长那可能表示某种类型的网络延时(报文丢失,拥塞,等等)
在抓包中应用以上一些过滤条件:
得到如下图:
- Line 是 HTTP 总体流量,显示形式为 packets/tick,时间间隔 1 秒
- Red 是 TCP 丢失报文片段
- Green 是 TCP 重复 ACK
- Blue 重传
函数
IO Graphs
有六个可用函数:SUM
, MIN
, AVG
, MAX
, COUNT
, LOAD
MIN
、AVG
和MAX
帧之间的最小,平均和最大时间,这对于查看帧 / 报文之间的延时非常有用可以将这些函数结合frame.time_delta
过滤条件看清楚帧延时,并使得往返延时更为明显。
COUNT
此函数计算时间间隔内事件发生的次数,在查看 TCP 分析标识符时很有用,例如重传。例图如下:
SUM
该函数统计事件的累加值。有两种常见的用例是看在捕获 TCP 数据量,以及检查 TCP 序列号。
Flow Graph
数据流图
功能可以将连接可视化,并且将一段时间中的数据流显示出来。数据流图一般以列
的方式将主机之间的连接显示出来,并将数据组织到一起,便于更加直观地解读。
选择菜单栏的Statistics
->Flow Graph
,就可以打开数据流图窗口:
从上图中我们可以更好地看到整个连接的情况,比如 TCP 的三次握手
,数据传输以及 HTTP 协议等的信息都一目了然。
Packet Counter
Statistics
->HTTP
->Packet Counter
,每一个网站的报文数量。帮助识别有多少响应和请求
Requests
Statistics
->HTTP
->Requests
,各网站的请求分布
Request Sequences
Statistics
->HTTP
->Request Sequences
Throughput
Statistics
->TCP
->Throughput
,显示 TCP 流吞吐量图形
Window Scaling
显示 TCP 滑动窗口图形
Round Trip Time
Wireshark 的另一个绘图功能就是对所捕获的文件进行往返时间的绘图。往返时间
(round-trip time, RTT)是指一个数据包从发出到确认被成功接收所需要的时间。或者说,往返时间就是数据包抵达目的地的时间,加上收到对方的确认信息的时间之和。通过对这个时间的分析,可以找到通信中的瓶颈,确定是否存在延迟。
选择Statistics
->TCP Stram Graph
->Round Trip Time Graph
,来查看往返时间图:
上图中的每个点代表的是一个数据包的往返时间。在默认情况下,这些值按照序号进行排序。单击图中任意一个点,就可以在Packet List面板中看到相应的数据包。