微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我无法通过调用 peekAtFront 方法从 INET 中的数据包中查看 Ipv4Header?

如何解决为什么我无法通过调用 peekAtFront 方法从 INET 中的数据包中查看 Ipv4Header?

我想从数据包中查看 Ipv4Header,但系统抛出了如下运行时错误

根据标志,不允许返回不完整的块:0 -- in module (inet::ieee80211::Dcf)

导致错误代码行是:

const auto& ipv4header = packet->peekAtFront<Ipv4Header>();

先谢谢你!

解决方法

据我所知,您正在尝试在 链接层 (802.11 Dcf) 获取 Ipv4Header。这是不可能的。没有人保证链路层数据包以 IP 标头开始。如果 MTU 小于实际数据包大小,IP 数据包可以(并且将会)被分段。第一个片段确实会以 IP 标头开头,但后续片段肯定不会。

作为一般经验法则,如果您试图在较低 OSI 级别访问较高 OSI 级别的数据结构,那么您肯定做错了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。