Appearance
Appearance
Wireshark 中看到的数据包时间戳通常不是 Wireshark 自己生成的,而是来自底层抓包机制,例如 libpcap、Npcap、操作系统网络栈或网卡/驱动。
因此,当时间戳看起来不准确、分辨率不够或多个包时间相同时,问题通常不在 Wireshark UI 本身,而在抓包路径中的时间来源和记录方式。
| 层级 | 可能影响 |
|---|---|
| 网卡和驱动 | 是否支持硬件时间戳、何时标记到达时间 |
| 操作系统网络栈 | 数据包在哪个处理阶段被附加时间戳 |
| libpcap / Npcap | 如何从系统获取并保存时间戳 |
| 抓包文件格式 | 是否保留足够精度和元数据 |
| Wireshark 显示设置 | 如何把保存的时间戳显示出来 |
Wireshark 主要负责读取和显示这些时间戳,而不是决定它们最初如何产生。
时间戳有两个容易混淆的概念:
| 概念 | 含义 | 示例 |
|---|---|---|
| 分辨率 | 时间能细分到多小单位 | 微秒、纳秒、皮秒 |
| 准确度 | 时间是否接近真实时间 | 系统时钟是否同步、是否偏移 |
一个时间戳可以分辨率很高,但准确度很差。例如,时钟可以精确到纳秒,但如果系统时间整体偏差 1.5 小时,分析事件时间线仍然会出错。
某些操作系统或驱动为了降低中断开销,会一次处理一批数据包。这样多个数据包可能在同一次处理过程中被标记时间,导致它们拥有相同或非常接近的时间戳。
另外,数据包第一个 bit 或最后一个 bit 到达网卡,与操作系统为它附加时间戳之间也存在延迟。时间戳不是对物理到达瞬间的绝对精密测量。
Imported from https://wiki.wireshark.org/Timestamps on 2020-08-11 23:26:39 UTC