信令交互
AP -------------->周期性广播 beacon帧(若AP未隐藏SSID,则是STA被动扫描)
STA ------------> Probe Request (STA主动扫描方式) ----------------> AP //广播自身数据
STA <------------ Probe Response(回复自身SSID等信息) <------------- AP
STA ------------> Authentication Request --------> AP (认证类型,Open System , Shared Key等)
STA <------------ Authentication Response <------ AP
STA -------------> Association Request ------------> AP (请求与AP建立关联,从而可以进行数据交互)
STA <------------- Association Response <----------- AP
可能有 :接入认证
最后,开始数据传输
STA和AP建立关联分为三个过程:
- 扫描scan:用于STA发现无线网络;
- 链路认证:即刷门禁卡,新生入学,你被分配到97号楼,你提着箱子走到97号楼下想进去,你得有学校给你发的97号楼的门禁卡,证明你是有入住97号楼的资格。同样的,STA想要与AP建立无线链路,也需要一个认证,这就是链路认证;
- 关联association:确定STA有资格和AP建立无线链路后,STA还需要与AP协商无线链路的服务参数,才能完成无线链路的建立;
- 其实后续STA还要根据实际情况,来决定STA是获取IP地址后就可以接入网络,还是需要再进行各种接入认证和密钥协商后才能接入网络。
4.1 接入认证和密钥协商不是一定要进行的,在STA关联阶段,STA会根据收到的关联响应报文来决定是否需要进行接入认证和密钥协商。具体会在后面的关联阶段描述。但在实际的应用中,考虑到无线网络的安全性,通常都会选择进行接入认证和密钥协商的。
扫描scan
为了适应市场不同的需求,在不同的区域会用不同的AP,STA持有者会在不同的区域移动,每到达一个区域,STA就需要先及时了解当前有哪些可用的AP。然后,找到一个最中意的AP。
平时我们到达一个饭店或者咖啡馆,想要连接WiFi时,打开WiFi图标,会看到有很多可用网络的名字(SSID),然后找到对应名称的网络,输入密码进行连接。手机搜索无线网络的过程就叫做扫描。
上面两幅图是笔者手机截图,可以看到第一幅图右上角有一个正在滚动的小圆圈;第二幅图此圆圈便消失了。下面对图中内容进行解释:
- 图中的“TP_LINK_14F3”,“stu-xdwlan”,“帅的不像话”等等就是我的手机(STA)通过扫描发现的可用的无线网络,这些名字就是SSID;
- 第一幅中滚动的小圆圈就代表手机正在扫描,看一看是否还有其他可用网络;
- 第二幅图小圆圈消失,代表扫描完成。
主动扫描&被动扫描
扫描分为两类:主动扫描和被动扫描。正如字面的含义,
- 主动扫描是指STA主动去探测搜索无线网络;
- 被动扫描则是指STA只会被动的接收AP发送的无线信号。
主动扫描
主动扫描情况下,STA会主动在其所支持的信道上依次发送探测信号,用于探测周围存在的无线网络,STA发送的探测信号称为探测请求帧(Probe Request)。探测请求帧又可以分为两类,一类是未指定任何SSID,一类是指定了SSID的。(注意:Probe Request帧发送方式是广播)
-
探测请求帧里面如果没有指定SSID,就是意味着这个探测请求想要获取到周围所有能够获取到的无线网络信号。所有收到这个广播探测请求帧的AP都会回应STA,并表明自己的SSID是什么,这样STA就能够搜索到周围的所有无线网络了。(注意:如果AP的无线网络中配置了Beacon帧中隐藏SSID的功能,此时AP是不会回应STA的广播型探测请求帧的,STA也就无法通过这种方式获取到SSID信息。)
-
探测请求帧中指定了SSID,这就表示STA只想找到特定的SSID,不需要除指定SSID之外的其它无线网络。AP收到了请求帧后,只有发现请求帧中的SSID和自己的SSID是相同的情况下,才会回应STA。
被动扫描
被动扫描情况下,STA是不会主动发送探测请求报文的,它要做的就只是被动的接收AP定期发送的信标帧(Beacon帧)。(注意:Beacon帧是AP周期性发送的)
AP的Beacon帧中,会包含有AP的SSID和支持速率等等信息,AP会定期的向外广播发送Beacon帧。例如AP发送Beacon帧的默认周期为100ms,即AP每100ms都会广播发送一次Beacon帧。STA就是通过在其支持的每个信道上侦听Beacon帧,来获知周围存在的无线网络。(注意如果无线网络中配置了Beacon帧中隐藏SSID的功能,此时AP发送的Beacon帧中携带的SSID是空字符串,这样STA是无法从Beacon帧中获取到SSID信息的。即,STA要通过主动扫描来获取网络信息)
STA对两种扫描的使用情况
STA是通过主动扫描还是被动扫描来搜索无线信号呢?这完全是由STA的支持情况来决定的。
- 手机或电脑的无线网卡,一般来说这两种扫描方式都会支持;(例如,你们宿舍某为同学的WiFi信号被其的隐藏,你要使用网络,那么你会先向他询问SSID,然后进行主动扫描并连接。)
- 而一般VoIP语音终端通常会使用被动扫描方式,其目的是可以节省电量。
链路认证
当手机扫描到无线网络信号后,我们就可以选择接入哪个网络了,这时STA就需要进入链路认证阶段了。
当STA找到自己满意的AP后,并不能够直接连接,而是需要先通过AP的认证,验证STA的合法资格后才能建立关联,避免不合法或恶意的STA进行不可告人的活动。
总的来说,AP验证的STA资格的方式有两种:开放系统认证和共享密钥认证。(两种链路验证方式)
注意:上面提到,只有通过链路认证后的STA才能和AP建立的无线关联。但是,通过链路认证只是说STA有资格建立连接,但是不一定有权限建立连接。这就好比,一个咖啡馆内设有网络A,普通吃饭用户A通过了链路认证,代表A有资格连接,但是A有可能还要获取密码后才能连接;而某搞破坏的人的手机被系统甄别为危险STA,那么他连接入资格都没有,更别说后续的获取密码了。(也就是说,链路认证 ≠ 接入认证)
安全策略
安全策略体现的是一整套的安全机制,它包括三个方面:
- 无线链路建立时的链路认证方式;
- 无线用户上线时的用户接入认证方式;
- 无线用户传输数据业务时的数据加密方式。
通过上图我们可以看到,链路认证和接入认证是先后两个不同阶段的认证。安全策略可分为WEP、WPA、WPA2和WAPI几种,这几种安全策略对应的链路认证其实只有Open和Shared-key Authentication两种,而802.1X和PSK则是属于接入认证方式。另外用户接入认证方式其实还包括表中未列出的MAC认证和Portal认证。
开放系统认证(Open System Authentication)
- 开放系统认证简称就是Open认证,又叫不认证。但是要注意,不认证也是一种认证方式,只不过这种链路认证方式下,只要有STA发送认证请求,AP都会允许其认证成功,目的是为了加快业务处理能力,代价是损失安全性;
- 所以实际使用中这种链路认证方式通常会和其它的接入认证方式结合使用,以提高安全性。
共享密钥认证(Shared-key Authentication)
另一种方式叫共享密钥认证,需要STA和AP间先确定好一个暗语,STA发出托镖请求后,AP会用暗语的方式验证主顾的身份合法性。
看到共享密钥认证,从名称上很容易就让人联想到预共享密钥认证PSK(Pre-shared key Authentication),其实共享密钥认证是一种链路认证方式,而预共享密钥认证是一种用户接入认证方式,两种认证方式的过程实际上是类似的。
关联
关联总是由STA发起的,实际上关联就是STA和AP间无线链路服务协商的过程。
关联分为两个步骤:关联请求和关联响应
- STA在发送的关联请求帧中,会包含一些信息,包括STA自身的各种参数,以及根据服务配置选择的各种参数。(主要包括STA支持的速率、信道、QoS的能力,以及选择的接入认证和加密算法等等。)
- 如果是FAT AP收到了STA的关联请求,那么FAT AP会直接判断STA后续是否要进行接入认证并回应STA;
- 如果是FIT AP接收到了STA的关联请求,FIT AP要负责将请求报文进行CAPWAP封装后发送给AC,由AC进行判断处理,并且FIT AP还要负责将AC的处理结果解CAPWAP封装后再发送给STA。(在这个过程中FIT AP起到一个传话筒的作用,且AP和AC间的这类关联报文需要通过CAPWAP隧道传输。)
- 关联完成后,表明STA和AP间已经建立好了无线链路,根据STA选择的服务套餐(注意,安全策略是STA自己选择的),进行后续流程。如果没有配置接入认证,STA在获取到IP地址后就可以进行无线网络的访问了。如果配置了接入认证的,STA还需要完成接入认证、密钥协商等阶段才能进行网络访问。(如果接入认证失败,仅可以访问Guest VLAN中的网络资源或Portal认证界面。)
故事结尾
一对新婚夫妻,老婆为了向某单身闺蜜秀优越,带着新婚的老公去看望该单身闺蜜,席间老婆拿出老公的IPhone6,习惯性的开启了Wi-Fi,没有输入密码,直接就连上了网络。。。。。瞬间,她貌似明白了什么,默默的拿出了自己的手机,选择连接闺蜜家的Wi-Fi,显示这是一个安全的网络,需要输入密码才能连接。她醒了,她彻底觉悟了——她的手机能关联闺蜜家的WLAN,但她要输入密码才能使用闺蜜家的Wi-Fi。
手机上能看到这个Wi-Fi网络,表示手机成功的通过扫描过程找到了Wi-Fi网络。老公的手机直接能连Wi-Fi,老婆的手机要输密码才能连,并且手机有显示这是一个安全的网络,表示闺蜜家的Wi-Fi是存在密码认证的。手机连接过的Wi-Fi,通常可以存储上次连接时的一些信息,比如密码,那么下次再连接的时候是不需要用户重新输入密码,手机软件直接帮忙输入了。所以老公的手机一定是之前有连过闺蜜家的Wi-Fi,这次才会不用输密码就直接连上。那这个密码是链路认证还是接入认证阶段提示的呢,仅通过上面的信息是无法判断的。因为链路认证可以采用共享密钥加密方式,接入认证可以采用更多的**(比如802.1X、PSK、Portal等)认证方式**,两者都需要输入密码,所以不能认为需要输密码就是接入认证,也有可能是链路认证。不过在实际使用中,链路认证通常使用Open认证,较少使用共享密钥认证,所以一般情况下是接入认证提示密码的可能性大。
https://blog.51cto.com/hanjh8/1571892