Wireshark如何解释字节顺序?

时间:2019-05-07 20:08:59

标签: c wireshark libpcap packet-capture 802.11

我正在使用802.11 radiotap header制作自己的解析器,它指出数据包格式是这种格式,长度为2个字节:

enter image description here

在wireshark中,标头的十六进制是此处的两个字节19 00是长度字段,但是wireshark忽略尾随的00,并将其解释为legnth 25(十进制)而不是长度6400(十进制):< / p>

enter image description here

wireshark如何(正确地)知道正确地解释号码?

上面的链接说长度存储在little endian中,而我的系统是little endian,所以我不确定在那前面发生了什么?

4 个答案:

答案 0 :(得分:5)

Wireshark如何解释终端性取决于解剖开发人员来决定。他们选择将缓冲区读取为小端或大端。每种类型都有不同的解析功能。使用的方便性通常可以在协议的文档中找到。

您正在查看的协议是低端字节序。我不确定为什么(original)会接受答案,而评论会建议相反。 19 00使用小尾数时为十进制25。这可能有点令人困惑,但先有一点失败。您可以here来了解它。

答案 1 :(得分:2)

恐怕对于Radiotap标头来说,通常是正确的(原始)可接受的答案不正确。

Big-endian是网络字节顺序的标准,但是{​​{3}}明确指出:

  

数据以低位字节序指定,所有数据字段(包括radiotap头中的it_version,it_len和it_present字段)都应以低位字节序指定。

答案 2 :(得分:1)

来自https://en.wikipedia.org/wiki/Endianness

Big-endian 是数据网络中最常见的格式; Internet协议套件协议中的字段(例如IPv4,IPv6,TCP和UDP)以big-endian传输因此,big-endian字节顺序也称为网络字节顺序

答案 3 :(得分:0)

“ little-endian”意味着低字节存储在高字节之前。

存储的两个字节为19 00(十六进制)。低字节为19(十六进制),高字节为00(十六进制)。因此,总数为0019(十六进制)或25(十进制)。

如果您是在低端字节序系统上运行的,则无需进行任何字节序转换。如果您要编写也要在大端系统上运行的程序,则需要注意字节顺序。