BLE中的设备地址
简介
设备地址,也叫MAC地址。在BLE中对设备地址分了很多类别,但实际使用的MAC地址只有有四种:
- Public Device Address :公共设备地址
- Static Device Address:静态设备地址
- Non-resolvable Private Address:不可解析私有地址
- Resolvable Private Address:可解析私有地址
Public Device Address-公共设备地址
特点为:
-
需要向IEEE购买,然后全球唯一。购买后可在官网IEEE Registration Authority: Assignments上查询对应厂商信息
-
全球唯一,在设备的整个生命周期都不会改变。
-
长度48bit,也就是6个byte。其中Company Assigned为公司内部分配,Company ID为公司向IEEE申请分配。
应用场景:
成本较高,随着蓝牙设备增多后ID也越来越不够用。除了少数高端产品,想不出还有谁会用。
Static Device Address-静态设备地址
特点为:
- 长度保持六个byte,其中最高两个bit固定为0b11,剩余的46bits是一个随机数,不能全为0,也不能全为1
- 在一个上电周期内保持不变,下一次上电的时候可以改变,但一般不变。如果变了,需要重新配对。
应用场景:
非常广泛的应用,成本低,而且大部分为确定一个地址后不会再改变。
Non-resolvable Private Address-不可解析私有地址
- 长度保持六个byte,其中最高两个bit固定为0b00,剩余的46bits是一个随机数,不能全为0,也不能全为1
- 周期性改变,Spec推荐15分钟更新一次,但不要超过1个小时。由于地址随机,无法追踪,无法保持连接,无法配对。
应用场景:
Beacon类会用,不连接,不配对。只靠广播来传递数据。
Resolvable Private Address-可解析私有地址
-
长度保持六个byte,高位24bits是随机数部分,记为prand,其中最高两个Bit为0b10,用于标识地址类型
-
低位24bits是随机数和IRK经过hash运算得到的hash值,运算的公式为hash=f(IRK,prand)
IRK为设备经过配对绑定后得到的hash密钥。主从设备断连后,主机可以通过这扫描到的设备地址中的prand使用IRK进行哈希运算。然后确认哈希结果是否与设备地址中的hash值匹配,由此来是否为配对绑定过的设备。
-
周期性改变,Spec推荐15分钟更新一次,但不要超过1个小时。由于地址在配对绑定后可以解析,因此可以追踪,可以保持连接。
应用场景:
有安全要求的会用,比如苹果手表。一定要进行配对绑定。
总结
该文章为总结性笔记,更详细说明参考网上其他资料。