转载请注明出处: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的更多相关文章

  1. 【智能家居篇】wifi网络结构(上)

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢! WIFI是什么.相信大家都知道,这里就不作说明了. 我们须要做的是深入了解其工作原理,包含软硬件.网络结构等.先说明 ...

  2. 【智能家居篇】wifi在智能家居中的应用

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 在设计智能家居系统方案时,一个很关键的point就是组网方式.组网方式关系到整个智能家居系统的稳定性.可扩展性.实时 ...

  3. 智能家居常用WiFi模块

    WiFi模块 WiFi模块就是整个系统的控制中心,控制很简单,就是输出一个开关信号控制继电器,而这个模块的核心是WiFi的连接,手机连接WiFi时需要扫描,输入密码,而这类本身没有屏幕和键盘的硬件设备 ...

  4. 【智能家居篇】wifi网络访问原理(下一个)——联想Association

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 认证完毕后,下一步就是关联(Association). 工作站与基站进行关联.以便获得网络的全然訪问权. 关联属于一 ...

  5. 【智能家居篇】wifi网络结构(下)

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢. 因为WIFI网络具有移动性,同一时候WIFI以无线电波作为传输媒介,这样的媒介本质上是开放的,且easy被拦截,不论 ...

  6. 基于Linux的智能家居的设计(5)

    4  软件设计 软件设计部分主要包含uboot移植.内核编译.系统移植.设备驱动编程.应用程序编程(QT编程.mysql数据库编程.控制系统编程).各个模块的功能函数(部分是在windows以下的IA ...

  7. Android开发—智能家居系列】(二):用手机对WIFI模块进行配置

    在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发—智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器 ...

  8. Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

    Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 转载:Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 目录 1. 初始安装 3. Homebridg ...

  9. 智能家居DIY-空气质量检测篇-获取温度和湿度篇

    目录 智能家居DIY-空气质量检测篇-获取空气污染指数 前言 话说楼主终于升级当爸了,宝宝现在5个月了,宝宝出生的时候是冬天,正是魔都空气污染严重的时候,当时就想搞个自动开启空气净化器,由于种种原因一 ...

随机推荐

  1. Smooth Mouse

    一款免费软件,使mac可以做到和 Windows 下的鼠标加速度的相同算法,实现同样 win 的鼠标操控感,也可以实现鼠标0加速度.

  2. 锋利的jQuery学习总结

    通过对<锋利的jQuery>(第二版)一书的学习,发现此书讲解通俗易懂,是学习jQuery的一本很好的指导书,特作如下总结.此书主要讲解了jQuery的常用操作,包括认识jQuery,jQ ...

  3. [New Portal]Windows Azure Virtual Machine (18) Azure Virtual Machine内部IP和外部IP

    <Windows Azure Platform 系列文章目录> 在开始本章内容之前,请读者熟悉以下2篇博文:       [New Portal]Windows Azure Virtual ...

  4. C# 子窗体点击按钮产生的新子窗体放在父窗体里

    情景展示: 父窗体Form1,左边是按钮,右边是panel(放置子窗体) 父窗体点击按钮,在panel显示第一个子窗体AA, AA有个按钮,点击按钮,是第二个子窗体ZZ, 怎样将AA的子窗体ZZ也显示 ...

  5. oracle分组查询

    分组函数 在分组函数中,如果有一个查找项分组,其他项必须也分组,比如下面的语句会报错,因为sal分组了,而ename没有分组: 1.显示工资最高的员工: 2.显示所有员工的平均工资: 2.1使用系统函 ...

  6. 【转】用串口登录Beaglebone Black、用usb共享电脑网络、内核模块的本地编译

    原文网址:http://bbs.eeworld.com.cn/thread-431507-1-1.html 串口连接BBB使用usb线可以连接BBB和电脑,用ssh就可以登录BBB来进行操作.但有时候 ...

  7. Hadoop权威指南:HDFS-写入数据

    Hadoop权威指南:HDFS-写入数据 FileSystem类有一系列的新建文件的方法.最简单的方法是给准备建的文件指定一个Path对象,然后返回一个用于写入数据的输出流: public FSDat ...

  8. Ajax 基础笔记

    Ajax内容: 同步交互与异步交互 同步交互:客户端向服务器端发送请求,服务器端向客户端进行响应,这个过程中客户端不能做其他事情 异步交互:客户端向服务器端发送请求,服务器端向客户端进行响应,这个过程 ...

  9. Eclipse 安装 SVN 插件的两种方法

    eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 使用eclipse 里Help菜单的“Install New Software”,通过 ...

  10. 集合04_Set

    Set集合总览 集合元素无序.不重复,三个实现类都是线程不安全的,最好在创建时通过Collections工具类的synchronizedSortedSet方法来包装Set集合,防止对set集合的意外非 ...