使用Radiotap报头MAC时间戳的两个数据包之间的时间差

时间:2014-01-29 09:52:06

标签: libpcap packet-capture packet-sniffers 802.11

我正在尝试解析在监控模式下捕获的802.11数据包的radiotap标头的MAC时间戳字段。

radiotap报头的TSFT字段是64位值,以微秒为单位。原始十六进制值突出显示如下。

enter image description here

MAC时间戳值由Wireshark以十进制表示

enter image description here

此十进制值是2b1c20cb00000000的十进制值。

我要做的是使用radiotap标头MAC时间戳字段中的十六进制值来获取两帧之间的时差。

enter image description here

例如:

帧#2的小数值为3106049021945315329(2b1ae72100000001)和

第3帧有3106066889009266689(2b1af76100000001)。

减去该值得到1AC47FFFFF5C1。假设这是以微秒为单位,则该值等于470900214.330817秒。

通过使用radiotap标头的MAC时间戳字段中的值,使用此步骤获得0.000071秒的时差的过程是什么

谢谢

1 个答案:

答案 0 :(得分:1)

radiotap标头中的“MAC时间戳”字段为the value in microseconds of the MAC's 64-bit 802.11 Time Synchronization Function timer when the first bit of the MPDU arrived at the MAC。 这是通过您拥有的特定WiFi卡的设备驱动程序直接从MAC获取的,可能是也可能不准确或不正确,具体取决于驱动程序的实现。

“时间”列显示自收到第一帧以来经过的时间。这是由libpcap使用主机上的系统时钟计算的,是libpcap首次看到帧的时间。

这两个时间值都是使用不同的时钟计算的,因此不能直接比较。如果MAC时间戳字段是正确和准确的(你看起来不是 - 可能是驱动程序问题)那么它应该用作参考时间,并且libpcap时间应该只用作粗略的指南。