蓝牙协议分析(6)_BLE地址类型
作者:wowo 发布于:2016-6-7 11:40
分类:蓝牙
1. 前言
也许关注BLE的同学都注意到了,BLE设备有多种类型的设备地址,如Public Device Address、Random Device Address、Static Device Address、Private Device Address等等。如果不了解内情,大家肯定会被它们绕晕。不过存在即合理,这样看似奇怪的设计,实际上反映了BLE的设计思路以及所针对的应用场景。让我们通过本文一窥究竟。
2. 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。它们的关系如下所示:
Public Device
+---> Address
+-------------+ |
| | |
| BLE | |
| Device +---+ or/and Static Device
| | | +--> Address
+-------------+ | |
| Random Device |
+----> Address +-+ or Non-resolvable
| +-> private address
| |
| Private Device | or
+--> Address +--+
| Resolvable
+-> private address
3. Public Device Address
在通信系统中,设备地址是用来唯一识别一个物理设备的,如TCP/IP网络中的MAC地址、传统蓝牙中的蓝牙地址等。对设备地址而言,一个重要的特性,就是唯一性(或者说一定范围内的唯一),否则很有可能造成很多问题。蓝牙通信系统也不例外。
对经典蓝牙(BR/EDR)来说,其设备地址是一个48bits的数字,称作"48-bit universal LAN MAC addresses(和电脑的MAC地址一样)“。正常情况下,该地址需要向IEEE申请(其实是购买[1],呵呵!)。企业交钱,IEEE保证地址的唯一性,皆大欢喜。
当然,这种地址分配方式,在BLE中也保留下来了,就是Public Device Address。Public Device Address由24-bit的company_id和24-bit的company_assigned组成,具体可参考蓝牙Spec中相关的说明[2]。
4. Random Device Address
但是,在BLE时代,只有Public Device Address还不够,有如下原因:
1)Public Device Address需要向IEEE购买。虽然不贵,但在BLE时代,相比BLE IC的成本,还是不小的一笔开销。
2)Public Device Address的申请与管理是相当繁琐、复杂的一件事情,再加上BLE设备的数量众多(和传统蓝牙设备不是一个数量级的),导致维护成本增大。
3)安全因素。BLE很大一部分的应用场景是广播通信,这意味着只要知道设备的地址,就可以获取所有的信息,这是不安全的。因此固定的设备地址,加大了信息泄漏的风险。
为了解决上述问题,BLE协议新增了一种地址:Random Device Address,即设备地址不是固定分配的,而是在设备设备启动后随机生成的。根据不同的目的,Random Device Address分为Static Device Address和Private Device Address两类。