蓝牙学习七(MAC地址)

news2024/12/23 23:42:00

1.简介

        一个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(可解析私密地址)。关系如下图:

 2.公共设备地址Public Device Address

        在通信系统中,设备地址是用来唯一识别一个物理设备的。如TCP/IP网络中的MAC地址、传统蓝牙中的蓝牙地址等等。对设备地址而言,一个重要的特性,就是唯一性(或者说一定范围内的唯一性),否则很有可能造成很多问题。蓝牙通信系统也不例外。

        对经典蓝牙(BR/EDR)来说,其设备地址是一个48bits(6字节)的数字,称作“48-bit universal LAN MAC address”(和电脑的MAC地址一样)。正常情况下,该地址需要向IEEE申请购买。通过付费,来保证地址的唯一性。这种地址分配的方式,在BLE中也保留了下来,也就是Public Device Address(公共设备地址)。Public Device Address由24-bit的company_id24-bit的company_addigned组成,如下图所示:

        高24位公司标示低24位公司内部自己赋值

3.随机设备地址 Random Device Address

        目前而言,只有Public Device Address明显不够用了,有如下原因:

  1. Public Device Address需要向IEEE购买。虽然不贵,但是一笔不小的开销
  2. Public Device Address的申请与管理是相当繁琐、复杂的一件事情,再加上BLE设备的数量众多,导致维护成本巨大
  3. 安全因素。BLE很大一部分的应用场景是广播通信,这意味着只要知道设备的地址,就可以获取所有的信息,显然是不安全的。因此,固定的设备地址,加大了信息泄漏的风险

        为了解决上述问题,BLE协议新增了一种地址:Random Device Address(随机设备地址),即设备地址不是固定分配的,而是在设备启动后随机生成的。根据不同的目的,Random Device Address分为Static Device Address(静态设备地址)Private Device Address(私密设备地址)两类。 

3.1 静态设备地址 Static Device Address

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

Static Device Address静态设备地址的特性可总结为:

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

Static Device Address静态设备地址的使用场景可总结为:

  1. 46bits的随机数,可以很好的解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。
  2. 地址随机生成,可以解决Public Device Address申请所带来的费用和维护问题。 

3.2 私密设备地址 Private Device Address

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

3.2.1 不可解析私密地址 Non-resolvable Private Address

        Non-resolvable Private Address和Static Device Address类似,不同之处在于,Non-resolvable Private Address会定时更新。更新的周期是由GAP规定的,称为T_GAP(private_addr_init),建议值是15分钟。其格式如下:

         特征可总结为:

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

注:Non-resolvable private address在实际中并不常用,因为地址经常变动,所以应用场景不多。

3.2.2 可解析私密地址 Resolvable Private Address

        Resolvable Private Address 是通过一个随机数和一个称为identity resolving key(IRK)的密码生成的。因此只能被拥有相同IRK的设备扫描到,可以防止被未知设备扫描和跟踪。格式如下:
 

 特征如下:

  1. 由两部分组成:
  • 高位24bits是随机数部分,其中最高两个Bit为"10",用于标识地址类型
  • 低位24bits是随机数和IRK经过hash运算得到的hash值,运算的公式为hash=ah(IRK,prand)。
  1. 当对端BLE设备扫描到该类型的蓝牙地址后,会使用保存在本机的IRK,和该地址中的prand,进行相同的hash运算,并将运算结果和地址中的hash字段比较。只有相同的情况,在进行后续的操作。这个过程被称为resolve(解析)。这也是Non-resolvable private address/Resolvable private address命名的由来。如果不同则继续用下一个IRK做上面的过程,直到找到一个关联的IRK或一个也没找到。
  2. T_GAP(private_addr_init)为周期,定时更新。哪怕在广播、扫描、已连接等过程,也可能改变。
  3. Resolvable private address不能单独使用。如果需要使用相同该类型的地址,设备要同时具备Public Device Address或者Static device address中的一种。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用 java 实现【二叉搜索树】

文章目录搜索树概念1. 查找操作2. 插入操作3. 删除操作4. 以上三种操作的测试5. 性能分析搜索树概念 二叉搜索树 又称 二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的 左 子树 不为空,则 左 子树上所有节点的值…

自定义神经网络入门-----Pytorch

文章目录目标检测的相关评价指标IoUmAP正例和负例准确率P召回率R准确率ACCP-R曲线--APnn.Module类全连接层感知机类使用nn.Sequential进行构造使用randn函数进行简单测试损失函数nn.functionalnn.optim模型处理网络模型库torchvision.models模型Fine-tune和save参考目标检测的相…

【STM32F4系列】【HAL库】【自制库】模拟IIC从机

介绍 本项目是利用GPIO模拟I2C的从机 网上常见的是模拟I2C主机 本项目是作为一个两个单片机之间低速通信的用法 协议介绍请看,传送门 模拟主机请看这里 从机 功能 实现I2C从机端读写寄存器 编程思路 I2C的从机实现比起主机来麻烦一些 因为SCL的时序是由主机发送,从机需…

【nowcoder】笔试强训Day12

目录 一、选择题 二、编程题 2.1二进制插入 2.2 查找组成一个偶数最接近的两个素数 一、选择题 1.以下方法,哪个不是对add方法的重载? public class Test {public void add( int x,int y,int z){} } A. public int add(int x,int y,float z){return 0;} B.…

Go语言设计与实现 -- WaitGroup, Once, Cond

WaitGroup 我们可以通过 sync.WaitGroup 将原本顺序执行的代码在多个 Goroutine 中并发执行,加快程序处理的速度。 我们来看一下sync.WaitGroup的结构体: type WaitGroup struct {//保证WaitGroup不会被开发者通过再赋值的方式复制noCopy noCopy// 64-…

重学redux之Redux-Thunk高级使用(三)

这是第三篇了,哥们,如果没看过前两篇,可以去看看之前的两篇,有基础的可以直接看,不多说,直接开讲 默认情况下,Redux 的动作是同步调度的,对于任何需要与外部 API 通信或执行副作用的应用程序来说都是一个问题。 Redux 允许中间件位于被分派的动作和到达 reducer 的动…

抖音本地生活的蓬勃发展,离不开服务商的推波助澜

抖音本地生活,已经势不可挡01 抖音公布本地生活成绩单,交易额增长30倍抖音经过6年时间的演变,产品功能日益丰富,已经从内容消费,延续到线上购物、线下团购等领域,从最初的记录美好生活,成为一种…

统计分析工具-FineReport配置SQL Server外接数据库(2)

1. 配置外接数据库 1.1 外接数据库配置入口 外接数据库的配置入口,有三种形式: 1)超级管理员第一次登录数据决策系统时,即可为系统配置外接数据库。如下图所示: 2)对于使用内置数据库的系统,管…

站点能源低碳目标网,助力网络碳中和 | 华为发布站点能源十大趋势

2022年12月29日,华为今天举办站点能源十大趋势发布会并重磅发布白皮书。发布会上,华为站点能源领域总裁尧权全面解读了能源数字化、低碳网络、站点供电绿色化等站点能源十大趋势。 尧权表示,2022年是不平凡的一年,全球能源危机背…

十、通过网络服务将esp8266引脚状态显示在网页中

ESP8266在服务器模式运行时,我们可以使用浏览器来显示它的引脚状态。 1、实现目标 学习如何通过esp8266建立基本网站,在该网站上实时显示esp8266的引脚值。 2、原理图 FLASH按键与D3引脚连接,可以通过FLASH按键改变D3引脚的电平。当没有按…

中型企业适合用什么样的CRM管理软件,求推荐?

中型企业适合用什么样的CRM管理软件,求推荐? CRM管理软件是现代企业必不可少的管理软件之一,很多企业都会选择CRM管理软件来经营客户资源,但能够精准地选择到适合自己企业的CRM管理软件则是困难的。 中型企业需要与自己业务流程…

数据可视化之finebi和tableau电力系统分析实现对比

通过一个电力系统简单案例,尝试实际执行finebi和Tableau数据可视化设计的各项基本步骤,以熟悉Tableau和finebi数据可视化设计技巧,提高大数据可视化应用能力。 一、工具/准备工作 在开始本实验之前,请认真阅读课程的相关内容。 …

写给小白的TensorFlow的入门课

文章目录前言学习AI的必要性和业务的关系最简单的例子要做什么?数据图形化展示构建计算图形计算图形最小化误差MacOS 中配置运行环境安装验证安装简单模型训练识别数字图片的模型训练Softmax Regression算法大概步骤大致算法实现结语参考链接前言 深度学习就是从大…

抖音电商发布2023年食品健康行业8大趋势,新减负、新养生等成为关键词

2022抖音电商食品健康峰会暨年货盛典在杭州成功举行。抖音电商食品健康行业还联合欧睿共同发布了《2023年度食品健康行业趋势洞察报告》。图片来源:抖音电商抖音电商食品健康行业负责人白华在会上透露,过去一年,抖音电商食品健康行业呈现出有…

虚拟机数据库改密码ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘

注:原因为MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_sha2_password&a…

Java实现多线程

目录 基本概念 1、程序、进程、线程 2、使用线程的优点 3、线程的分类 4、线程的生命周期 多线程的实现方法 1、继承Thread类 2、实现Runnable接口 3、实现Callable接口 4、使用线程池 线程同步 1、同步代码、同步方法 2、同步机制中的锁 3、锁(Lock&…

【电商】电商后台---采购管理模块

从供应商的管理到合同的管理,再到商品系统的模块的介绍、商品价格与税率维护策略,不知不觉已经完成了几篇文章,前期的准备工作完成后,接下来就应该进入到采购管理模块了。 几天来一直在构思如何写,写的内容让大家看过觉…

使用天地图加载Geoserver的图层

一、写在前面 在项目中往往使用地图作为底图(比如 天地图卫星图等),再其上覆盖你的通过geoserver发布自定义图层。本文记录了我的实现方法。 二、过程 2.1 我遇到的难题 遇到难题1:使用无人机拍摄制作的正射影像图有几百MB甚至1个G,直接展示图…

YOLO系列目标检测算法——PP-YOLOE

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

深入浅出面向对象设计模式(Java)

设计模式是什么 设计模式是面向对象的一种思想。 设计模式的基本原则? 单一职责原则开放封闭原则里氏替换原则接口隔离原则依赖翻转原则 基本分类和为什么分为3类? 创建型(怎么优雅创建对象) 结构性(对象的结构&am…