2014-09-02 115 views
1

我想在低时间分辨率(毫秒)下获得tcpdump而不是默认的微秒。tcpdump时间精度如何?

tcpdump的手册中

-j参数具有可接受的精度为 'host_lowprec' 和 'host_hiprec'

tcpdump -i any -n -j host_lowprec "tcp" 

我有2个问题:

  1. host_lowprec =?精度 和 host_hiprec =?精度

  2. 我可以将精度设置为毫秒或纳秒吗?如果是的话如何?

回答

4

在回答你的第一个问题:

The tcpdump man page-j选项:

-jtstamp_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_lowprechost_hiprec都没有指定确切的精度。用-j设定的精度确实是不是影响时间戳存储在捕获文件中的方式;他们将被存储为秒和微秒,除非你有一个更新版本的tcpdump,支持--time-stamp-precision选项操作系统可以提供纳秒时间戳,在这种情况下,它们将被存储为秒和纳秒,并且该文件将有一个不同的“魔术数字”,以便tcpdump/Wireshark /等。可以正确读取时间戳。

所有-j选项控件是指微妙(或纳秒)的值有多大。

在回答你的第二个问题:

有用于存储PCAP文件倍秒和毫秒的机制,而且也没有明确的选项,以请求微秒(或纳秒)值只有3显著数字。

There is请求将时间戳存储为秒和纳秒的选项。如果您正在进行实时捕获,则只有在捕获时操作系统支持传递秒和纳秒时间戳时,此功能才有效;目前这只适用于较新版本的Linux。

你在这里试图完成什么?

+0

感谢您的回答,我也阅读该手册页。我对转储精度级别有特定的业务要求。 – prashant 2014-09-17 04:55:55