如何在IEEE802.11框架内找到封装协议?

SuB*_*SuB 6 c linux network-programming raw-sockets 802.11

我正在开发一个IEEE802.11使用libpcapLinux内部原始的框架解析器程序C.我可以轻松地解析RadioTapIEEE802.11标题,但我找不到封装在IEEE802.11MPDU中的协议名称.遗憾的是,IEEE802.11标题中没有任何字段指示封装的协议(如标题中的protocol字段Ethernet).

有解决方案吗

SuB*_*SuB 2

数据包的数据IEEE802.11封装在LLC标头中(参见此处):

当且仅当 802.11 帧是数据帧时,它才应包含 LLC 标头。帧类型和子类型是 MAC 标头中帧控制字段的一部分;数据是帧类型值之一(其他是控制和管理)。子类型并不重要 - 所有数据帧都应包含 LLC 标头,而其他帧不应包含。

报头有两种LLC:3字节、8字节。IEEE 802.11使用第二个(参见此处)。在该协议中,LLC标头的最后两个字节相当于协议Ether Type中的字段Ethernet。所以0x800对于这个字段意味着IPv4例如。