如何使用libpcap v1.6.1捕获具有纳秒分辨率的数据包?根据更改日志,他们在v1.5.0中添加了对纳秒分辨率的支持。当我执行tcpdump
并查看上限文件时,它仍然只有几微秒。我尝试了以前的更改方法
pcap_open_offline_with_tstamp_precision(
fname, PCAP_TSTAMP_PRECISION_MICRO, errbuf)
到
pcap_open_offline_with_tstamp_precision(
fname, PCAP_TSTAMP_PRECISION_NANO, errbuf)
重新编译,并重新安装它但仍然无法正常工作。现在我想知道这是否与我的Linux版本(RedHat Enterprise 6.2)有关。如果有人可以给我任何其他方式或一步一步的程序,我将非常感激。
答案 0 :(得分:2)
如何使用libpcap v1.6.1捕获具有纳秒分辨率的数据包?
查看the other question about this的答案。
当我执行
tcpdump
并查看上限文件时,它仍然只有几微秒。
默认情况下,Tcpdump请求libpcap为其提供微秒分辨率的时间戳;较新版本的tcpdump(4.6及更高版本)支持--time-stamp-precision
标志,可用于从libpcap请求纳秒分辨率时间戳。由于当前没有API询问文件的时间戳精度是什么,因此当使用该标志运行时,它将显示9个时间戳数字,即使该文件仅具有微秒精度(因此时间戳中的最后3位数始终为零。
我尝试了以前改变的方法......
你改变了什么节目?这种变化不会影响实时捕获,tcpdump至少不会像这样进行调用(旧版本根本不会使用pcap_open_offline_with_tstamp_precision()
,因为它们是在pcap_open_offline_with_tstamp_precision()
之前发布的已存在;较新版本通过pcap_open_offline_with_tstamp_precision()
传递一个变量,默认为PCAP_TSTAMP_PRECISION_MICRO
,但可以通过指定标记PCAP_TSTAMP_PRECISION_NANO
将其设置为--time-stamp-precision nano
。