linux - ip_len 设置为非常大的值

标签 linux networking ip

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

最佳答案

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

关于linux - ip_len 设置为非常大的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1316570/

相关文章:

php - 我基于 php 的客户端 IP 跟踪器并不总是触发,为什么?

regex - 如何在找到与 sed 的匹配项后仅追加一行?

Linux 错误 - setterm : $TERM is not defined./etc/cron.hourly/mcelog.cron:

android - 在您的 BIOS 安全设置中启用 VT-x,确保您的 Linux 发行版具有工作的 KVM 模块

ruby - EventMachine - 端口正在使用中

apache - 无法通过 UBUNTU 12.10 上的本地 IP 地址访问 Web 服务器

sql - 如何将 IP 地址从 Google Analytics 过滤到 Bigquery

.net - centos 上最新的单声道

networking - Kubernetes pod 无法访问自己的服务

c# - WinForms 服务器和客户端之间的通信