momo zone

调核人的blog

IEEE802.11 中的prism和radiotap

monitor模式下ieee802.11在收到桢之后还要在外边包一层称为prism或radiotap的头部,里面包含一些RF射频信息,诸如频道,频率,速率等,起初我以为这个是网卡驱动或网卡firmware来完成的,对于内核透明的。

radiotap

其实不是那么回事,这个头部是在ieee802.11成桢后(RX)流经内核mac80211层时加上去的,代码在net/mac80211里。所以这是一个纯软件机制,这个头部对于底层无意义,像iwconfig , iwlist scanning 这些工具显示出来的数据并不依赖这个头部的信息。那么它的用途是什么?答案是供给像wireshark这样的协议分析工具用的,这样这些工具就不用实时从硬件获得RF射频信息,直接解析协议报文即可。

另外在monitor模式下发送(TX)流经ieee802.11层时需要脱掉radiotap头部,也就是要求编写raw套接字程序通过monitor状态的网卡发送ieee802.11桢时,需要手工把radiotap头部加上,否则内核会认为是异常桢而丢弃。

注意现在radiotap头已经完全取代了prism,两者功能一样,但前者是后者的扩展。该报头属于ieee802.11的规范内容,详细需参见http://www.radiotap.org/以及内核代码

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: