五、一般Wi-Fi的连接过程
我们知道传统Wi-Fi的连接分三步:
1)发现周围的路由器,被成为扫描阶段;
2)然后根据路由器的名字(SSID)选择自己知道密码的路由器;
3)输入密码等待连接完成。
支持Passpoint协议的Wi-Fi设备依旧没有违反这个步骤,只不过在每一步添加了一些小小的动作,把人需要做的事情改成了后台自动完成,将整个连接过程隐藏了起来。
Wi-Fi的连接过程就是Wi-Fi的寻找发现,认证关联,密码身份校验这三步,对于上网最后再加一步获取IP地址,至此就可以上网了,也是我们在手机上看到Wi-Fi连接标志出现的时候。
在每一步中都会用到Wi-Fi的管理帧,对应与这几个步骤分别是:
1)在扫描中分为主动扫描和被动扫描。主动扫描会用到Probe Request和Probe Response帧。而被动扫描则是在每个信道上监听路由器发出的beacon帧;
2)在认证阶段和关联阶段,会通过authentication request 和authentication response 完成认证,association request和association response完成关联。虽然在现在连接过程中这两步看似走个过场,但是authentication在当年只有WEP加密的时代承担了整个加密过程的校验工作。中途为了兼容WPA和WPA2加密协议,一度被当作小透明的步骤,不过今天WPA3加密协议推出后,它又重新发光发热,在这里就不展开了。有兴趣的可以自己搜索一下,网上关于WPA3的加密过程解析有很多不错的资料。至于关联过程的association request和association response在平时也是不出意外意外的完成,但是在漫游时确实充当着密码载体的作用,后面有机会再说;
3)在密码校验的时候,如果是企业级的路由器,那么会有EAP交互获取密码的过程,如果是普通的家用路由器,则直接使用密码进行密码校验;
4)在完成了密码校验后则开始DHCP获取IP地址的过程,这一步其实和Wi-Fi连接没有什么关系,但是现在大家普遍认为连接Wi-Fi如果不能上网那Wi-Fi就不叫连接成功,所以Android手机上也把这一步算在了Wi-Fi连接的过程中了。
六、Passpoint 设备的连接过程
大家都知道,我们连接一个路由器,需要知道路由器的名字和密码,这个路由器名字用术语叫做SSID(Service Set Identifier),在扫描阶段实际上就是在寻找各个信道上的路由器SSID,当在所有的信道上都找完后,将收集到的SSID返回到界面上供用户进行选择。挑选出我们想要连接的路由器后,输入密码,发起认证,关联,密码验证,最后完成连接。
但是在支持Passpoint协议的客户端和路由器上,扫描过程中重点关注的将不再是SSID,而变成了寻找FQDN和roaming consortium。
那么什么是FQDN呢?它是Full Qualified Domain Name的缩写, 关于它的简介网上有很多,这里不再啰嗦了。
roaming consortium则是为了方便漫游,也作为可以进行连接AP的一个备选项。
对于这两个,只要有一个匹配上,客户端就可以尝试连接,以FQDN为优先选项。
但是不知道是为了考虑确定性还是兼容性,FQDN和roaming consortium并没有出现在beacon和probe response中,而是当客户端从beacon或者probe response中发现路由器是支持Hotspot 2.0协议的时候,开始尝试一个获取FDQN后者Roaming Consortium的过程,叫做ANQP(Access Network Query Protocol)。
所以,支持Passpoint协议的Wi-Fi设备和普通Wi-Fi的重要改变在于扫描阶段寻找AP的方式。
普通AP | 支持Passpoint协议AP | |
---|---|---|
扫描阶段 | 接收beacon或者probe response | 接收 beacon 或者 Probe response 并 发起ANQP过程 |
寻找目标 | SSID | FQDN或者 Roaming Consortium |
支持Passpoint的Wi-Fi设备的连接过程依旧没有改变Wi-Fi的连接过程,只是在扫描时候加入了ANQP寻找匹配FQDN和roaming consortium的过程,整个的连接过程和正常Wi-Fi连接的过程一样。整个的连接过程如下图所示
6.1 Passpoint Wi-Fi扫描过程
Passpoint 的Wi-Fi设备在扫描中寻找支持Passpoint协议的设备(也叫做支持Hotspot2.0的设备),为了做到这一点,Wi-Fi联盟借用了802.11u协议,使用了GAS(通用广告服务)和ANQP(访问网络查询协议)。
首先客户端仍然会执行主动扫描或者被动扫描,接收Probe Response或者Beacon,对于支持Passpoint(或者Hotspot 2.0)的路由器(AP)设备,会在Probe Response和Beacon中Hotspot 2.0 Indication、Advertisement Protocol 和 Roaming Consortium三个IE元素,用于表明自己支持Hotspot2.0协议。
当发现有支持Hotspot2.0的路由器时,就会发起ANQP过程来获取AP端的具体Hotspot 2.0信息,整个过程都是由action帧完成。
首先客户端向AP发出GAS Initial Request,其中带有ANQP协议,这一帧的ANQP是一帧request,其中会带有客户端想要向路由器端了解的信息,其中包括ANQP capability list、NAI Realm list、3GPP Cellular Network Information、Domain Name list和Venue Name Information,除此之外,还有附加一项Hotspot 2.0 ANQP Element,这个将贯穿整个hotspot 2.0 连接,从初始的获取FQDN,到后续OSU。首先我们先来看下这一element的格式。
由于Hotspot 2.0 ANQP Element是符合TLV格式的vendor IE,所以之前的Info ID、length、OUI、Type很好理解,只有Subtype从1-13代表不同含义,表明整个过程中AP和STA沟通时想要完成的事情,具体我们来看看从1到13分别代表了什么意思:
类型 | AP | STA | ||
1 | HS Query list | Query | Receive | Send |
2 | HS Capability list | Response | Send | Receive |
3 | Operator Friendly Name | Response | Send | Receive |
4 | WAN Metrics | Response | Send | Receive |
5 | Connection Capability | Response | Send | Receive |
6 | NAI Home Realm Query | Query | Receive | Send |
7 | Operating Class Indiciation | Response | Send | Receive |
8 | OSU Providers List | Response | Send | Receive |
10 | Icon Request | Query | Receive | Send |
11 | Icon Binary File | Response | Send | Receive |
12 | Operator Icon Metadata | Response | Send | Receive |
13 | Osu Providers NAI List | Response | Send | Receive |
所以,在完成整个连接过程中,支持Passpoint协议的通信双方会通过Hotspot 2.0 ANQP element来完成一些Passpoint特有的过程,就像在扫描阶段,ANQP过程的开始,客户端会在GAS Initial Request中带有HS Query list来向路由器询问AP的HS Capability List、Operator Friendly Name和WAN Metrics。
当路由器端收到了客户端发来的GAS Initial Request后,会响应GAS Initial Response,其中会回复客户端所需的内容。
当客户端收到路由器发来的response后,回复GAS Query Done消息,代表完成ANQP的整个过程,至此,Passpoint 协议的扫描过程完成。
6.2 Passpoint Wi-Fi连接过程
当客户端通过ANQP过程找到自己可以连接的路由器后,就会以Wi-Fi连接过程进行连接。整个连接过程都和一般Wi-Fi连接过程一样没有区别。不过由于支持Passpoint的路由器都是企业级路由器,所以在四次握手对密码校验之前会有EAP的过程获取密码,称为WPA2-Enterprise加密方式。根据协议规定,支持的EAP method总共有5种,对于有SIM卡的客户端可以使用EAP-SIM、EAP-AKA和EAP-AKA'三种方法从AAAserver获取密码。对于没有SIM卡的客户端,也可以使用EAP-TLS和EAP-TTLS方法获取密码。
对于使用SIM卡进行密码校验的双方,需要客户端先开通服务,将自己的SIM卡信息存储在运营商的服务器上,在密码校验时实际上是从运营商的服务器上检测是否存在该SIM卡,如果有EAP过程顺利完成并拿到密码,进而进行连接。
对于没有SIM卡的客户端,想要进行连接,那就需要使用EAP-TLS或者EAP-TTLS方法,这样,就需要使用证书+用户名/密码的方法进行认证获取密码。
由于EAP方法想要写的内容比较多,在这里一次性写不完,所以打算有时间了再总结好了再写一篇,所以在这里就不展开了。
以上就是Passpoint R1版本的整个连接过程。
七、不知道证书、用户名/密码我们该怎么办
大家会发现,其实这样仍然需要提前做些配置,对于使用SIM卡的设备还好,提前开通服务就可以了,但是对于没有SIM卡,需要证书,用户名/密码可不是那么容易,尤其是面对大街上一个从来没有连接过甚至是第一次遇到的路由器。不要着急,Wi-Fi联盟考虑到这种可能情况,所以又推出了R2版本的协议,这个版本引入了一个新的过程- OSU(Online Sign Up),将解决大家需要知道证书,用户名/密码的困扰,整个过程将获取证书、用户名/密码的过程放在了后台完成,对于你,只需要做一次简单的认证过程。这样将大大方便大家使用Passpoint设备做连接。