BLE--地址类型

news/2024/6/29 12:08:38 标签: BLE, 地址类型

一、综述

一个BLE设备,可以使用两种类型的地址(一个BLE设备可同时具备两种地址):Public Device Address和Random Device Address。而Random Device Address又分为Static Device Address和Private Device Address两类。其中Private Device Address又可以分为Non-resolvable Private Address和Resolvable Private Address。它们的关系如下所示:

<a class=BLE地址分类" title="" />

二、Public Device Address

由24-bit的company_id和24-bit的company_assigned组成,需要向IEEE购买。格式如下:

这里写图片描述

三、Random Device Address

选用原因:
1)Public Device Address购买、维护,增加成本。
2)安全因素。BLE很大一部分的应用场景是广播通信,这意味着只要知道设备的地址,就可以获取所有的信息,这是不安全的。

Random Device Address,是在设备设备启动后随机生成的。根据不同的目的,Random Device Address分为Static Device Address和Private Device Address两类。

3.1 Static Device Address

Static Device Address是在设备上电时随机生成的,格式如下图:

这里写图片描述

特性如下:
1)最高两个bit为“11”。
2)剩余的46bits是一个随机数,不能全部为0,也不能全部为1。
3)在一个上电周期内保持不变。
4)下一次上电的时候可以改变,但不是强制的,如果改变,上次保存的连接等信息,将不再有效。

3.2 Private Device Address

Static Device Address通过地址随机生成的方式,解决了部分问题,Private Device Address则更进一步,通过定时更新和地址加密两种方法,提高蓝牙地址的可靠性和安全性。根据地址是否加密,Private Device Address又分为两类,Non-resolvable private address和Resolvable private address。

(1)Non-resolvable private address会定时更新。更新的周期是由GAP规定的,称作T_GAP(private_addr_int) ,建议值是15分钟。其格式如下:

这里写图片描述

特性如下:
1)最高两个bit为“00”。
2)剩余的46bits是一个随机数,不能全部为0,也不能全部为1。
3)以T_GAP(private_addr_int)为周期,定时更新。

Note:地址一直随机变来变去,不知道真实场景应该如何使用。

(2)Resolvable private address比较有用,它通过一个随机数和一个称作identity resolving key (IRK) 的密码生成,因此只能被拥有相同IRK的设备扫描到,可以防止被未知设备扫描和追踪。其格式如下:

这里写图片描述

特性如下:
1)由两部分组成:
高位24bits是随机数部分,其中最高两个bit为“10”,用于标识地址类型
低位24bits是随机数和IRK经过hash运算得到的hash值,运算的公式为hash = ah(IRK, prand)。
2)当对端BLE设备扫描到该类型的蓝牙地址后,会使用保存在本机的IRK,和该地址中的prand,进行同样的hash运算,并将运算结果和地址中的hash字段比较,相同的时候,才进行后续的操作。这个过程称作resolve(解析),这也是Non-resolvable private address/Resolvable private address命名的由来。
3)以T_GAP(private_addr_int)为周期,定时更新。哪怕在广播、扫描、已连接等过程中,也可能改变。


http://www.niftyadmin.cn/n/683162.html

相关文章

RN错误随笔 - Unable to resolve module 'AccessibilityInfo'

错误信息&#xff1a;.React Native 运行报错&#xff1a;Unable to resolve module AccessibilityInfo 可以看到在 异常的返回的JSON 结构中给出了推荐的解决方法 &#xff1a;This might be related to https://github.com/facebook/react-native/issues/4968\n To resolve t…

linux和性能相关的命令及系统性能诊断

author:skatetime:2011-03-09这是我总结的关于linux环境和性能相关的命令&#xff0c;以备查询内容&#xff1a; 一&#xff0e; 命令详解 二&#xff0e; 识别 cpu/io/ 内存 /network 瓶颈&#xff0c;及决方法啊 常用的…

Ubuntu 16.04下搭建samba服务器

一、Ubuntu下安装 sudo apt-get install samba sudo apt-get install smbclient 二、更改配置文件 sudo gedit /etc/samba/smb.conf 在最后添加如下信息&#xff1a; [share] comment Share Folder require password browseable yes path /home/carl/work/cm-h2 creat…

IEEE爬取摘要并翻译成中文

1 # -*- coding: utf-8 -*-2 """3 Created on Thu Oct 18 09:13:32 20184 5 author: Gawen6 7 实现爬取IEEE目标网页上该页所有论文的摘要8 并通过百度翻译api进行翻译9 并将链接与翻译后的摘要存到文本文档中10 其中百度的api的appid以及secertkey需要自己申请…

BLE软件基本框架介绍

BLE设备本身分为Host与Controller&#xff0c;并不是对应两个设备&#xff0c;而是一个设备的层次区分。如下图&#xff08;使用网络复制图片&#xff0c;侵权删&#xff09;&#xff1a; 控制器部分&#xff08;Controller&#xff09;&#xff1a; 1、物理层&#xff08;PHY…

二进制安装kubernetes v1.11.2 (第十一章 node节点部署)

继续前一章部署。 十一、node节点部署 kubernetes node 节点运行了如下组件&#xff1a; flannel docker kubelet kube-proxy 11.1 部署flanneld 请参考 第五章 11.2 安装依赖包 centos&#xff1a; source /opt/k8s/bin/environment.sh for node_ip in ${NODE_IPS[]}doecho &…

insert优化

author&#xff1a;skate time&#xff1a;2010/10/19 insert优化 要想提高insert的速度&#xff0c;首先要知道什么影响insert慢&#xff0c;在执行insert的过程中产生redo和undo&#xff0c;要想提高insert的速 度&#xff0c;在充分利用系统资源的条件下就要尽量减少insert…

oracle碎片

author&#xff1a;skate time&#xff1a;2010-05-31 我们在使用windows的时候&#xff0c;都知道要定期整理磁盘碎片&#xff0c;因为磁盘碎片会影响性能&#xff0c;给管理上带来额外的 负担。那oracle更是如此&#xff0c;当随着数据增加&#xff0c;oracle处理海量数据本…