当前位置:网站首页 > 编程语言 > 正文

蓝牙地址是什么样的(蓝牙地址是什么意思)



蓝牙地址(Bluetooth Address),又称为蓝牙设备地址(Bluetooth Device Address,BD_ADDR),是蓝牙设备在无线通信中用于唯一标识自身的一种地址。这个地址通常是一个 48 位的唯一标识符,采用 EUI-48(Extended Unique Identifier 48-bit)格式。

通常以六组十六进制数字表示,每组包含两个字符,中间以冒号或连字符分隔。例如,一个蓝牙地址的格式可能是:00:1A:2B:3C:4D:5E。

为区分不同的蓝牙设备,一般使用蓝牙地址和地址类型进行标识蓝牙设备。

地址类型包括public device address 和 random device address,两者均为 48 bit长度。其中,经典蓝牙(BR/EDR)设备只有 public 地址,BLE 设备可以使用其中一种也可以使用两种。

877daea4ed1c4264a51d6a0ce2139c2d.png

对经典蓝牙来说,蓝牙地址应是一个符合 IEEE 802-2014 标准第 8.2 章节(“通用地址”)的 48 位扩展唯一标识符(EUI-48)(IEEE SA - IEEE 802-2014)。

创建有效的 EUI-48 需要从 IEEE 注册管理机构获得以下 MAC 地址块类型之一。

• MAC Address Block Large (MA-L)

• MAC Address Block Medium (MA-M)

• MAC Address Block Small (MA-S)

具体申请详情请参考 IEEE SA - Registration Authority,也就是公司向 IEEE 申请购买一个唯一的蓝牙地址号段,一般是 3 字节的长度。

8a22de975deb46aeaeb3ef6cf8f12d8d.png

Welcome to The Public Listing For IEEE Standards Registration Authority 这里可以查看已经注册的公司信息,包括公司号段(company id)和公司地址信息。

88d4bdd6d44d415b985c8dc604e0ce3a.png

BLE 设备大部分使用随机地址,一方面随机地址不需要花钱购买,另一方面私密性更好,不容易被追踪。

2.2.1 Static device address

static address 是随机生成的 48-bit 地址,有如下特点:

1. 低位46bits 随机数,不能全为0,也不能全为1。

2. 最高两个 bit 为 “11”。

3. 每次重新上电都可以改变,上电周期内保持不变

a1ff9856d7034bbd890d9df09bef9f4c.png

2.2.2 Private device address

与 Public Device Address 不同,Private Device Address 是在设备运行时动态生成的,因此具有更高的随机性和隐私性。

Private Device Address 分为两种类型:

2.2.2.1 Resolvable private address(RPA,可解析私有地址)

这种地址允许其他设备在一定条件下解析出设备的真实身份。通过一个随机数和 IRK( identity resolving key) 加密生成。

859770d44af94771a3e85d7e97a11a30.png

RPA 有如下特点:

  1. 高24bits(prand)是随机生成的,其中最高两个bit为“10”; 

 2. 低位24bits,是IRK和 随机数高prand通过hash运算hash = ah(IRK, prand)得到的。

3. RPA 最终是由 prand 和 hash 连接起来组成的, randomAddress = prand || hash

4. 可以周期变化,变化周期可以通过 host 指定,一般默认是 15 分钟

d3ee9304c7d447688a0c80e927f2ca09.png

2.2.2.2 Non-resolvable private address(NRPA 不可解析私有地址)

这种地址不提供身份解析的能力,其他设备无法通过这个地址获知设备的真实身份。这种地址适用于一些场景,例如广告中使用的地址,旨在提供更高的隐私保护。

NPRA有如下特点:

1. 低位46bits 随机数,不能全为0,也不能全为1。

2. 最高两个 bit 为 “00”。

53bcd8713ab547febaadf0f92f1e7f22.png

2.2.2.3 Private device address resolution

解析 RPA 地址需要用到配对过程中对端分发的 IRK,然后使用同样的 hash 算法,将 IRA 和RPA中的 prand 部分作为入参进行计算localHash = ah(IRK, prand),最后将计算出来的 lcoahHash跟 RPA 地址中的 hash 部分进行比较,如果相同则认为解析成功,否则则失败。

non-resolvable private address 是不可解析的

大家可能在以前的core spec 中看到 bluetooth address 的相关介绍,有提到company id 的概念,也就是本文中提到的的public 地址的蓝牙地址号段,这个要跟 Link Layer 消息 LL_VERSION_IND的company_identifer区别开来:

2103c9988d2b46268ff512fc4dc9dd23.png

这个是向 SIG 申请的一个 2字节长度的 Id,一般是用来表明这个蓝牙芯片是哪个厂商的,详情请参考 Assigned Numbers

对于public 地址,产品厂商一般会在产线根据自己购买的号段生成一个地址

对于 random地址,一般是生成一个 static device address 地址,然后将地址写入flash的指定位置,在开机上电后去读取地址然后写给 controller,也有时候在读取的时候发生读取失败或者读到非法的地址值,这个时候可能会重新随机生成一个地址

以上是工作过程中的一点总结和经验分享,有错误之处请指出,也欢迎一起探讨。

BLE Core Specification 5.4

 

到此这篇蓝牙地址是什么样的(蓝牙地址是什么意思)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 接口415错误(接口报415)2025-07-01 12:18:07
  • 颜色代码 转换(颜色代码转换)2025-07-01 12:18:07
  • 打印机共享修复文件(打印机共享失效)2025-07-01 12:18:07
  • linux怎么学 知乎(linux就这么学)2025-07-01 12:18:07
  • 安装虚拟机的详细步骤怎么写(安装虚拟机操作系统的步骤)2025-07-01 12:18:07
  • lda主题模型是什么意思(lda主题模型基本步骤)2025-07-01 12:18:07
  • plll是什么意思(pllo是什么意思)2025-07-01 12:18:07
  • 回环地址有什么用(环回地址有哪些)2025-07-01 12:18:07
  • 什么叫多级列表(多级列表是干什么的)2025-07-01 12:18:07
  • 条件变量 互斥锁(条件变量为什么要和锁一起用)2025-07-01 12:18:07
  • 全屏图片