如何使用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