【问题标题】:ip_len set to very large valuesip_len 设置为非常大的值
【发布时间】:2010-11-21 22:35:15
【问题描述】:

我有一个程序将网络接口设置为混杂模式,创建一个接收所有传入数据包的套接字,然后进入循环将数据包读入缓冲区,设置指向 IP 标头位置的指针,然后然后打印其 ip_len 字段的值。问题是打印的值高得不可思议。 read() 返回类似 84 的值,程序将打印 21504。我在 Wireshark 中检查了数据包大小,每个数据包的总大小与 read() 的返回值相差不远。我怎样才能让 ip_len 给我理智的数据?

【问题讨论】:

    标签: linux networking ip


    【解决方案1】:

    这听起来像是字节顺序问题。 21504 是 0x5400,字节交换后是 0x0054 = 84。确保使用 ntohs(ip_len) 读取值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多