WiFi学习知识点整理

WiFi

Wi-Fi(Wireless Fidelity)是一个无线网络通信技术的品牌,由Wi-Fi联盟(Wi-Fi Alliance,WFA)拥有。WFA专门负责Wi-Fi认证与商标授权工作。严格地说,Wi-Fi是一个认证的名称,该认证用于测试无线网络设备是否符合 IEEE 802.11 系列协议的规范。通过该认证的设备将被授予一个名为Wi-Fi CERTIFIED的商标。不过,随着获得Wi-Fi认证的设备普及,人们也就习以为常得称无线网络为Wi-Fi网络了。

IEEE 802

又称为LMSC(LAN /MAN Standards Committee, 局域网/城域网标准委员会),致力于研究局域网和城域网的物理层和MAC层中定义的服务和协议,对应OSI网络参考模型的最低两层(即物理层和数据链路层)。

于工作量较大,该委员会被细分成多个工作组(Working Group),每个工作组负责解决某个特定方面问题的标准。工作组也会被赋予一个编号(位于802编号的后面,中间用点号隔开)。

IEEE 802.11

802.11代表802项目的第11个工作组 ,专门负责制订无线局域网(Wireless LAN)的介质访问控制协议(Medium Access Control,MAC)及物理层(Physical Layer,PHY)技术规范。

和工作组划分类似,工作组内部还会细分为多个任务组(Task Group,TG),任务是修改、更新标准的某个特定方面。TG的编号为英文字母,如a、b、c等。

典型的有:
IEEE 802.11b 无线局域网的带宽最高可达11Mbps,可根据实际情况采用5.5Mbps、2 Mbps和1 Mbps带宽,实际的工作速度在5Mb/s左右,与普通的10Base-T规格有线局域网几乎是处于同一水平。作为公司内部的设施,可以基本满足使用要求。IEEE 802.11b使用的是开放的 2.4GHz 频段,不需要申请就可使用。既可作为对有线网络的补充,也可独立组网,从而使网络用户摆脱网线的束缚,实现真正意义上的移动应用。

IEEE 802.11四种主要物理组件
  1. 工作站(Station)
    构建网络的主要目的是为了在工作站间传送数据。所谓工作站,是指配备无线网络接口的计算设备(也就是配有无线网卡的计算设备)。
  2. 接入点(Access Point)
    802.11网络所使用的帧必须经过转换,方能被传递至其他不同类型的网络。具备无线至有线的桥接功能的设备称为接入点,接入点的功能不仅于此,但桥接最为重要。
  3. 无线媒介(Wireless Medium)
    802.11标准以无线媒介在工作站之间传递帧。其所定义的物理层不只是一种,802.11最初标准化了两种射频物理层以及一种红外线物理层。
  4. 分布式系统(Distribution System)
    当几个接入点串联以覆盖较大区域时,彼此之间必须相互通信以掌握移动式工作站的行踪。分布式系统属于802.11的逻辑组件,负责将帧转送至目的地。
WiFi芯片

传统的在手机、平板等产品中常见的那种WiFi芯片主要来自国外的博通、高通、Marvell和我国台湾MTK等厂商。手机上的WiFi芯片只负责连接和传输信号,对RF信号的处理和TCP/IP 传输协议的解析则交给性能强大的AP端。

》》海华科技(AzureWave)
》》总部:台湾
》》主营:提供Wi-Fi、Bluetooth、3G、GPS、DTV、Digital Camera 等模块产品的创新研发,可广泛应用于消费性电子产品、嵌入式系统、手持式装置、行动连网产品、家电产品及工业用设备等领域。
》》【WiFi模块主控芯片】:Marvell、博通、高通Atheros、MTK雷凌

Android WiFi系统架构

Android平台中WIFI系统从上到下主要包括java框架类、Android适配器库、wpa_supplicant守护进程、驱动程序和协议,结构如下图:
在这里插入图片描述

Android WiFi核心进程交互

在这里插入图片描述

Android WIfi 核心代码目录

在这里插入图片描述

WPA简介

WPA全名为Wi-Fi Protected Access,中文含义为“WiFi网络安全存取”,有WPA和WPA2两个标准,是一种保护无线设备网络(Wi-Fi)安全的系统,它是应研究者在前一代的系统有线等效加密(WEP)中找到的几个严重的弱点而产生的。WPA是一种基于标准的可互操作的WLAN安全性增强解决方案,可大大增强现有以及未来无线局域网络的数据保护和访问控制水平。

wpa_supplicant简介
  • wpa_supplicant是一个开源项目,已经被移植到Linux,Windows以及很多嵌入式系统上。它是WPA的应用层认证客户端,负责完成认证相关的登录、加密等工作。

  • wpa_supplicant是一个独立运行的守护进程,其核心是一个消息循环,在消息循环中处理WPA状态机、控制命令、驱动事件、配置信息等。

  • 经过编译后 的 wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant 和 wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。

  • Android使用一个修改版wpa_supplicant作为daemon来控制WIFI,它是一个安全中间件,为各种无线网卡提供统一的安全机制,wpa_supplicant是通过socket与hardware/libhardware_legacy/wifi/wifi.c通信

wpa_supplicant软件内容

源码目录:android/external/wpa_supplicant_8
目录下还包含四个子文件夹:

  • hostapd :hostapd能够使得无线网卡切换为master模式,模拟AP(通常可以认为是路由器)功能,也就是我们说的软AP(Soft AP)。Hostapd的功能就是作为AP的认证服务器,负责控制管理stations(通常可以认为带无线网卡的PC)的接入和认证。
  • hs20 :Hotspot 2.0(HS 2.0)由WiFi联盟和无线宽带联盟开发,旨在实现移动网络和WiFi网络之间的无缝流量切换,它不需要额外的用户注册和验证。其实Hotspot 2.0只是802.11u标准中的一个子项功能——即利用802.11u提供无缝的自动WiFi身份识别和切换,这一个新兴的协议将可帮用户省去了连接到WiFi网络和服务的麻烦和乏味的过程。Hotspot 2.0的出现,意味着我们将可以自动由3G、4G切换到WiFi网络,用户将不用手动发现热点、输入身份验证来获得WiFi。而且从一个网络切换到另一个网络的时候都不会间断, 用户甚至感觉不到。这种无缝认证和交接以及空中传送的安全性,将使得WiFi有如蜂窝网络那般易于使用,并提供一致的用户体验与新增加的WiFi网络速度上的优势,你根本感受不到自己某刻正在连接的是WiFi还是3G网络。
  • wpa_supplicant:是Android用户空间中无线网络部分的核心模块,所有Framework层中和
    Wi-Fi相关的操作最终都将借由wpa_supplicant来完成。
  • src :包含了一些通用的数据结构和处理方法.其他三个目录均有可能使用到。
wpa_supplicant架构

在这里插入图片描述

wpa_supplicant 启动参数
usage:
  wpa_supplicant [-BddhKLqqtvW] [-P<pid file>] [-g<global ctrl>] \
        [-G<group>] \
        -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \
        [-b<br_ifname>] [-e<entropy file>] \
        [-o<override driver>] [-O<override ctrl>] \
        [-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
        [-m<P2P Device config file>] \
        [-p<driver_param>] [-b<br_ifname>] [-I<config file>] ...]

drivers:
  nl80211 = Linux nl80211/cfg80211
options:
  -b = optional bridge interface name
  -B = run daemon in the background
  -c = Configuration file
  -C = ctrl_interface parameter (only used if -c is not)
  -d = increase debugging verbosity (-dd even more)
  -D = driver name (can be multiple drivers: nl80211,wext)
  -e = entropy file
  -g = global ctrl_interface
  -G = global ctrl_interface group
  -h = show this help text
  -i = interface name
  -I = additional configuration file
  -K = include keys (passwords, etc.) in debug output
  -L = show license (BSD)
  -m = Configuration file for the P2P Device interface
  -N = start describing new interface
  -o = override driver parameter for new interfaces
  -O = override ctrl_interface parameter for new interfaces
  -p = driver parameters
  -P = PID file
  -q = decrease debugging verbosity (-qq even less)
  -t = include timestamp in debug messages
  -v = show version
  -W = wait for a control interface monitor before starting
example:
  wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf
wpa_supplicant 启动流程

在这里插入图片描述

wpa_supplicant 初始化
wpa_cli
  • 连接上某个网卡的wpa_supplicant服务
  • 搜索网络并列出结果
  • 添加一个网络
  • 配置一个网络,并保存配置
  • 查看保存的网络并切换到一个已保存的网络
  • 断开该网卡的网络
    参考:
    wpa_cli使用方法
WIFI适配层

里面定义很多字符串变量和适配层的接口实现,是对wpa_supplicant程序通信的接口封装,用来完成上层和wpa_supplicant的通信, 头文件在libhardware/include/hardware下,这里的函数用来向JNI的本地实现提供调用接口。
这里的函数,我把它们分为四类函数:

  • 命令相关的(控制)函数,就是在JNI层android_XXX_Command()函数所调用 的Wifi_Command()函数,调用流程如下:
    android_XXX_command()=>docommand()=>wifi_command()=>wifi_send_command()=>wpa_ctrl_require()。
  • 监听函数,即Wifi_wait_for_event()函数,调用流程如下:android_net_wifi_Waitforevent()=>wifi_wait_for_event()=>wpa_ctrl_recv()。
  • WPA_SUPPLICANT的启动,连接,关闭函数
  • 驱动的加载和卸载函数
Android启动WiFi流程
Settings app WifiService wpa_supplicant onStart() mWifiEnabler = createWifiEnabler() WifiEnabler中 onSwithToggled(boolean isCkecked) 调用 mWifiManager.setWifiEnabled(isChecked). onSwithToggled WifiManager通过AIDL调用setWifiEnabled mWifiController.sendMessage(CMD_WIFI_TOGGLED) ApStaDisabledState>StaEnabledState StaEnabledState:mWifiStateMachine.setSupplicantRunning(true) startHalIfNecessary(true)) IClientInterface iClientInterface = mWificondControl.setupDriverForClientMode() mWifiNative.setupForClientMode() mWifiNative.enableSupplicant() start run Settings app WifiService wpa_supplicant
参考资料:

<< 深入理解Android:WiFi模块+NFC和GPS卷>>
wifi技术从了解到熟悉
WiFi芯片厂商
Hostapd简介
Hotspot 2.0是什么?
WIFI系统架构

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值