【智能家居篇】wifi网络接入原理(上)——扫描Scanning
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!
对于低头党来说,在使用WIFI功能时,常常性的操作是打开手机上的WIFI设备,搜索到心目中的热点,输入password,联网成功,各种低头上网。。。
这个看似简单的过程。背后却是隐藏着大量的无线通信技术。用几个专业术语来表示这个过程。各自是:扫描(Scanning)、认证(Authentication)、关联(Association)。以下用一张图来表示这个过程。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUmlnaHRoZWs=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
图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。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUmlnaHRoZWs=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="middle" alt="">
图2 被动扫描
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!
【智能家居篇】wifi网络接入原理(上)——扫描Scanning的更多相关文章
- 【智能家居篇】wifi网络结构(上)
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! WIFI是什么.相信大家都知道,这里就不作说明了. 我们须要做的是深入了解其工作原理,包含软硬件.网络结构等.先说明 ...
- 【智能家居篇】wifi在智能家居中的应用
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 在设计智能家居系统方案时,一个很关键的point就是组网方式.组网方式关系到整个智能家居系统的稳定性.可扩展性.实时 ...
- 智能家居常用WiFi模块
WiFi模块 WiFi模块就是整个系统的控制中心,控制很简单,就是输出一个开关信号控制继电器,而这个模块的核心是WiFi的连接,手机连接WiFi时需要扫描,输入密码,而这类本身没有屏幕和键盘的硬件设备 ...
- 【智能家居篇】wifi网络访问原理(下一个)——联想Association
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 认证完毕后,下一步就是关联(Association). 工作站与基站进行关联.以便获得网络的全然訪问权. 关联属于一 ...
- 【智能家居篇】wifi网络结构(下)
转载请注明出处:http://blog.csdn.net/Righthek 谢谢. 因为WIFI网络具有移动性,同一时候WIFI以无线电波作为传输媒介,这样的媒介本质上是开放的,且easy被拦截,不论 ...
- 基于Linux的智能家居的设计(5)
4 软件设计 软件设计部分主要包含uboot移植.内核编译.系统移植.设备驱动编程.应用程序编程(QT编程.mysql数据库编程.控制系统编程).各个模块的功能函数(部分是在windows以下的IA ...
- Android开发—智能家居系列】(二):用手机对WIFI模块进行配置
在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发—智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器 ...
- Home Assistant + 树莓派:强大的智能家居系统 · 安装篇
Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 转载:Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 目录 1. 初始安装 3. Homebridg ...
- 智能家居DIY-空气质量检测篇-获取温度和湿度篇
目录 智能家居DIY-空气质量检测篇-获取空气污染指数 前言 话说楼主终于升级当爸了,宝宝现在5个月了,宝宝出生的时候是冬天,正是魔都空气污染严重的时候,当时就想搞个自动开启空气净化器,由于种种原因一 ...
随机推荐
- yii phpexcel自己主动生成文件保存到server上
近期再整一个报表任务,每天必须把表导出来按excel格式发送邮件给管理员,利用phpexcel把表保存到server上.然后再通过phpmailer发送就ok. ob_end_clean(); ...
- c++,初始化列表
类对象的构造顺序是这样的: a.分配内存,调用构造函数时,隐式/显示的初始化各数据成员 b.进入构造函数后在构造函数中执行一般计算 1.初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内 ...
- WF4.0——升级技能:托付应用
回想: 在一个月前,我们刚刚回想了面对象至关重要的部分:托付,详细请移步我们博客:面向对象--一起来复习托付与事件!关于这篇博客的详细内容,不再赘述,在这里我们主要讨论在工作流中的应用及他的详细怎样解 ...
- <转载>网页设计中的F式布局
地址:http://www.uisdc.com/understanding-the-f-layout-in-web-design 网页设计中的F式布局 今天我们来重点介绍网页设计中的F式布局.传统的布 ...
- Appium 的安装启动
Appium 的安装方式根据官网提供的是使用nodejs 安装,但是官方给出了三种方法 参考网址: appium下载地址: https://bitbucket.org/appium/appium.ap ...
- (原创)优酷androidclient 下载中 bug 解决
在网络情况不好的情况下,优酷androidclient下载视频会终止,用户放弃下载点击 删除该任务以后,切换到网络好的情况下进行下载,会显示该视频已在下载队列里,然后clientUI界面却什么都看不到 ...
- android用canvas绘制两种波纹效果
波形效果有几种不同的呈现形式,比如从中间向四周散开的波形,也就是熟知的水涟漪:还有上下波动的曲线,像五线谱等.英文中可以称作Wave或者Ripple,所以暂且叫它们WaveView.WaveLayo ...
- C++学习之路—引用(一)—基础知识
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 对一个数据可以建立一个“引用”,它的作用是为一个 ...
- C++学习之路—继承与派生(三):多重继承与虚基类
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 多重继承是指一个派生类有两个或多个基类.例如,有 ...
- linux添加用户
useradd -M -s /sbin/nologin -p `openssl passwd -1 -salt '奥特曼与小怪兽' 123456` wang 还是这个吧