Link layer 1.3- 蓝牙地址

 

蓝牙地址介绍...



今天开始记录下Linklayer中各个小节的学习笔记。

蓝牙地址有两大种类:Public Device Address 和 Random Device Address,他们的长度都是48bit,一个设备至少需要一种类型的地址,也可以同时拥有两种地址。

1.3.1 Public Device Address

这类地址需要花钱跟IEEE(http://standards.ieee.org/develop/regauth/oui/)买,IEEE它的客户公司分配一个地址范围(Company_assigned)避免地址冲突,也是做了好事。48 bit地址中的前24bit是company assigned),company_assigned有三种,最便宜的也需要2655 美元,IEEE光卖这个就赚死了。2的24次方个2665美元啊,天文数字。后24位就是各个公司自由发挥的了。

有一种company_assigned会list到这个网址http://standards-oui.ieee.org/oui/oui.txt供大家查询,比如我查到Apple申请的ID中有一个是下图这个,在我的iPhone4s里Wifi和蓝牙的地址都是以这个开头的。

当然如果只是自己开发使用,那就无须去购买了,自己设置一个地址就好了。只要保证自己的设备地址不重复就好。要是发布产品的话还是最好有个这样的地址。

1.3.2 Random Device Address

这类地址由分为两种:Static address、Private address

1.3.2.1 Static Device Address

Static address的48个bit是随机生成的,而且需要满足三个条件:

  • 最后两位是1;
  • 所有随机生成的bit不能都是1;
  • 所有随机生成bit不能都是0。


地址可以在每次开机(each power cycle)的时候初始化,但初始化后就不能再变,除非再开关一次(power cycle)电源。注:假如static address改动了,那么远端设备存储的地址就会变为无效,而且用这个地址做的连线动作也会失败。

1.3.2.2 Private Device Address Generation

Private Device Address又分类下面两个子类

  • Non-resolvable private address
  • Resolvable private address生成的Non-resolvable private address要满足下面四个条件:
最后两个bit是0

所有随机生成的bit不能全是0

所有随机生成的bit不能全是1

地址不能跟public address相同



生成Resolvable Private Address,必须已经拥有Local IRK (Identity Resolving Key)或是Peer IRK。RPA是由IRK 和随机生成的24bit数字来生成的。随机生成的数字称作prand,prand应该满足下面的条件:

最后两位是0和1

所有随机生成的bit不能全是0

所有随机生成的bit也不能全是1



上图中的Hash是用一个函数来生成的(函数定义在Vol3.partH。2.2.2),输入参数是IRK和prand:hash = ah(IRK,prand),之后prand和hash组合成RPA

randomAddress = hash||prand

Hash的LSB会成为RPA的LSB,prand的MSB变成RPA的MSB。

1.3.2.3 Private Device Address Resolution

RPA是可以被resolved的,如果对方设备有IRK的话。如果RPA被resolve,那么远端设备和该设备就可以通信。

RPA分成24bit的prand和24bit的hash。在本地再用同样的算法再计算一次hash value:

localHash = ah(IRK,prand)

把localHash跟hash做对比,如果一样的话,那这个RPA就resolve了。

如果一个设备有多个已存的IRK,那它就只能把每个IRK都重复上面的算法来算一次,然后看是否能跟hash match上。

注:如果resolve 这个地址需要很久时间,超过了T_IFS(Time Inter Frame Space,Time interval between consecutive
packets on same channel index , 150us)的话,设备是可以回应下一个event的。


    关注 蓝牙笔记


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册