linux Wireless基础知识(cfg80211 mac80211 nl80211)

Wesley13
• 阅读 946

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在体系结构中的位置如下图所示:

linux Wireless基础知识(cfg80211 mac80211 nl80211)

linux Wireless基础知识(cfg80211 mac80211 nl80211)

4. socket

linux Wireless基础知识(cfg80211 mac80211 nl80211)

linux Wireless基础知识(cfg80211 mac80211 nl80211)

http://wireless.kernel.org/en/developers/Documentation/

点赞
收藏
评论区
推荐文章
无线AP以及其与无线路由器的区别
它是传统有线网络中的集线器,也是组建小型无线局域网时最常用的设备。AP(https://www.ruijie.com.cn/cp/wx/)相当于连接有线网络和无线网络的桥梁,主要作用是将所有无线网络客户端连接在一起,然后将无线网络连接到以太网。大
Stella981 Stella981
3年前
Linux下的strace命令介绍
简介strace常用来跟踪进程执行时的系统调用和所接收的信号。在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。输出参数含义
Stella981 Stella981
3年前
Linux系统与服务构建运维
Linux系统与服务构建运维1x初级,项目三FTP服务的使用配置YUM源将CD设备进行连接!(https://img2020.cnblogs.com/blog/1893874/202005/189387420200508194528832718337495.png)将CD设备挂载
Wesley13 Wesley13
3年前
Android的Framework分析
大家都知道android是基于linux的kernel上的。android可以运行在intel,高通,nvidia等硬件平台。但是涉及到一些GPU,显卡和一些设备的驱动问题,因为这些驱动都不是开源的,google位了兼容这些设备厂商的驱动源码,提出了硬件抽象层HAL的概念。HAL层对上为framework和native开发提供统一的API接口,为下层驱动的
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Linux 无线网络断开的解决方案
Linux系统用着用着突然发现电脑上的WiFi图标不见了,电脑无法连接到无线网。这可急坏了,找遍设置也没找到哪里可以重新打开无线网,感觉就像是凭空消失了一样。折腾了一天,终于把无线网络恢复正常了。这篇文章就来梳理一下在Linux上修复无线网络的一些简单常用的操作。首先,我们可以使用rfkill命令查看无线设备的状态。$
公孙晃 公孙晃
1年前
Airfoil for mac,无限音乐同步软件
AIrfoil是一款Mac平台上的音频传输工具,它可以将Mac上的音频传输到其他设备上,如无线音箱、AppleTV、iOS设备等...
铁扇公主 铁扇公主
1年前
简单好用的wifi管理工具 WiFi Signal 激活最新版
WiFiSignal是一款用于测量和监测WiFi信号强度的软件工具。该软件可用于Windows、Mac和移动设备上,它提供了实时的WiFi信号强度图表和详细的信号参数,帮助用户优化无线网络连接和确定最佳的WiFi覆盖范围。以下是WiFiSignal可能提供