我希望以低时间分辨率(毫秒)获得tcpdump,而不是默认的微秒。
在tcpdump手册中我得到了-j
参数,其可接受的精度为' host_lowprec '和' host_hiprec '
tcpdump -i any -n -j host_lowprec "tcp"
我有两个问题:
host_lowprec =?精确 和 host_hiprec =?精度
我可以将精度设置为毫秒或纳秒吗?如果是的话怎么样?
答案 0 :(得分:4)
回答你的第一个问题:
The tcpdump man page说-j
选项:
-j
tstamp_type
--time-stamp-type=
tstamp_type
将捕获的时间戳类型设置为 tstamp_type 。用于时间戳类型的名称在pcap-tstamp(7)中给出;并非所有列出的类型都必须对任何给定的接口有效。
和pcap-tstamp(7)手册页说:
...此处列出了时间戳类型;第一个值是代码中使用的
#define
,第二个值是pcap_tstamp_type_val_to_name()
返回的值,pcap_tstamp_type_name_to_val()
接受。
PCAP_TSTAMP_HOST
-host
由捕获正在进行捕获的主机提供的时间戳。此时间戳的精度未指定;它可能会或可能不会与主机操作系统的时钟同步。
PCAP_TSTAMP_HOST_LOWPREC
-host_lowprec
由捕获正在进行捕获的主机提供的时间戳。这是一个低精度时间戳,与主机操作系统的时钟同步。
PCAP_TSTAMP_HOST_HIPREC
-host_hiprec
由捕获正在进行捕获的主机提供的时间戳。这是一个高精度的时间戳;它可能与主机操作系统的时钟同步也可能不同步。获取可能比PCAP_TSTAMP_HOST_LOWPREC
更昂贵。
PCAP_TSTAMP_ADAPTER
-adapter
由捕获正在进行捕获的网络适配器提供的时间戳。这是一个高精度时间戳,与主机操作系统的时钟同步。
PCAP_TSTAMP_ADAPTER_UNSYNCED
-adapter_unsynced
由捕获正在进行捕获的网络适配器提供的时间戳。这是一个高精度的时间戳;它与主机操作系统的时钟不同步。
host_lowprec
和host_hiprec
都没有指定精确的精确度。使用-j
设置的精度 NOT 会影响时间戳存储在捕获文件中的方式;它们将以秒和微秒的形式存储,除非您有更新版本的tcpdump支持--time-stamp-precision
选项和操作系统可以提供纳秒时间戳,在这种情况下,它们将存储为秒和纳秒,文件将有一个不同的"幻数"这样tcpdump / Wireshark /等。可以正确阅读时间戳。
所有-j
选项控件都是微秒(或纳秒)值的重要值。
回答你的第二个问题:
没有机制可以将pcap文件中的时间存储为秒和毫秒,并且没有明确的选项来请求微秒(或纳秒)值只有3个有效数字。
是一个选项,用于请求将时间戳存储为秒和纳秒。如果您正在进行实时捕获,则仅当操作系统支持在捕获时提供秒和纳秒时间戳时才会起作用;目前这只适用于较新版本的Linux。
你想在这里完成什么?