wireshark 如何解释字节顺序?

How does wireshark interpret the order of bytes?

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

在 wireshark 中,header 的十六进制是这样的,其中 2 个字节 19 00 是长度字段,但 wireshark 忽略尾随 00 并将其解释为 legnth 25(十进制)而不是长度6400(十进制):

wireshark 如何(正确地)知道正确解释数字?

上面的 link 表示长度存储在小端,而我的系统是小端,所以我不确定这方面发生了什么?

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

"Big-endian是数据网络中最常见的格式;互联网协议族协议中的字段,如IPv4、IPv6、TCP、UDP , 以 big-endian 顺序传输。因此,big-endian 字节顺序也称为 网络字节顺序 "

Wireshark 如何解释字节顺序由解析器开发人员决定。他们选择将缓冲区读取为小端或大端。每种类型都有不同的解析函数。使用的字节序通常在协议的文档中找到。

您正在查看的协议是小端协议。我不确定为什么 () accepted answer and the comments suggest otherwise. 19 00 is 25 in decimal, when using little endian. It might be a bit confusing, but the little end comes first. You can read about it here.

"little-endian"表示低字节先于高字节存储。

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

如果您在 little-endian 系统上 运行,则不需要进行任何字节序转换。如果您编写的程序还想在 big-endian 系统上运行,则需要小心 endian-ness。

我担心(原始)接受的答案,通常是正确的,对于 Radiotap header。

Big-endian 是网络字节顺序的标准,但是 Radiotap documentation 特别指出:

Data is specified in little endian byte-order, all data fields including the it_version, it_len and it_present fields in the radiotap header are to be specified in little endian byte-order.