【智能家居篇】wifi网络接入原理(上)——扫描Scanning「建议收藏」

【智能家居篇】wifi网络接入原理(上)——扫描Scanning

大家好,又见面了,我是全栈君。

转载请注明出处:http://blog.csdn.net/Righthek 谢谢!    

        对于低头党来说,在使用WIFI功能时,常常性的操作是打开手机上的WIFI设备,搜索到心目中的热点,输入password,联网成功,各种低头上网。。。

这个看似简单的过程。背后却是隐藏着大量的无线通信技术。用几个专业术语来表示这个过程。各自是:扫描(Scanning)、认证(Authentication)、关联(Association)。以下用一张图来表示这个过程。

【智能家居篇】wifi网络接入原理(上)——扫描Scanning「建议收藏」

图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。

【智能家居篇】wifi网络接入原理(上)——扫描Scanning「建议收藏」

图2  被动扫描

转载请注明出处:http://blog.csdn.net/Righthek 谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116375.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java———发送网络传真[通俗易懂]

    java———发送网络传真[通俗易懂]目录推荐公众号服务商代码发送代码回执接口推荐公众号有彩蛋哦!!!(或者公众号内点击网赚获取彩蛋)服务商在网上兜兜转转没有找到免费的网络传真API,只好付费服务商bnetfax代码有了API后那其他的就是按照文档开发了没什么难度发送代码publicstaticvoidmain(String[]args)throwsIOException,ServiceExceptio…

  • 画完三角形再画谢尔宾斯基地毯

    画完三角形再画谢尔宾斯基地毯照样废话不说,看代码看注释importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Graphics;importjava.awt.Toolkit;importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;import…

  • 未来之路作为创业者_如何看待读图时代

    未来之路作为创业者_如何看待读图时代距离4月11日-14日百度联盟峰会已经过去一个多月了,这一段与许多站长谈论最多的是百度创始人李彦宏在峰会上的演讲,其中创业者三大机会尤最。演讲更多的是从战略角度的高度概括,因此笔者主要想在大家的帮助下再深入分析一下读图时代的创业机会,主要是交流,通过交流更具体一些。在分析、交流之前,还是先引用一些媒体报道,以免失之毫厘,谬以千里。    4月12日上午消息,百度公司…

  • js array 数组添加与删除数据

    js array 数组添加与删除数据//新建数组varids=newArray();//向数组中添加数据ids.push(1);//删除下标为i的数组元素ids.remove(i);//自定义删除函数:Array.prototype.remove=function(dx){if(isNaN(dx)||dx>this.length){returnfalse;}…

  • javascript 匿名函数_java 匿名函数

    javascript 匿名函数_java 匿名函数在JavaScript中用匿名函数(箭头函数)写出递归的方法前言今天看 Mozilla 出品的 ES6InDepth ,看到 Arrowfunctions(中文翻译),其中一段让人讶异。Usingarrowstopiercethedarkheartofcomputerscience「使用箭头来刺穿计算机的黑暗心脏」里面提到λ(lambda)表达式、阿隆佐·邱奇(Alonz…

  • 【gTest】gtest简介及简单使用

    【gTest】gtest简介及简单使用【gTest】gtest简介及简单使用gtest是一个跨平台(Liunx、MacOSX、Windows、Cygwin、WindowsCEandSymbian)的C++测试框架,有google公司发布。gtest测试框架是在不同平台上为编写C++测试而生成的。从http://code.google.com/p/googletest/downloads/detail?name=gtest-1.7.0.zip&can=2&q=下载最新的gtest-1.7.0版本在Windows下编

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号