hostapd源代码分析(三):管理帧的收发和处理
来源:互联网 发布:上古卷轴美女捏脸数据 编辑:程序博客网 时间:2024/06/06 03:44
这篇文章我来讲解一下hostapd是如何处理IEEE 802.11管理帧的。我们知道,hostapd主要负责管理工作站(station)认证和接入。因此,它只处理管理帧(Management Frame),并不处理数据帧。802.11的管理帧主要有信标帧(beacon)、探测请求帧(probe request)、探测回应帧(probe response)、请求认证帧(authentication request)、认证回应帧(authentication response)、请求关联帧(association request)和关联回应帧(association response)等。hostapd在初始化的阶段,会将无线网卡转换为AP模式,并且建立监视接口(Monitor Interface,一般是mon.wlan0),这个监视接口主要负责接收802.11管理帧。内核收到管理帧后,就会把它送回用户空间的hostapd来处理。
一、建立监视接口
基于nl80211驱动的hostapd在初始化的时候,会调用位于src/driver/driver_nl80211.c的nl80211_create_monitor_interface来建立监视接口。
监视接口建立以后,通过socket来接收原始帧,并把socket注册到event loop中(关于event loop,请参考《hostapd源代码分析(二):》)二、接收和处理管理帧
当原始套接字接收到802.11管理帧后,会调用handle_monitor_read来进一步处理。handle_monitor_read中,会根据Rx或者Tx标志来调用handle_frame或者handle_tx_callback函数来处理。根据我的理解和分析,一般handle_frame处理“请求”帧,比如probe request帧,authentication request帧,等等;handle_tx_callback一般用来处理“回应”帧,比如,authentication response帧,association response帧等。handle_monitor_read函数的部分代码如下。
然后,进入handle_frame后,再调用wpa_supplicant_event(位于src/ap/drv_callbacks.c)来进一步处理。对于“请求帧”,会调用hostapd_mgmt_rx(位于src/ap/drv_callbacks.c)。hostapd_mgmt_rx的代码如下:
接下来,继续调用ieee802_11_mgmt(位于src/ap/ieee80211.c),根据具体的帧来执行相应的操作。- hostapd源代码分析(三):管理帧的收发和处理
- hostapd源代码分析(三):管理帧的收发和处理
- hostapd源代码分析(二):hostapd的工作机制
- hostapd源代码分析(二):hostapd的工作机制
- hostapd源代码分析(一):网络接口和BSS的初始化
- hostapd源代码分析(一):网络接口和BSS的初始化
- hostapd源代码分析(一):网络接口和BSS的初始化
- hostapd的分析
- hostapd wpa_supplicant madwifi详细分析(一)——hostapd是干嘛的
- hostapd wpa_supplicant madwifi详细分析(一)——hostapd是干嘛的
- hostapd wpa_supplicant madwifi详细分析(一)——hostapd是干嘛的
- hostapd的radius/eap server代码分析(2)-hostapd配置
- hostapd的radius/eap server代码分析(2)-hostapd配置
- Android ActionBar的源代码分析(三)
- OT源代码的分析,OrtHello 迟早攻破你 (三)OTObjectType 和OTMatRef 和OTObject
- hostapd wpa_supplicant madwifi详细分析(三)——hostapd_global_init()函数
- hostapd wpa_supplicant madwifi详细分析(十一)——wps原理及实现 三
- Chrome源代码分析之进程和线程模型(三)
- oracle sysdate 不变
- Linux系统编程——进程替换:exec 函数族
- ACM-字符串替换
- zabbix tomcat requestCount监控
- 成员初始化表的作用 实例解析
- hostapd源代码分析(三):管理帧的收发和处理
- 【iOS】地图定位无效及点击设置隐私定位直接闪退问题
- Astyle使用方法
- JDBC 实战应用
- 02-线性结构3. Pop Sequence (25)
- VS2013禁止生成ipch和sdf文件
- 套接字基础知识
- Sirius:密歇根大学开发的免费开源版“Siri”
- 建议java程序员读的几本书