【原创】边做边学 之 BLE系列 - 链路层1

目录

1 链路层(LL: Link Layer)状态机

2 链路层地址

2.1 Public Device Address   

2.2 Random Device Address


注:未经注明,本文讲述的均是蓝牙协议5.2。

1 链路层(LL: Link Layer)状态机

链路层定义了一个状态机,如下图。

注:上图摘自《Bluetooth Core Specification》

        BLE链路层把所有的功能放到7种不同的状态中,在不同的状态分别执行不同的功能。这7种状态分别是:

        待机(Standby)状态:待机状态其实就是空闲状态,就是什么也不干,既不发包也不收包,但又时刻准备着可以切换到其它状态。

        广播(Advertising)状态:处于这个状态时,BLE的链路层不停往外发广播包,并且处理其它设备对这些广播包的响应或请求。发起广播的设备称为Advertiser。需要注意的是,收发广播数据使用专门的广播物理信道,也就是信道1、6和11(对应的链路层编号却分别是37、38、39)。

        扫描(Scanning)状态:这个状态和广播状态是对应的,它是专门用来接收Advertiser的广播数据的。处于扫描状态的设备称为Scanner。

        发起(Initiating)状态:这个状态的作用是监听Advertiser的广播数据,并且向Advertiser发起连接(Connection)。处于发起状态的设备称为Initiator。

        连接(Connection)状态:此状态表示设备已经组网成功,可以使用其它非广播信道进行信息交互了。在连接状态中,设备有两种角色:Master和Slave。发起连接的设备,也就是Initiator,进入连接状态后自动变成Master;而在连接前,发出广播数据的Advertiser则自动成为Slave。连接建立起来后,通信时序控制由主机来控制。

        同步(Synchronization)状态:该状态通过广播通道侦听一定区域内的BIS(Broadcast Isochronous Streams)(比如音频数据流)。处于同步状态并且正在接收同步数据包的设备称为Synchronized Receiver,这个状态的重点是监听,并且也只能监听而不能发送。通过监听使自己能够同步到这些固定间隔的广播序列中,从而获取完整的信息

    同步广播(Isochronous Broadcasting)状态:通过广播通道发送BIS(Broadcast Isochronous Stream)。它和同步(Synchronization)状态是相对应的。处于该状态的设备称为Isochronous Broadcaster。

另外需要注意两点:

  1. 链路层的每一个状态机实例一次只能处于一个状态,但是对于具体的BLE设备而言,其链路层可以同时拥有多个状态机实例,每个状态机实例可以同时处于不同的状态。但是两个设备间不应该有多于一个Connection(注:这是指两台设备都支持多状态机实例的情况)。
  2. 并不是所有的BLE设备的链路层都必须支持以上7种状态,而是可以根据设备特点有选择的支持部分状态。

2 链路层地址

        一个BLE设备,可以使用两种类型的地址(一个设备可同时具备两种地址):Public Device Address和Random Device Address,这两种地址均为48比特。

        Random Device Address可分为Static Device Address和Private Device Address两类。其中Private Device Address又可以进一步细分为Non-resolvable Private Address和Resolvable Private Address。

2.1 Public Device Address   

        Public Device Address传承自经典蓝牙(BR/EDR)。正常情况下,该地址需要向IEEE申请和购买。企业交钱,IEEE保证地址的唯一性。具体可参考蓝牙规范及IEEE 802-2014中相关的说明。

2.2 Random Device Address

        Random Device Address是BLE新增的,顾名思义,不是固定分配的,而是在设备启动后随机生成的。BLE之所以新增它,主要有以下几点考虑:

        1)Public Device Address需要向IEEE购买。对于成本控制比较严格的BLE设备来说是一笔不可忽视的开销。

        2)Public Device Address的申请与管理比较繁琐,BLE设备数量众多,导致维护成本增大。

        3)安全因素。BLE很大一部分的应用场景是广播通信,这意味着只要知道设备的地址,就可以获取所有的信息,这是不安全的。因此固定的设备地址,加大了信息泄漏的风险。

        根据不同的目的,Random Device Address可细分为Static Device Address和Private Device Address两类。

Static Device Address:

        Static Device Address是设备上电时随机生成的地址,特点是:每次重新上电时才可以改变(上电时也可以选择保持不变)。如果改变,上次保存的连接信息,将不再有效。它的地址格式如下图,最高两个bit为“11”, 剩余的46bits是一个随机数,不能全部为0,也不能全部为1。

注:上图摘自《Bluetooth Core Specification》

Private Device Address

        Private Device Address通过定时更新和地址加密两种方法,提高蓝牙链接的可靠性和安全性。根据地址是否加密,Private Device Address又进一步细分为Non-resolvable private address和Resolvable private address。

        其中,Non-resolvable private address会定时更新,哪怕在广播、扫描、已连接等过程中,也可能改变。更新的周期是由GAP(generic access profile)规定。建议值是15分钟。

注:上图摘自《Bluetooth Core Specification》

        而Resolvable private address则通过一个随机数(Prand)和一个称作Identity Resolving Key (IRK) 的密码生成,因此只能被拥有相同IRK的设备扫描到,这样可以防止被未知设备扫描和追踪。

注:上图摘自《Bluetooth Core Specification》

        Resolvable Private Address的低24 bits由Prand和IRK经过HASH运算而来。当对端设备扫描到此地址类型时,对端设备会用扫描到的Prand部分和本地的IRK去做同样的HASH运算,再将HASH的结果和RPA中的低24 bits比较,若相等,则认为这个地址已经被解析(Resolved),才能进行后续的操作。如果一个设备有多个本地IRK,那么它会逐一的进行运算和比对,直到比对成功或者是所有的本地IRK都已经比对完。


版权声明
        所有原创文章(未进行特殊标识的均属于原创) 的著作权属于本人
        所有转载文章(标题注明[转]的所有文章) 的著作权属于原作者。
        所有译文文章(标题注明[译]的所有文章) 的原文著作权属于原作者,译文著作权属于本人。

转载注意事项
        除注明外,所有文章均采用 Creative Commons BY-NC-ND 4.0(自由转载-保持署名-非商用-禁止演绎)协议发布。
        你可以在非商业的前提下免费转载,但同时你必须:
                保持文章原文,不作修改。
                明确署名,即至少注明 作者:BoatOnMCU 字样以及文章的原始链接,且不得使用 rel="nofollow" 标记。
                商业用途请电话联系本人。
        微信公众号转载一律不授权,除非联系本人并获得授权。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值