Wireshark什么时候打印时间戳?

时间:2013-05-21 17:33:11

标签: wireshark timestamp

Wireshark什么时候对数据包加盖时间戳?完全接收帧后?或者已经收到帧的第一个字节了?我阅读了关于Wireshark timestamps的以下描述,但本文仅说明:“在捕获数据包时,每个数据包都会加盖时间戳”。

考虑以下场景和准确的操作系统时间:

发件人----> Wireshark ---->接收器

发件人在时间x开始传输帧。在时间y(y =传输开始x +帧长度/链路速度),在接收器处完全接收帧。捕获的帧是否会出现在Wireshark中,时间戳接近于x还是y?

祝你好运, 纳斯

1 个答案:

答案 0 :(得分:5)

好吧,Wireshark没有给数据包打上时间戳;它依赖于libpcap来完成它们,并且在几乎所有操作系统上,libpcap也没有给它们自己加时间戳,也就是libpcap使用的操作系统的数据包捕获机制。主要的例外是Windows,其中WinPcap必须在内核中提供自己的捕获机制,在NDIS之上,但该机制的行为与大多数UN * Xes内部的机制非常相似,并且会产生类似的行为。 (另一个例外是HP-UX,其中OS的捕获机制根本没有对数据包进行时间戳,因此libpcap这样做;这给出了与其他操作系统有些类似的答案,但在数据包之前可能有更长的延迟有时间戳。)

如果在发送方上运行Wireshark(或任何其他数据包嗅探器!),则数据包将在操作系统中“包裹”并传递给捕获机制;在发件人开始传输数据包之前可以应用时间戳,但时间戳将更接近于x而不是y。

如果在接收器上运行Wireshark(或任何其他数据包嗅探器),则在收到整个数据包后的某个时间应用时间戳;这可能涉及由于数据包排队等待导致的延迟,中断被“批处理”,在数据包被加盖时间之前完成了一定量的网络堆栈处理等。时间戳将更接近于y而不是x。

如果在某个第三台机器上运行Wireshark(或任何其他数据包嗅探器),被动地嗅探网络,时间戳可能会更接近于y而不是x,但是由于接收器和嗅探器的存在而存在差异可能在不同时间看到数据包的单独机器,具有不同的接收代码路径等。