美文网首页
Wi-Fi 总结

Wi-Fi 总结

作者: iOSDevLog | 来源:发表于2020-06-08 18:21 被阅读0次

    术语

    术语 英文 中文
    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

    相关文章

      网友评论

          本文标题:Wi-Fi 总结

          本文链接:https://www.haomeiwen.com/subject/oyzozhtx.html