我遇到过一种情况,需要计算每秒字节数随时间变化的标准偏差和平均值。我已经阅读了如何计算标准偏差和平均值,但我已经使用 wireshark 捕获了超过 50k 个数据包,我真的不想手动执行此操作... :S 有没有办法在 Wireshark 中执行此操作?我发现我能够显示数据包的字节数/秒图表,但到目前为止还没有办法进行计算?非常感谢您的帮助!
更新 1.
我有一个格式如下的 Excel 文档...
Time Source Destination Protocol Length Info
0.000000 10.14.14.40 239.1.2.3 MPEG TS 1358 1234 > 1234 Len=1316 [MP2T fragment of a reassembled packet]
0.000575 10.14.14.40 239.1.2.3 MPEG TS 1358 1234 > 1234 Len=1316
0.000913 10.14.14.40 239.1.2.3 MPEG TS 1358 [MP2T fragment of a reassembled packet] [MP2T fragment of a reassembled packet] Program Association Table (PAT) Program Map Table (PMT)
0.001244 10.14.14.40 239.1.2.3 MPEG TS 1358 [MP2T fragment of a reassembled packet]
0.001576 10.14.14.40 239.1.2.3 MPEG TS 1358 [MP2T fragment of a reassembled packet]
0.001909 10.14.14.40 239.1.2.3 MPEG TS 1358 [MP2T fragment of a reassembled packet]
0.002241 10.14.14.40 239.1.2.3 MPEG TS 1358 [MP2T fragment of a reassembled packet]
0.002574 10.14.14.40 239.1.2.3 MPEG TS 1358 [MP2T fragment of a reassembled packet] [MP2T fragment of a reassembled packet]
0.002575 10.14.14.40 239.1.2.3 MPEG TS 1358 [MP2T fragment of a reassembled packet]
更新 2.
平均值是针对整个捕获期的。
答案1
我对 Wireshark 一无所知,但我会在 Excel 中给你一个解决方案,这可能会帮助你在 Wireshark 中做到这一点。
困难的部分在于你拥有的海量数据。我会不是尝试绘制 50k 个数据点的图表,这会显得有点过分,而且几乎无法阅读。下面是我解决这个问题的方法:
- 选择数据的代表性子集。如果你取每 50 个数据点,那么图表上仍会有 1000 个点。如果你的时间在 A 列,那么请输入
=OFFSET(A$2,50*(row()-1),0)
在新列(例如 H2)中,向下填充 1000 行。对 bps 列执行相同操作。
- 计算所有 50k 个数据点的平均值和标准差。还计算平均值 +/- 2 标准差。执行此操作的公式如下:
=AVERAGE(F:F)
和=STDEV(F:F)
(假设您的 bps 值在 F 列中)。将这些数字与所选数据的首次和最后一次一起放入新的数据表中。请参见下面的示例。
- 现在,您可以从新的简化数据表中绘制 Bps 图表,并从小表中添加平均值和标准差线。您最终应该得到如下结果:
您只需要两个数据点即可绘制平均值和标准差线,因为它们本质上是常数。+/- 2 标准差范围大约是 bps 数据的 95% 置信区间,这就是这种图常用的原因。
希望我正确理解了您的问题。如果我理解有误或者您有其他问题,请告诉我。
答案2
为了展示我最终做了什么……我创建了一个 Java 应用程序,以编程方式计算标准偏差和平均值。这样我就可以导入 Wireshark .pcap 文件。
这是 github 存储库的链接。 https://github.com/APayerl/PacketBitrateCalculator