大家好,又见面了,我是全栈君。
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!
对于低头党来说,在使用WIFI功能时,常常性的操作是打开手机上的WIFI设备,搜索到心目中的热点,输入password,联网成功,各种低头上网。。。
这个看似简单的过程。背后却是隐藏着大量的无线通信技术。用几个专业术语来表示这个过程。各自是:扫描(Scanning)、认证(Authentication)、关联(Association)。以下用一张图来表示这个过程。
图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 被动扫描
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116375.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...