如何在libpcap中捕获实时数据包时启用纳秒分辨率



如何使用libpcap v1.6.1以纳秒分辨率捕获数据包?基于变更日志,他们在v1.5.0中增加了对纳秒分辨率的支持。当我执行tcpdump并查看cap文件时,它仍然只有微秒。我尝试了以前更改的方法

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)有关。如果有人能给我任何其他方法或一个循序渐进的过程,我将不胜感激。

如何使用libpcap v1.6.1以纳秒分辨率捕获数据包?

请参阅其他问题的答案。

当我执行tcpdump并查看cap文件时,它仍然只有微秒。

默认情况下,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,但可以通过指定标志--time-stamp-precision nano将其设置为PCAP_TSTAMP_PRECISION_NANO

最新更新