Wi-Fi 总结

术语

术语 英文 中文
WLAN Wireless Local Area Networks 无线局域网络
Wi-Fi 无意义(Hi-Fi 双关) 无线网络
WPA Wi-Fi Protected Access Wi-Fi 网络安全存取
Wi-Fi Alliance Wi-Fi Alliance Wi-Fi 联盟
MAC media access control -
WPS(AOSS/QSS) Wi-Fi Protected Setup Wi-Fi 保护设置
PBC Push Button Configuration 按钮配置
PIN Personal Information Number PIN 码
UFD USB Flash Device 存储在USB接口的闪存设备上的信息
NFC Near Field Communication 近距离无线通信(通过刷卡)
AP Access Point (无线)接入点 / 基站
STA Station 站点 / 工作站
Wi-Fi P2P Wi-Fi peer-to-peer 点对点()
Wi-Fi Direct Wi-Fi 直连
SSID Service Set Identifier 服务集标识(无线网络名字)
[wpa_supplicant wpa_supplicant 后端 wpa 请求者(ap, p2p)
wpa_cli wpa_supplicant 前端 wpa 客户端面
Beacon Beacon 信标帧
WEP Wired Equivalent Privacy 有线等效保密

WEP:

Wired Equivalency Protection,一种Wi-Fi连接的安全标准,类似的安全标准还包括下面的WPA,WPA2。它可以使用64/128bit的ASCII/HEX(0-9,A-F)的Password,它的密钥是由Password和一个IV(初始化向量)组成,加密算法是stream cipher RC4,并使用 CRC-32校验和确保完整性。加密解密过程如下:AP发送的数据包(包括IV和加密过的数据)–>无线客户端收到此数据包–>提取其中的IV,用于和本地的Password形成密钥–>解密数据包。它有两种鉴权方式:Open System, Shared Key.

Open System:

这种鉴权方式不需要客户端提供任何credentials,因此,实际上任何客户端都可以尝试与AP进行鉴权和连接,这其中并不存在实际意义上的鉴权。鉴权连接结束,AP用WEP密钥加密数据,这时,客户端就需要正确的Password形成密钥来解密

Shared Key:

通过四次握手并使用WEP加密来完成鉴权。详细区别请参阅:opensystem_vs_sharedkey.txt

WPA:

Wi-Fi Protected Access,实现了802.11i的大部分标准,它和下面的WPA2有两种鉴权方式,一是使用802.1x,一种是使用Pre-Shared Key

WPA2:

Wi-Fi Protected Access,完全实现802.11i标准

WPA个人版/WPA-PSK:

使用Pre-Shared Key鉴权方式的WPA,设计给负担不起 802.1X 验证服务器的成本和复杂度的家庭和小型公司网络使用。同WPA2个人版/WPA2-PSK

WPA企业版:

使用802.1x鉴权方式给WPA。同WPA2企业版

802.1X:

802.1协议族中的一部分,它是一种基于端口的网络接入控制机制,它给希望接入LAN的设备提供了一种鉴权机制,它是基于EAP的.扩展阅读:http://en.wikipedia.org/wiki/802.1x

EAP:

Extensible Authentication Protocol,一种普遍使用的认证机制,它是一个认证框架,并不是一种特殊的认证机制。EAP提供一些公共的功能,并且允许协商所希望的认证机制。这些机制被叫做EAP方法,现在大约有40种不同的方法。当EAP被基于802.1x的网络接入设备(诸如802.11a/b/g ,无线接入点)调用时,现代的EAP方法可以提供一个安全认证机制,并且在用户和网络接入服务器之间协商一个安全的PMK(Pairwise Master Key)。该PMK可以用于使用TKIP和AES加密的无线会话。在Pre-Shared Key验证方式中,PMK=PSK。

PMKSA:

PMK Security Association,参考:pmksa.txt

TKIP:

Temporal Key Integrity Protocol,数据传输加密算法(类似于WEP加密的 RC4 算法)

AES:

Advanced Encryption Standard,数据传输加密算法(类似于WEP加密的 RC4 算法)

CCMP:
Counter Mode with Cipher Block Chaining Message Authentication Code Protocol,数据完整性编码校验算法(类似于WEP中 CRC32 算法)

MIC:

数据完整性编码校验算法(类似于WEP中 CRC32 算法)

总结Wifi连接过程大致如下:
客户端与AP的鉴权,与AP建立连接,若使用加密,AP发送并加密数据包,无线客户端接收并解密数据包。密码学中有两个概念:加密算法和密钥,通过这两个东西来解加密过的数据包。 密钥,对于WEP,WPA/WPA2个人版来说,总是由一个Pre-Shared Key,加上其他元素,经过一系列过程产生而来,这个Pre-shared Key就是我们平时接入Wi-Fi时需要输入的密码。对于WPA/WPA2企业版,这个Pre-Shared Key叫做PMK,形成密钥的过程原理相似。 目前,EAP方法基本上是与802.1x一起使用

image.png

目前Wi-Fi的加密模式主要有:WEP,WPA,WPA2-PSK。

2.4G 与 5G

随着无线设备数的增加. 2.4GWi-Fi 已满足不了人们的日常需求, 5GWi-Fi应运而生, 先看下标准定义

IEEE802.11协议对2.4GHz频段的规定:

频率范围:2.4GHz~2.4835GHz;14个信道,信道带宽20M(相邻多个信道频率重叠)。下面你看到的频率范围包含22M,是因为有2M被用作强制隔离频带,不参与数据传输。

在中国,2.4G这条高速公路上一共有13条车道(信道)。

虽然一共有13条车道,但由于资源有限。所以,不同车道之间,便会存在共用“路面”的问题。13条车道中,最多只有3条车道可以不相互影响,例如1、6、11车道互不相互干扰。

IEEE802.11协议对5GHz频段的规定:

频率范围:5.150-5.250GHz、5.250-5.350GHz、5.470-5.725GHz、5.745-5.825GHz;共201个信道,信道带宽40M/80M/160M(可选择,相邻多个信道频率重叠)。

虽然中国5G车道只有 4 个,但每个相邻的车道间距有20MHz(2.4G车道间距是5MHz),在20MHz时,车道之间不会有干扰。如果为了提升速率,把两个20MHz的车道合在一起,就形成了40MHz。以此类推,中国5G频段最多可以提供80MHz的超大车道,所以5G的速率自然快乐。

wpa_supplicant

wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令wpa_supplicant调动驱动来对WiFi芯片操作。

简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。

wpa_supplicant是支持WPA和WPA2(IEEE 802.11i / RSN)的Linux,BSD,Mac OS X和Windows的WPA请求者。它适用于台式机/笔记本电脑和嵌入式系统。请求者是在客户站中使用的IEEE 802.1X / WPA组件。

它实现与WPA身份验证器的密钥协商,并控制WLAN驱动程序的漫游和IEEE 802.11身份验证/关联。wpa_supplicant被设计成一个在后台运行的“守护程序”程序,并作为控制无线连接的后端组件。

wpa_supplicant支持单独的前端程序,包含基于文本的前端(wpa_cli)和GUI(wpa_gui)。

wifi 的 concurrent mode

所谓wifi的共存模式,有以下几种:

  1. station mode + station mode
  2. station mode + ap mode
  3. station mode + p2p mode
  4. p2p mode + ap mode

目前android自从JB version后,就开始支持station + p2p的共存,但其他的共存模式目前在android上都还未支持。现在市面上的wifi驱动主要是支持前三种共存,目前第四种共存模式,暂未见到;而station+ap mode,目前我们有在BXXX项目中使用,使用场景就是:

做Ap供其他的mid或phone来连接,同时自己又做station mode来连接外面可以上网的路由器,这样在mid或phone上,就可以在访问BXXX的同时,还可以上网。BXXX自己当然也可以上网了。

但需要主要的是,以上各模式中的station,ap,p2p在驱动中都需要对应的网络接口的,所以如果要支持concurrent mode,你的驱动insmod后,必须吐出两个网络接口才行,如果只有一个网络接口,那肯定是不支持concurrent mode的,见下图,加载驱动后就会出现wlan0,p2p0两个网络接口。

image.png

另外需要注意,这两个网络接口,都是在驱动中虚拟出来的,共享同一个物理硬件,因此他们也共享物理硬件所能达到的throughput,由于他们共同一个物理硬件,所以wlan0和p2p0必须在同一个channel上,因此跟wlan0和p2p0连接的网络都在同一个channel上,这样这个大网络里所有的设备共同参与这个信道的载波侦听/冲突检测,即同一时间只能有一个站在空气中发送无线包。如果刚开始出现ap/p2p跟wlan0的channel不一致的情况,那一般都是ap/p2p断开之前的链接,重新调频到wlan0的信道建立新的链接。

wlan0,p2p0都是在linux下的wifi驱动中创建的,譬如进来一个数据包是根据什么标准来判断,该路由到wlan0还是该路由到p2p0,

这是一个很趣的问题;另外wlan0接口和p2p0接口他们的发送数据包是如何调度和管理的,也是一个值得关注的问题。

image.png

2:station mode + ap mode
本节介绍station+ap的concurrent mode是如何建立的。先上一张整体的框架图:

image.png

在调试阶段,为了验证ap+sta是否正常工作,我们最好是step by step的先验证sta mode是ok的,然后验证ap

mode是ok的,最后才是sta+ap mode是否ok。

#define WPA_DRIVER_FLAGS_P2P_CONCURRENT    0x00000200 //Wifi驱动支持STA和P2P的并发运行
  1. https://w1.fi/wpa_supplicant/
  2. https://w1.fi/wpa_supplicant/devel/
  3. https://blog.csdn.net/kissinger_1984/java/article/details/83113056
  4. https://blog.csdn.net/xiaojsj111/article/details/30482001
  5. https://blog.csdn.net/ztguang/article/details/51015976
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351