【发布时间】:2013-10-10 12:55:38
【问题描述】:
我收集了几 mb 的网络流量,想对其进行分析。我面临的问题是我想以一种可以降低搜索时间复杂度的方式存储它。
我的第一个想法是把它放到一个列中所有可能属性的数据库中,但后来我意识到表中会有很多 NULL 值,这会降低性能数据库。即使小型数据库的性能下降很小,当我解析一个大的 *.pcap 文件(大于 1Gb)时,性能下降也会极大地影响数据库的性能。随着数据库大小的增加,表中 NULL 值的数量也会增加。
那么有没有更好的方法来存储 *.pcap 文件以供分析,我一直在研究 XML 树作为解决方案,但我不确定。我正在使用 python 来做到这一点,我正在使用 dpkt 模块从 *.pcap 文件中提取数据
提前致谢
【问题讨论】:
-
解析 pcap 的性能如何?你希望达到什么样的表现?
-
您对解析后的数据有什么计划?你想浏览它吗?搜索什么?过滤掉特定的数据包?
-
@Milo :我想对数据进行搜索以获取相应的数据包。并过滤特定的数据包。主要工作是对数据进行搜索。
-
@tMC :我无法将数据解析为任何内容,因为我没有正确的存储方式。所以基本上我只是将一个 pcap 文件解析为一个文本文件。所以在性能问题上,现在很糟糕。
-
我写了一个 MPEG-2 传输流分析器(TS 文件很大),我的方法是为文件构建一个特殊的映射。它是内存中的一个简单列表,其中包含有关数据包和快速解析的一些基本信息。当我想要完整的信息时,我从 TS 文件中解析了选定的数据包(以及围绕它的更多数据包)。我认为这也可以在这里应用:例如如果您想过滤掉 UDP 或 TCP 数据包,则将该信息添加到地图中。这只是一个想法。
标签: python database pcap libpcap winpcap