【问题标题】:How does wireshark interpret the order of bytes?wireshark如何解释字节顺序?
【发布时间】:2019-05-07 20:08:59
【问题描述】:

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

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

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

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

【问题讨论】:

  • “网络字节顺序”对您来说意味着什么吗? ntohs() 等等
  • 这不仅仅是wireshark。标准网络数据包以网络字节顺序对数据进行编码。您对规范的解释是错误的。是大字节序(网络字节序),不是小字节序
  • @slebetman 链接的规范页面实际上说“radiotap 标头中的所有数据字段......都将以小端字节顺序指定”。 (也许是一个奇怪的设计选择,但你必须遵循文档。)
  • 请勿发布图片。始终以文本形式发布所有内容。

标签: c wireshark libpcap packet-capture wifi


【解决方案1】:

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

您正在查看的协议是小端。我不确定为什么 (original) 接受了答案,而 cmets 则提出了不同的建议。 19 00 是十进制的 25,当使用小端时。这可能有点令人困惑,但小结局是第一位的。你可以阅读它here

【讨论】:

    【解决方案2】:

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

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

    数据以little endian字节顺序指定,所有数据字段包括radiotap头中的it_version、it_len和it_present字段都以little endian字节顺序指定。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 它现在回到我身边,在java中做这个,忘记了网络字节顺序......什么时候应用它的规则是什么? MAC 地址的顺序已经正确了,不是吗?
      • 对不起,帮不了你,这不是我的领域,我只是知道一些基础。如果您自己无法弄清楚,请询问另一个问题。祝你好运!
      • @Crizly 一般规则是将网络字节顺序应用于所有内容。所有 IEEE 和 IETF 标准都使用网络字节顺序。少数例外是专有协议(通常由不了解网络字节顺序或故意忽略网络字节顺序以支持过早“优化”的业余爱好者开发)。因此,如果是 TCP、IP、ARP、MAC 等使用网络字节顺序。如果是 bencoding (bittorrent)、protobuf (google) 之类的,请参考各自的文档
      • ... 但是这个标头显然存储在 little-endian 中。
      • Radiotap 的文档告诉我们这个答案是不正确的,@atanas
      【解决方案4】:

      “little-endian”表示低字节在高字节之前存储。

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

      如果您在 little-endian 系统上运行它,则不需要进行任何 endian 转换。如果您正在编写的程序还想在大端系统上工作,那么您需要小心字节序。

      【讨论】:

        猜你喜欢
        • 2012-09-06
        • 2014-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-12
        相关资源
        最近更新 更多