LV02-01-天猫精灵IOT-02-WiFi-02-WiFi连接过程
本文主要是WiFi——WiFi连接过程的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows版本 | windows11 |
Ubuntu版本 | Ubuntu22.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) |
点击查看本文参考资料
分类 | 网址 | 说明 |
官方网站 | 阿里云 | 阿里云官网主页 |
阿里生活物联平台 | 生活物联网平台(飞燕平台)主页 | |
AliGenie | 天猫精灵开放平台AliGenie主页 | |
阿里物联网平台 | 阿里物联网平台主页 | |
Bluetooth 技术网站 | 蓝牙协议规范什么的可以来这里找 | |
Telink | Telink | Chips for a Smarter IoT (telink-semi.com) Telink中文官网 | |
开发手册 | AliOS Things开发指南 | AliOS Things开发指南,这里是最新版本,可以直接从官网找到 |
AliOS Things开发指南 | AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档 | |
AliOS Things开发指南(3.0) | AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档 | |
生活物联网平台开发文档 | 生活物联网平台(飞燕平台)开发文档 《设备端开发指南》 | |
Wi-Fi IoT品类定义与功能开发 | 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发 | |
硬件平台 | mk3080 WiFi开发板 | WiFi开发板使用指南-阿里云开发者社区 |
esp8266开发板 | 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com) | |
TLSR8258 Datasheet | Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258 | |
参考资料 | AliOS Things 3.0 应用开发指南 | 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考 |
IP知识百科 - 华为 (huawei.com) | IP的一些相关知识点 |
点击查看相关文件下载
分类 | 网址 | 说明 |
蓝牙规范相关文档 | Core Specification 5.2 | 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。 《Core_v5.2.pdf》 |
Mesh Model(v1.1) | 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。 本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。 《MshMDL_v1.1.pdf》 | |
Mesh Profile(v1.0.1) | 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。 《MshPRFv1.0.1.pdf》 | |
Mesh Device Properties | 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。 但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》 | |
GATT Specification Supplement | GATT Specification Supplement | Bluetooth® Technology Website。 好像可以在线看:《GATT Specification Supplement》 | |
Assigned Numbers | GATT的一些类型定义可以在这里找。 | |
AliOS Things | alios-things/AliOS-Things | Gitee上的AliOSThings SDK源码仓库 |
alibaba/AliOS-Things | GitHub上的AliOSThings SDK源码仓库 | |
天猫精灵蓝牙Mesh协议栈 | alibaba-archive/genie-bt-mesh-stack | GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。 之前是在alibaba/genie-bt-mesh-stack这个仓库。 写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a |
蓝牙Mesh设备开发指南 | 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容 |
一、网络结构
1. 网络类型分类
基本服务集(basic service set 简称BSS)
- 独立型网络(IBSS)
- 基础结构型网络( infrastructure )
扩展服务集(extended service set 简称ESS)
2. 基本服务集
2.1 基本服务集简介
英文名称Basic Service Set(BSS),是一个无线网络中的术语,用于描述在一个802.11 WLAN中的一组相互通信的移动设备。一个BSS可以包含AP(接入点),也可以不包含AP。基本服务集有两种类型:一种是基础设施模式的基本服务集,包含一个AP和若干个移动台;另一种是独立模式的基本服务集,由若干个移动台组成,其中的一个充当主移动台。
每个基本服务集都一个唯一的标识,称为BSSID。注意区分BSA-Basic Service Area这个概念,BSA称为基本服务区。在基本服务集中,所有无线设备关联到一个访问点上,该访问点连接其他有线设备(也可能不连接),并且控制和主导整个BSS中的全部数据的传输过程。BSS使用发射器的第二层地址(通常是MAC地址)作为其BSSID(基础服务集标识符),亦可以指定一个ESSID(扩展服务集标识符)来帮助记忆。BSS的覆盖范围称为基本服务区(BSA)或是蜂窝。只有在BSS为构成单元,BSA为其覆盖范围的情况下,BSS和BSA才可以互换。
基本服务集如下图,家庭中有一台路由器,我们的手机电脑都接入路由器,这就是一个基本服务集。
2.1 独立型网络
独立型网络,Independent Basic Service Set 简称IBSS。它是一种Ad Hoc模式(设备之间点对点对等通信),有以下特点:
(1)通过唯一的SSID标识
(2)网络中没有AP设备,没有公共连接到DS有线网络
2.2 基础结构型网络
英文名称为infrastructure,这是最常见用网络,是一种基础的服务单元,家庭,或者公司上网一般都是这种类型。
3. 扩展服务集
英文名称:Extended Service Set 扩展服务集合。DS和多个BSS允许IEEE802.11构成一个任意大小和复杂的无线网络。IEEE802.11b把这种网络称为扩展服务集网络。同样,ESS也有一个标识的名称,即ESSID。
二、WiFi连接过程
WiFi的连接大概分为三个过程:
扫描阶段(SCAN)
认证阶段 (Authentication)
关联(Association)
1. 扫描阶段
无线客户端有两种方式可以获取到周围的无线网络信息:一种是被动扫描,无线客户端只是通过监听周围AP发送的信标帧(Beacon帧)获取无线网络信息;另外一种为主动扫描,无线客户端在扫描的时候,同时主动发送一个探测请求帧(Probe Request帧),通过收到探测响应帧(Probe Response)获取网络信号。
- Passive Scanning
被动扫描,通过侦听AP定期发送的Beacon帧来发现网络,该帧提供了AP及所在BSS相关信息:“我在这里”。它的特点:找到时间较长,但STA节电。
就是说路由器每隔一段时间都会发送一个Beacon帧,路由器只能工作在某一个信道,所以也只会在某一个信道发送这个帧。若是旁边有一个手机,则会扫描所有的信道来获取相关信息。就像我们使用收音机的时候一样,需要扫描不同的频率来确认是否有信号。这样被动的等待路由器发送Beacon帧是有缺点的,若是路由器发送Beacon帧的间隔时间特别长,我们就要很久才可能会搜索到路由器信号,效率就会很低。当用户需要节省电量时,可以使用被动扫描。
- Active Scanning
主动扫描,STA依次在13个信道发出Probe Request帧,寻找与STA所属有相同SSID的AP,若找不到相同SSID的AP,则一直扫描下去。特点是能迅速找到附近的路由器信号。
如上图这种情况是client客户端不知道附近是哪一个路由器,我们的client客户端,会现在向周围的AP发送Probe Request帧,这个帧中包含的SSID为空。现在只有AP2在附近,它收到这个Probe Request帧之后,会回应一个Probe Response帧,这个帧中会携带AP2的SSID,这个时候当client客户端收到Probe Response帧的时候,就会显示出AP2的SSID。
还有一种情况是,当client客户端配置希望连接无线网络或者已经成功连接到一个无线网络情况下,client客户端也会定期发送单播探测请求帧(Probe Request帧)(该报文携带要配置或者已经连接的无线网络的SSID),当能够提供指定SSID无线服务的AP接收到探测请求后回复探测响应。通过这种方法,无线客户端可以主动扫描指定的无线网络。
2. 认证阶段
当STA找到与其有相同SSID的AP,在SSID匹配的AP中,根据收到的AP信号强度,选择一个信号最强的AP,然后进入认证阶段。
2.1 两种认证方式
为了保证无线链路的安全,无线用户接入过程中AP需要完成对无线终端的认证,只有通过认证后才能进入后续的关联阶段。在此过程中涉及到两个认证过程:链路认证和接入认证。链路认证发生在认证阶段,接入认证发生在关联阶段后。
2.1.1 链路认证
802.11链路定义了两种认证机制:开放系统认证(open-system authentication)和共享密钥认证(shared-key authentication)。
- 开放系统认证
开放系统认证是一种不对站点身份进行认证的认证方式。原理上用户站点向接入点发出认证请求,仅仅是一个请求,不含任何用户名、口令等信息,就可以获得认证。开放系统认证的主要功能是让站点互相感知对方的存在,以便进一步建立通信关系来建立关联。因为是无验证,所以申请者发送authentication报文,认证者收到后,同样发送authentication报文,并在status code字段置0,表示认证成功。
- 共享秘钥认证
共享密钥认证是指通过判决对方是否掌握相同的密钥来确定对方身份是否合法。密钥是网络上所有合法用户共有的,而不从属于单个用户,故称为“共享”密钥。密钥对应的加密方法是有线等效保密(Wired Equivalent Privacy,WEP),用以防止非法用户窃听或侵入无线网络。
共享密钥认证的过程只有四个步骤,在认证前,需要在STA和AP上都配置相同的密钥,否则是不能认证成功的。
(1)认证的第一步,是由STA向AP发送一个认证请求。
(2)接着,AP在收到请求后会生成一个挑战短语,再将这个挑战短语发送给STA,假设这个挑战短语是A。
(3)然后,STA会用自己的密钥Key将挑战短语进行加密,加密后再发给AP,假设加密后变为了B。
(4)最后,AP收到STA的加密后信息B,用自己的密钥Key进行解密。只要STA和AP上的密钥配置的一致,解密出来的结果就会是A,AP会将这个结果与最开始发给STA的挑战短语进行对比,发现结果一致,则告知STA认证成功,结果不一致则就会认证失败。由于已经WEP已经不再安全,所以共享密钥认证方式已经停用。
两种认证机制的大概过程如下:
2.1.2 接入认证
WPA PSK认证( Pre-shared key)和802.1X EAP认证都是接入认证。
2.2 安全策略
所以之前我们在配置路由器的时候会有这些配置项:
3. 关联阶段
当AP向STA返回认证响应信息,身份认证获得通过后,进入关联阶段。
(1)STA向AP发送关联请求;
(2) AP 向STA返回关联响应。
至此,接入过程才完成,STA初始化完毕,可以开始向AP传送数据帧。