图1 WIFI接入网络过程
现在让我们来分析一下这个过程的工作原理。
相对移动电子产品来说,WIFI的功耗会比较大。因此,上层应用程序都会有一个开关,用于打开和关闭WIFI功能。个人认为,最好的电源管理设计是上层应用程序的开关可操作WIFI硬件模块的电源的通断。当用户在手机上点击打开WIFI时,WIFI模块通电运行起来,当然也会相应加载WIFI的驱动程序。
打开完成后,我们可以看到手机上显示搜索到附近的WIFI热点,这个搜索过程的工作原理是怎样的呢?用一个无线通信专业术语来表示:扫描(Scanning)。
扫描的目的是什么?就是要找到一个无线网络,然后加入到该网络中。
要加入一个无线网络,那么我们需要找到它的网络名称,即SSID。这个SSID其实是接入点(Access Point)回应工作站扫描时所带的参数,还有其它的网络参数,包括BSSID(可理解为接入点的MAC地址)、信号强度、加密和认证方式等。
扫描类型分两种,一种是主动扫描(active scanning),另一种是被动扫描(passivescanning)。
1、 主动扫描(activescanning)
我们先来说说主动扫描。即我们的手机(工作站STA)以主动的方式,在每个信道上发出Probe Request帧,请求某个特定无线网络予以回应。主动扫描是主动寻找网络,而不是静候无线网络声明本身的存在。使用主动扫描的工作站将会以如下的程序扫描信道表所列的频道:
(1)跳至某个信道,然后等候来帧指示(indicationof an incoming frame)或者等到ProbeDelay定时器超时。如果在这个信道收到帧,就证明该信道有用户在使用,因此可以加以探测。而ProbeDelay定时器可用来防止某个闲置信道让整个过程停止,因为工作站不会一直等待帧的到来。
(2)利用基本的DCF访问过程取得媒介使用权,然后送出一个Probe Request帧。
(3)至少等候一段最短的信道时间(即MinChannelTime)。
a.如果媒介并不忙碌,表示没有网络存在,因此可以跳至下个信道。
b.如果在MinChannelTime这段期间媒介非常忙碌,就继续等候一段时间,直到最长的信道时间(即MaxChannelTime)超时,然后处理任何的Probe Response帧。
大家可能会发现当手机进行WIFI热点搜索时,有时时间会比较长,原因是你处在的区域存在多个接入点(AP),当手机发出Probe Request帧时,多个接入点(AP)通过竞争窗口(congestionwindow)回应Probe Response帧,而这个竞争过程受限于最长的信道时间(即MaxChannelTime)。
当无线网络收到搜寻其所属的扩展服务集(ESS)的Probe Request时,就会发出Probe Response帧。若要找到附近所有的无线网络,那么Probe Request帧可使用broadcastSSID,如此一来,该区所有的802.11无线网络都会以Probe Response加以回应。
2、 被动扫描(passivescanning)
现在大部分移动电子产品都是采用被动扫描(passive scanning)的方式,原因是扫描过程中不需要传送任何信号,可以省电。在被动扫描中,工作站会在信道列表(channel list)所列的各个信道之间不断切换,并静候Beacon帧的到来。所收到的任何帧都会被暂存起来,以便取出传送这些帧的BSS 的相关数据。
在被动扫描的过程中,工作站会在信道间不断切换,并且会记录来自所收到的任何Beacon的信息。Beacon在设计上是为了让工作站知道加入某个基本服务集(Basic Service Set,简称 BSS)所需要的参数以便进行通信。在下图中,通过监听来自前三个接入点的Beacon帧,移动式工作站以被动扫描找出该区所有BSS。如果该工作站并未收到来自第四个接入点的Beacon,就会汇报目前只发现的三个BSS。
图2 被动扫描