第18.2节_地址类型与LL层设备过滤
一、地址类型
二、白名单和Resolving List
三、LL层设备过滤
一、地址类型
学习资料:官方手册
Vol 6: Core System Package [Low Energy Controller volume]
Part B: Link Layer Specification
1.3 Device Address
这篇文章总结得比较好:
蓝牙协议分析(6)_BLE地址类型
http://www.wowotech.net/bluetooth/ble_address_type.html
BLE地址分为2大类:
1. 公有地址(Public Device Address):
这需要向IEEE购买,并且容易被伪造。
2. 随机地址(Random Device Address):
这又分为这2类:静态地址、随机地址。
2.1 静态地址(Static address):
每次上电周期,设备都可以选择一个随机数作为地址,在该上电周期中地址保持不变。
下一次上电时,设备可以继续使用上次的地址,也可以选择新的随机地址。
该类地址的最高2位为0b11。
不用购买,也容易被伪造。
2.2 私有地址(Private address):
这类地址每隔几分钟交换一次,一般建议是15分钟。
这又分为这2类:不可解析私有地址、可解析私有地址。
2.2.1 不可解析私有地址(Non-resolvable private address):
除最高2位是0b00外,其他46位都是随机数。
其应用场景并不是很清晰,地址变来变去的,确实是迷惑了敌人,但自己人不也一样被迷惑了吗?因此,实际产品中,该地址类型并不常用。
2.2.2 可解析私有地址(Resolvable private address):
最高2位是0b01,其余部分见下图。
在上一节视频里讲解过该类地址。

随机地址这一类目下,有3种地址(看上图中的3个红色箭头),它们可以根据最高2位互相区分。
但是公有地址和随机地址之间,无法通过地址值来区分。
因此,在发送的数据中会有一位被用来标记地址类型。
比如广播数据包中,头部信息中有一位“TxAdd”或“RxAdd”,0表示公有地址,1表示随机地址:

之前我们说过为了防止被冒充、为了隐私,建议使用“可解析私有地址”。
一个设备,它可能有公有地址,但是它仍可同时使用“可解析私有地址”。
一个设备,它上电后使用了静态地址,但是它仍可同时使用“可解析私有地址”。
也就是说,一个设备它可以使用变来变去的“可解析私有地址”,但是我们要称呼它时需要一个相对固定的地址。这个相对固定的地址,就叫“Identity Address”,它是公有地址或静态地址。

白名单里保存的都是“Identity Address”,“Identity Address”可能是公有地址也可能是静态随机地址,所以还需要“Address Type”来分辨它是哪一类。
二、白名单和Resolving List
学习资料:官方手册
Vol 2: Core System Package [BR/EDR Controller volume]
Part E: Host Controller Interface Functional Specification
7 HCI Commands and Events
7.8 LE Controller Commands
这篇文章总结得比较好:
蓝牙协议分析(8)_BLE安全机制之白名单
http://www.wowotech.net/bluetooth/ble_white_list.html
LL层可以根据设备的地址,过滤掉一些设备,免得频繁打扰Host导致浪费电量。
过滤设备,要借助于白名单。
白名单是一个列表,每一个表项中含有“Device Identity Address”和“Address Type”:
Device Identity Address:设备的公有地址或静态地址;
Address Type:设备的地址类型
为了防止别的设备冒充白名单里的设备,可以使用“可解析地址”。Controller为了能够解析地址,需要有一个“Resolving List”。
白名单和“Resolving List”的作用在上一节视频里介绍过,Host可以通过命令在白名单和“Resolving List”中增加、删减项目。

1. 白名单操作命令:

2. “Resolving List”操作命令:

三、LL层设备过滤
学习资料:官方手册
Vol 6: Core System Package [Low Energy Controller volume]
Part B: Link Layer Specification
4.3 Link Layer Device Filtering
Vol 2: Core System Package [BR/EDR Controller volume]
Part E: Host Controller Interface Functional Specification
7 HCI Commands and Events
7.8 LE Controller Commands
7.8.5 LE Set Advertising Parameters Command
7.8.10 LE Set Scan Parameters Command
7.8.12 LE Create Connection Command
LL层可以根据设备的地址,过滤掉一些设备,免得频繁打扰Host导致浪费电量。
LL层过滤设备的策略有如下3种,它们都使用同一个白名单:
1. 广播过滤策略(Advertising Filter Policy)
该策略用来决定广播设备的链路层,如何处理其他设备发来的扫描请求、连接请求。
Host可以发出下面的命令设置Controller的Advertising Filter Policy:

Advertising_Filter_Policy的含义如下:
0x00,禁用白名单机制,允许任何设备连接和扫描。
0x01,允许任何设备连接,但只允许白名单中的设备扫描。
0x02,允许任何设备扫描,但只允许白名单中的设备连接。
0x03,只允许白名单中的设备扫描和连接。
2. 扫描过滤策略(Scanner Filter Policy)
该策略用来决定处于扫描态的设备的链路层,如何处理其他设备发来的广播包。
Host可以发出下面的命令设置Controller的Scanner Filter Policy:

Scanning_Filter_Policy的含义如下:
0x00,禁用白名单机制,接受所有的广播包(除了那些目的地址不是该设备的directed advertising packets)。
0x01,只接受在白名单中的那些设备发送的广播包(除了那些目的地址不是该设备的directed advertising packets)。
0x02,Extended Scanner Filter policies相关,暂时不介绍。
0x03,Extended Scanner Filter policies相关,暂时不介绍。
3. 发起者过滤策略(Initiator Filter Policy)
该策略用来决定怎么去连接对端设备:要Host指定,还是自动连接白名单中的设备。
Host可以发出下面的命令设置Controller的Initiator Filter Policy:

Initiator_Filter_Policy的含义如下:
0x00,禁用白名单机制,使用Host提供的Peer_Address_Type and Peer_Address指定需要连接的设备。
0x01,连接那些在白名单中的设备,不需要Host提供Peer_Address_Type and Peer_Address参数。
第18.2节_地址类型与LL层设备过滤的更多相关文章
- 第11章 拾遗4:IPv6(1)_报文格式和地址类型
1. IPv4和IPv6协议栈的比较 (1)IPv6取代IPv4,支持IPv6的动态路由协议都属于IPv6协议(如RIPng.OSPFv3). (2)Internet控制消息协议IPv6版(ICMPv ...
- 【Lucene3.6.2入门系列】第04节_中文分词器
package com.jadyer.lucene; import java.io.IOException; import java.io.StringReader; import org.apach ...
- 【Lucene3.6.2入门系列】第05节_自定义停用词分词器和同义词分词器
首先是用于显示分词信息的HelloCustomAnalyzer.java package com.jadyer.lucene; import java.io.IOException; import j ...
- 智能合约语言 Solidity 教程系列2 - 地址类型介绍
Solidity教程系列第二篇 - Solidity地址类型介绍. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是 ...
- 【Lucene3.6.2入门系列】第03节_简述Lucene中常见的搜索功能
package com.jadyer.lucene; import java.io.File; import java.io.IOException; import java.text.SimpleD ...
- 智能合约语言Solidity教程系列2 - 地址类型介绍
智能合约语言Solidity教程系列第二篇 - Solidity地址类型介绍. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你 ...
- IP地址类型
为了适应不同的网络,IP地址空间被分为5类,分别是A.B.C.D和E类,其中A,B,C类最常用,D类用于组播,E类用于科研 IP地址类型 第一字节十进制范围 二进制固定最高位 二进制网络位 二进制主机 ...
- C#_02.12_基础二_.NET类型存储和变量
C#_02.12_基础二_.NET类型存储和变量 一.核心一句:C#程序是一组类型声明(留待后面慢慢体会,现在不是很理解,不强说了) 二.数据类型: 1.预定义了16种数据类型: 其中13种简单数据类 ...
- 蓝牙协议分析(6)_BLE地址类型
1. 前言 也许关注BLE的同学都注意到了,BLE设备有多种类型的设备地址,如Public Device Address.Random Device Address.Static Device Add ...
随机推荐
- centos7.6离线安装mysql5.7(附下载链接)
本来打算直接用原生yum源安装,但是跨国访问网络太慢,只好采用离线安装的方式,原理就是把所需的rpm下载下来再上传服务器安装. 1.rpm文件下载地址: 目录: http://repo.mysql.c ...
- zz阿里妈妈深度树检索技术(TDM)及应用框架的探索实践
分享嘉宾:何杰 阿里妈妈 高级算法专家 编辑整理:孙锴 内容来源:DataFun AI Talk 出品社区:DataFun 注:欢迎转载,转载请注明出处 导读:阿里妈妈是阿里巴巴集团旗下数字营销的大中 ...
- pointcnn
这篇论文先举例子解释了为什么卷积无法直接应用在点云数据上. 如图1, 传统的卷积是作用在2维图像数据上.图像中每个像素的顺序是固定的,也就是说数据是结构化存储的.直接使用conv2d就能从这种潜在的空 ...
- jQuery与IE兼容性问题处理
jQuery虽然是兼容所有主流的浏览器,但实际应用中也会存在很多兼容性的问题.使用IE11+jquery-3.2.1.min.js遇到的问题如: 对象不支持indexOf 在低版本中,1.8写法如下: ...
- 某企业用友U8+中勒索病毒后数据修复及重新实施过程记录
近期某客户中了勒索病毒,虽然前期多次提醒客户注意异地备份,但始终未执行,导致悲剧. 经过几天的努力,该客户信息系统已基本恢复正常运行,现将相关过程记录如下,作为警示. 方案抉择 交赎金解密:风险过高, ...
- 快速了解Electron:新一代基于Web的跨平台桌面技术
本文引用了作者“ ConardLi”的<用JS开发跨平台桌面应用,从原理到实践>一文部分内容,原文链接:segmentfault.com/a/1190000019426512,感谢原作者的 ...
- R语言填充空缺值
在R语言中, imputeMissings包的特点是,如果空值是数值型,则使用median代替,如果使用的是character类型,则使用mode值代替. imputeMissing中,需要的包是im ...
- 混合 App 打开 H5 调试开关
背景 随着现在移动端设备的硬件性能的提高,现在web页面的体验逐渐变得可以接受,现在很多的应用都采用的Hybrid开发模式,一方面有利用了原生设备的API的优势(性能好.用户体验好),另一方面利用了w ...
- iOS 一个项目添加多个TARGET
项目开发中会存在测试.正式等不同环境,需对应不同接口Host地址.项目名称等等配置.如果每次只有一个项目target的话每次打包的时候替换会很麻烦,而且容易出错.所以我们可以通过创建多个不同配置的ta ...
- 基于OceanStor Dorado V3存储之精简高效 Smart 系列特性
基于OceanStor Dorado V3存储之精简高效 Smart 系列特性 1.1 在线重删 1.2 在线压缩 1.3 智能精简配置 1.4 智能服务质量控制 1.5 异构虚拟化 1.6 ...