wireshark:时间戳

当数据包被捕获时,每个数据包在进入的时候都打上了时间戳。这些时间戳将被保持到捕获文件中,因此它们也将用于(以后分析)。

那么这些时间戳是从哪里来的呢?在捕获过程中,wireshark从libpcap(npcap)库获取时间戳,而后者又从操作系统内核获取时间戳。如果捕获数据是从捕获文件加载的,wireshark会从这个文件里获取时间戳。

内部构件

Wireshark用来保存数据包时间戳的内部格式包括日期(从1970年1月1日起以天为单位)和一天中的时间(从午夜开始以纳秒为单位)。您可以调整Wireshark在数据包列表中显示时间戳数据的方式:
在这里插入图片描述
wireshark在读写抓包文件时,根据需要将抓包文件格式和内部格式之间的时间戳数据进行转换。

在捕获时,wireshark使用支持微秒分辨率的libpcap(npcap)捕获库。除非您使用专门的捕获硬件,否则这个分辨率应该足够了。

捕获文件格式

wireshark支持的每个捕获文件格式都支持时间戳。特定捕获文件格式所支持的时间戳精度差别很大,从1秒(0)到1纳秒(0.123456789)不等。大多数文件格式以固定的精度(比如微秒)存储时间戳,而有些文件格式甚至能够存储时间戳精度本身。

wireshark使用的libpcap捕获文件格式只支持固定的微秒分辨率(0.123456)

将数据写入无法存储实际精度的捕获文件格式将导致信息丢失。比如,如果加载纳秒分辨率的捕获文件并将捕获数据存储在alibpcap文件(微秒分辨率)中,wireshark显然必须将精度从纳秒降低到微秒。

准确度

那么,wireshark提供的时间精确度是多少呢? 其实,wireshark本身不会创建任何时间戳,只是简单的从“其他地方”获取并显示它们。因此,准确性将取决于你使用的捕获系统(操作系统、性能等)。一般来说,这是一个很难回答的问题。

注意:USB连接的网络适配器通常提供非常差的时间戳准确度。他们要走很长的路才能到达“U盘”。由于传入的数据包在内核处理时会加上时间戳,所以这个时间戳机制将变得非常不精确。因此,当你需要精确的时间安排时,不要使用UDB连接的网卡

Guess you like

Origin blog.csdn.net/zhizhengguan/article/details/121687829