Wireshark捕获报文的时间戳是什么时候?



Wireshark什么时候对数据包进行时间戳?在完全接收帧之后?或者已经在接收帧的第一个字节了?我读了以下关于Wireshark时间戳的描述,但这段文字只是说:"当数据包被捕获时,每个数据包在进入时都有时间戳"。

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

发送方----> Wireshark ---->接收方

发送方在x时刻开始发送帧,接收方在y时刻(y =发送开始x +帧长/链路速度)完全接收到帧。捕获的帧是否会出现在Wireshark中,时间戳接近x还是y?

最诚挚的问候,乔纳斯

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

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

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

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

相关内容

最新更新