BLE蓝牙地址规则【摘抄】

wen sir · 391次点击 · 11个月前


一个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。

它们的关系如下所示:

image.png


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

image.png

Static Device Address的特征可总结为:

1)最高两个bit为“11”

2)剩余的46bits是一个随机数,不能全部为0,也不能全部为1。

3)在一个上电周期内保持不变。

4)下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。


如果改变,上次保存的连接等信息,将不再有效。


Static Device Address的使用场景可总结为:

1)46bits的随机数,可以很好地解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。

2)地址随机生成,可以解决Public Device Address申请所带来的费用和维护问题。


3

Non-resolvable private address和Static Device Address类似,不同之处在于,Non-resolvable private address会定时更新。

更新的周期称是由GAP规定的,称作T_GAP(private_addr_int) ,建议值是15分钟。

其格式如下:

image.png

特征可总结为:

1)最高两个bit为“00”

2)剩余的46bits是一个随机数,不能全部为0,也不能全部为1。

3)以T_GAP(private_addr_int)为周期,定时更新。

注1:Non-resolvable private address有点奇怪,

其应用场景并不是很清晰。地址变来变去的,确实是迷惑了敌人,但自己人不也一样被迷惑了吗?

因此,实际产品中,该地址类型并不常用。


4

Resolvable private address比较有用,它通过一个随机数和一个称作identity resolving key (IRK) 的密码生成,

因此只能被拥有相同IRK的设备扫描到,可以防止被未知设备扫描和追踪。其格式如下:

image.png

特征如下:

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)为周期,定时更新。哪怕在广播、扫描、已连接等过程中,也可能改变。

4)Resolvable private address不能单独使用,因此需要使用该类型的地址的话,

设备要同时具备Public Device Address或者Static Device Address中的一种。


被收藏 1  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站