我正在使用802.11 radiotap header制作自己的解析器,它指出数据包格式是这种格式,长度为2个字节:
在wireshark中,标头的十六进制是此处的两个字节19 00
是长度字段,但是wireshark忽略尾随的00,并将其解释为legnth 25(十进制)而不是长度6400(十进制):< / p>
wireshark如何(正确地)知道正确地解释号码?
上面的链接说长度存储在little endian中,而我的系统是little endian,所以我不确定在那前面发生了什么?
答案 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(十进制)。
如果您是在低端字节序系统上运行的,则无需进行任何字节序转换。如果您要编写也要在大端系统上运行的程序,则需要注意字节顺序。