Android 源码分析 - 无线 - Kernel层

本文深入介绍了Wi-Fi的基础知识,包括无线电频谱管制机构、Wi-Fi联盟的角色、IEEE802.11标准、OSI模型、网络构建、服务类型以及MAC服务。讲解了Wi-Fi组件如WM、STA、AP,以及网络构建中的BSS、ESS等。还涉及了身份验证机制如WEP、WPA、WPA2等,以及Linux无线扩展、wpa_supplicant的软件架构和命令。文章最后提到了Android中libnl_2库和wpa_supplicant的初始化流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Wi-Fi基础

        无线电频谱管制机构

缩写

全称

说明

FCC

Federal Communication Commission

美国联邦通信委员会

ERO

European Radio-Communication Office

欧洲无线电通信局

MIIT

Ministry of Industry and Information Technology

中国工信部下属的无线电管理局

ITU

International Telecommunication Union

国际电信联盟

ISM(Industrial Scientific Medical):国际共用频段。

WFA(Wireless Fidelity Alliance):Wi-Fi联盟,负责认证商标授权。

IEEE 802.11,Insitute of Electrical and Electronics Engineers,美国电气和电子工程师协会。802局域网标准,11无线局域网。

OSI(Open System Interconnection Reference Model)计算机网络体系结构七层模型,数据链路层(Data Link Layer)分为LLC,MAC子层。

LLC(Logic Link Control Sub Layer),逻辑链路控制子层。

MAC(Media Access Control Layer)媒介访问控制子层。

CSMA/CD(Carrier Sense Multiple Access/Collision Detect),载波监听多路访问/冲突检测机制。

CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance), 载波监听多路访问/冲突避免机制。

RTS-CTS握手。RTS(Request To Send),CTS(Clear To Send)

        物理组件:

缩写

全称

说明

WM

Wireless Medium,无线媒介

物理层,射频、红外

STA

Station,工作站

带有无线无卡的设备

AP

Access Point,接入点

提供DS服务

DS

Distribution Service

        网络构建:

缩写

全称

说明

BSS

Basic Service Set

基础服务集,无线网基本构建组件。

IBSS

Independent(独立型) BSS

不需要AP,自组网络,对等网络

Infrastructure BSS

基础结构型BSS

STA间交换需要通过AP

ESS

Extended Service Set

控制服务集,多个BSS组成

BSSID

BSS Identification

AP的MAC地址,IBSS的MAC随机

SSID

Service Set Identification

网络名

        服务:

缩写

全称

说明

SS

Station Service

STA应该具有的功能

DSS

Distribution System Service

DS应该具有的功能

DS

Distribution Service

分布式服务,跨BSS传递数据

IS

Intergration Service

整合服务,Portal发送数据到LAN

Authentication

身份验证

Deauthentication

解除身份验证

TPC

Transmit Power Control

传输功率控制

DFS

Dynamic Frequency Selection

动态频率选择

RRP

Resource Reservation Protocol

预留资源

TSF

Timing Synchronization Function

时间同步

Radio Measurement

无线电测量,发现AP

        MAC服务:

        认证:

缩写

全称

说明

WEP

Wired Equivalent Privacy

有线等效加密Key Stream,伪随机数发生器,XOR

Open System Authentication

开放系统身份验证

Shared Key Authentication

共享密钥身份认证

WPA

Wi-Fi Protected Access

WFA提出中间方案

TKIP

Temporal Key Intergrity Protocol

临时密钥完整性协议

CCMP

Counter Mode with CBC-MAC Protocol

计数器模块及密码块链消息认证码协议,基于AES

RSN

Robust Security Network

强健安全网络,WFA称为WPA2

EAP

Extensible Authentication Protocol

RFC 3748

Authenticator

验证着,AP

Supplicant

验证申请者,STA

BAS

Backend Authentication Server

后台认证服务器

AAA

Authentication、Authorization and Accounting

认证,授权和计费,RADIUS服务器,是BAS的一种具体实现

RSNA

Robust Security Network Association

强健安全网络联合

PMT

Pairwise Master Key

成对主密钥

PKT

Pairwise Transient Key

成对临时密钥        

wex(wext)

        Linux Wireless Extension,使用ioctl函数控制无线网卡驱动。

        iwreq,iwreq_data

netlink

libnl

        源代码位于:external/libnl。

        下面三个库,其核心都基于libnl。

说明

libnl-route

用于和Kernel中的Routing子系统交互

libnl-nf

用于和Kernel中的Netfilter子系统交互

libnl-genl

用于和Kernel中的Generic Netlink模块交互

libnl_2

        Android精简了libnl,得到libnl_2,源代码位于:system/core/libnl_2。

wpa_supplicant

        源代码位于:external/wpa_supplicant_8。

        cfg80211用于驱动开放,nl80211 API供用户空间程序调用。使用netlink机制。

        wpa_supplicant、wpa_cli、libwpa_client。

        hostapd、hostapd_cli。

        软件架构:

模块

说明

event loop

事件驱动,主线程,没有多线程

driver wrapper

封装驱动接口,如wext

driver events

驱动返回的信息处理

EAP状态机

EAPOL状态机

EAP methods

EAP加密、校验方法

l2_packet

收发EAPOL和EAP信息

configuration

配置参数处理

ctrl i/f

与客户端通信接口

        客户端命令:

命令

说明

PING

心跳检测,返回PONG

MIB

获取MIB信息

STATUS

获取工作状态

ADD_NETWORK

添加一个新的无线网络,返回网络ID,后续命令使用ID

SET_NETWORK

设置无线网络信息

ENABLE_NETWORK

加入该无线网络

CTRL-REQ

向客户端发送命令

CTRL-RSP

客户端应答

CTRL-EVENT

向客户端通知事件

        控制API(wpa_ctrl.h):

命令

说明

wpa_ctrl_open

打开wpa_ctrl 控制对象,建立UNIX套接字连接

wpa_ctrl_close

关闭wpa_ctrl控制对象

wpa_ctrl_request

发送命令并等待应答,同时可以接受事件

wpa_ctrl_attach

打开事件监听功能

wpa_ctrl_recv

接收事件

        初始化流程:

  1. wap_supplicant_init()
    1. wap_msg_register_ifname_cb()【设置一下回调方法】
    2. eap_register_methods()
      1. eap_peer_md5_register()
    3. epoll_init()
    4. random_init()
    5. wpa_supplicant_global_ctrl_iface_init()
    6. wpa_drivers【分配驱动私有信息空间drv_priv,void*】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值