tshark处理大报文的注意事项

栏目: 编程工具 · 发布时间: 7年前

内容简介:我在这篇文章中曾经说明了如何使用wireshark的lua脚本进行大报文的切割,其实这里面隐含存在着一个问题。由于lua脚本的执行是通过关于大报文的情形要分为离线和在线两种情况。1,针对在线的情况,如果仅仅是抓报,不做分析可以使用dumpcap来执行。类似这种形式

我在这篇文章中曾经说明了如何使用wireshark的 lua 脚本进行大报文的切割,其实这里面隐含存在着一个问题。由于lua脚本的执行是通过 tshark -X lua_script:createNewPcap.lua -r xx.pcap -q 这种形式来执行的,那么就存在一个wireshark遗留很久的问题。那就是,当报文很大的时候,通过tshark进行读取会导致其占用的内存大小超过本机内存,这个时候就会报memory erro的错误。关于为什么会有这样的问题,在 这篇文章 中有详细的论述。具体原因就是wireshark需要内存来存储报文的元数据信息以及流的状态信息,以用于报文的重组,我们看到的wireshark显示的重组信息,都是由这些信息来提供的。举个例子来说https中的server hello响应信息一般有4k字节左右,在以太网中是分包传输的。我们打开wireshark之所以能够看到wireshark将这些分开的报文组装成为最后的server hello信息以及certificate信息,就是因为wireshark在内存中存储了流的状态信息以及一些元信息,当然报文也是存在内存中的,方便后续报文的重组。内存的使用情况主要取决于报文的数量,报文类型(大报文还是小报文片),以及wireshark具体的设置。

关于大报文的情形要分为离线和在线两种情况。

1,针对在线的情况,如果仅仅是抓报,不做分析可以使用dumpcap来执行。类似这种形式 dumpcap -i 1 -w test.pcap 。如果需要更多分析过滤作用的话,tshark是提供了-b参数来解决在线长时间抓取报文的问题。据说有人曾连续抓了一个星期200G 的报文没有出现问题,参见 这里 。可以通过man tshark找到-b参数的使用方法。类似这样

tshark -i eth0 -Y “http.host == \“baidu\””-w baidu.pcap -b filesize:1000000 ,当然-b参数的使用是在1.12版本之后的,具体有没有成为release版本,参考 这里

2,针对离线的情况,由于tshark并没有像在线的那样提供了-b参数来清除内存中的数据,wireshark官方在 这里 介绍了几种方法,比如增加内存,包括物理内存和虚拟内存等等,个人觉得增加虚拟内存是比较理想的方法,虽然损失了处理的速度,但是至少内存可以扩展的比较大来应对大报文的情形。当然也可在libpcap等库的基础上来编写处理程序,那么耗时较长,在 这里 给出了一种解决的办法。

如果有好的解决办法的,欢迎多交流。

本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里。


以上所述就是小编给大家介绍的《tshark处理大报文的注意事项》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C#图解教程

C#图解教程

索利斯 / 苏林、朱晔 / 人民邮电出版社 / 2009-1 / 65.00元

本书是一本广受赞誉的C# 教程。它以图文并茂的形式,用朴实简洁的文字,并辅之以大量表格和代码示例,精炼而全面地阐述了最新版C# 语言的各种特性,使读者能够快速理解、学习和使用C#。同时, 本书还讲解了C#与VB 、C++ 等主流语言的不同点和相似之处。 本书是一本经典的C# 入门书,不仅适合没有任何编程语言基础的初级读者,而且还是有VB 、C++ 等语言基础的C# 初学者的最佳选择。一起来看看 《C#图解教程》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具