Linux Wireless基础知识
来源:互联网 发布:游戏作弊神器软件 编辑:程序博客网 时间:2024/05/21 10:11
Linux Wireless基础知识
wireless kernel site
0. 层次结构
1. 基本概念
• cfg80211: 用于对无线设备进行配置管理。与FullMAC, mac80211和nl80211一起工作。(Kernel态)
• mac80211: 是一个driver开发者可用于为SoftMAC无线设备写驱动的框架 (Kernel态)。
• nl80211: 用于对无线设备进行配置管理,它是一个基本Netlink的用户态协议(User态)
• WNIC : Wireless Network Interface Controller, 它总是指望硬件执行协议(如IEEE802.11)描述的功能。
• MLME: 即MAC(Media Access Control ) Layer Management Entity,它管理物理层MAC状态机。
• SoftMAC: 其MLME由软件实现,mac80211为SoftMAC实现提供了一个driver API。 即:SoftMAC设备允许对硬件执行更好地控制,允许用软件实现对802.11的帧管理,包括解析和产生802.11无线帧。目前大多数802.11设备为SoftMAC,而FullMAC设备较少。
• FullMAC: 其MLME由硬件管理,当写FullMAC无线驱动时,不需要使用mac80211。
• wpa_supplicant: 是用户空间一个应用程序,主要发起MLME命令,然后处理相关结果。
2. cfg80211
cfg80211是Linux 802.11配置API。cfg80211用于代码wext(Wireless-Extensions),nl80211用于配置一个cfg80211设备,且用于kernel与userspace间的通信。wext现处理维护状态,没有新的功能被增加,只是修改bug。如果需要通过wext操作,则需要定义CONFIG_CFG80211_WEXT。
cfg80211 and nl80211: 基于消息机制,使用netlink接口wext: 基于ioctl机制
• struct ieee80211_hw: 表示硬件信息和状态
• ieee80211_alloc_hw:每个driver调用ieee80211_alloc_hw分配ieee80211_hw,且以ieee80211_ops为参数
• ieee80211_register_hw:每个driver调用ieee80211_register_hw创建wlan0和 wmaster0,并进行各种初始化。
• struct ieee80211_ops:每个driver实现它的成员函数,且它的成员函数都以struct ieee80211_hw做为第一个参数。在struct ieee80211_ops中定义了24个方法,以下7个方法必须实现:
tx,start,stop,add_interface,remove_interface,config和configure_filter。
3. mac80211
它是一个driver开发者可用于为SoftMAC无线设备写驱动的框架,mac80211为SoftMAC设备实现了cfg80211回调函数,且mac80211通过cfg80211实现了向网络子系统注册和配置。配置由cfg80211通过nl80211和wext实现。
mac80211在体系结构中的位置如下图所示:
4. socket
- 1
- Linux Wireless基础知识
- Linux Wireless基础知识
- Linux Wireless基础知识
- Linux Wireless基础知识
- Linux Wireless基础知识
- Linux Wireless基础知识
- Linux Wireless基础知识
- Linux Wireless基础知识;IEEE802.11协议基础知识
- linux Wireless基础知识(cfg80211 mac80211 nl80211)
- linux Wireless基础知识(cfg80211 mac80211 nl80211)
- linux wireless
- Useful Linux Wireless Commands
- official Linux Wireless wiki
- Wireless Tools for Linux
- Wireless Tools for Linux
- Wireless Extensions for Linux
- linux-wireless驱动移植
- linux wireless ad-hoc
- JAVA设计模式之单例模式:内部静态类
- android tv开发基础知识焦点处理
- [leetcode] 343. Integer Break 解题报告
- Shell编程—根据用户输入来输出符号正方形
- Android 实现简单的画画版一
- Linux Wireless基础知识
- 【SPOJ-RAONE】Ra-One Numbers【数位DP】【记忆化搜索】
- 利用R包ggmap进行空间可视化
- 调整Poker 在Mac、win下通用键位,解决mac的复制粘贴问题
- 推荐几个前端的教程
- 盗梦空间影评
- Memcache安装与入门
- 76、怎样给Myeclipse配置tomcat服务器
- 解决position:fixed 定位抖动的问题