繁体   English   中英

如何找出IEEE802.11框架内的封装协议?

[英]How to find out encapsulated protocol inside IEEE802.11 Frame?

我正在使用带有原始C Linux内部的libpcap开发IEEE802.11帧解析器程序。 我可以轻松解析RadioTapIEEE802.11标头,但找不到封装在IEEE802.11 MPDU中的协议名称。 不幸的是, IEEE802.11标头中没有任何字段指示封装的协议(例如Ethernet标头中的protocol字段)。

有什么办法吗?

对于封装数据的802.11帧,标头类型/子类型将在0x200x2F之间(尽管帧通常是0x20 (数据)或0x28 (QoS数据))。 将有一个5字节的SNAP标头,其中包含有效负载的类型(如本答案中所述 )。 如果OID(SNAP标头的前三个字节)为0x000000 ,则接下来的两个字节是以太网类型。

对于EAPoL( ),以太网类型将为0x888e 这是您要检查以了解封装协议的字段(IP 0x0806 0x0800 ,ARP 0x0806等)。

这是有关以太网类型以及如何使用它们过滤某些协议的出色的思科文档: http : //www.cisco.com/c/en/us/td/docs/ios/12_2/ibm/vol1/command/参考/fibm_r1/br1fethc.pdf

这是有关无线嗅探器跟踪的出色思科文档,其中包括对802.11类型/子类型字段的描述: https : //supportforums.cisco.com/document/52391/80211-frames-starter-guide-learn-wireless-sniffer-痕迹

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

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

LLC头有两种:3个字节,8个字节。 IEEE 802.11使用第二种(请参阅此处 )。 在那一个中​​, LLC标头的最后两个字节等效于Ethernet协议中的Ether Type字段。 因此,此字段的0x800例如表示IPv4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM