长期包裹捕获

时间:2017-02-05 11:07:08

标签: wireshark

我正在寻找在Windows下捕获网络流量而不存储数据包的解决方案。

这将是网络故障排除脚本的一部分,该脚本应该监控48小时内的性能。

我曾经在基于tcpdump构建的bash中执行类似的脚本:

tcpdump --no-promiscuous-mode -i $netif -w $dumpdir/$stamp2.ping.pcap

不幸的是,WiFi接口驱动程序不够可靠,我花了很多时间和精力来处理TS Linux错误而不是网络错误。所以我决定放弃。

基于Windows(PS)下的dumpcap的新版本:

.\dumpcap.exe -i $AdapterName -w "$outputPath.$timeStamp.pcap" -p -a duration:3600

同样在两种情况下,Iperf都用于生成缓慢恒定的流量。由于2mbps流量占用大量磁盘空间,因此在1小时后重新启动捕获并将旧pcap文件压缩为存档文件。

这部分脚本在Linux下运行非常温和,压缩的pcap文件只是原始大小的一小部分。

我注意到tcpdump和dumpcap之间存在显着差异。 Tcpdump不存储包的数据块。见图片。

tcpdump - package capture example

dumpcap - package capture example

正如您所看到的,tcpdump只存储零而不是数据。

我正在寻找与dumpcap类似的解决方案,或者如果不可能使用不同的工具。唯一标准:它必须在Windows和免费/开源工具上可用。

1 个答案:

答案 0 :(得分:0)

正如您所见,tcpdump只存储零而不是数据。

据我所知,tcpcump不会写入零代替正在传输的数据。如果您看到零,则传输零。

如果您不需要或不需要有效负载,则可以使用带有tcpdumpdumpcap snaplen 来限制捕获的字节数。使用-s <snaplen>选项指定了snaplen,其中snaplen是要保存的数据包中的字节数。这两个工具对此功能使用相同的选项。如果你要限制捕获的字节数,那么生成的捕获文件显然要小得多,你可能不需要费心压缩它们。

顺便说一句,我似乎很奇怪你会使用dumpcap's "-a duration:3600"选项在一小时后停止捕获,只需要 手动 重新启动它而不是使用"-b duration:3600"选项, 自动 停止捕获到文件并在每小时后开始捕获到下一个文件。还有其他-b选项,您可以将它们与"-b duration:3600"选项结合使用,这将允许您限制保留的文件总数或每个文件的最大大小。有关这些选项的详细信息,请参阅dumpcap man page