前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BLE (低功耗蓝牙)协议入门-01-整体介绍

BLE (低功耗蓝牙)协议入门-01-整体介绍

原创
作者头像
九筒网络安全研究社
修改2023-10-13 08:04:12
2.2K0
修改2023-10-13 08:04:12
举报
文章被收录于专栏:车联网/IoT安全

本章介绍蓝牙协议(重点介绍:BLE)的基本特点、版本演进、协议的构成、等基础知识,本章重在了解,目的是对BLE协议有个大概的认知,即了解BLE协议栈的全貌。后续的章节会对每一部分单独进行详细的讲解。

00-蓝牙的历史

  • 蓝牙(英语:Bluetooth),一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由2.4至2.485 GHz的ISM频段来进行通信。1994年由电信商爱立信(Ericsson)发展出这个技术。它最初的设计,是希望创建一个RS-232数据线的无线通信替代版本。它能够链接多个设备,克服同步的问题。
  • 蓝牙技术目前由蓝牙技术联盟(SIG)来负责维护其技术标准,其成员已超过三万,分布在电信、电脑、网络与消费性电子产品等领域。IEEE曾经将蓝牙技术标准化为IEEE 802.15.1,但是这个标准已经不再继续使用。
  • 蓝牙技术联盟 (英语:Bluetooth Special Interest Group,缩写为SIG)拥有蓝牙的商标,负责制定蓝牙规范、认证制造厂商,授权他们使用蓝牙技术与蓝牙标志,但本身不负责蓝牙设备的设计、生产及贩售。
  • 从上表演进史可以得出,4.0之前的版本演进主要在追求通信速度,3.0高速蓝牙达到了24Mbps;4.0及其之后的版本演进主要在追求低功耗/低成本等物联网IoT特性。
  • 我们常说的蓝牙4.0不等同于BLE,BLE只是蓝牙4.0的子集;蓝牙4.0是一个综合性协议规范。
  • 蓝牙4.0版本以后技术模式上分为低功耗蓝牙(BLE)和经典蓝牙(BR/EDR)两种、市场芯片多数为仅支持BLE的,也有两者都支持的(双模蓝牙芯片)。
  • 蓝牙芯片的三种功能配置:

01-蓝牙协议栈

蓝牙协议栈由主机 + HCI(可选) + 控制器三大块组成,其中对于单芯片方案是没用HCI的。

  • 主机(Host) :主机部分由核心协议层(L2CAP、SDP、SMP、ATT)和核心规范(GAP、GATT)构成;
  • 控制器(Controller):此部分拆分为低功耗蓝牙(Vol 6: Low Energy Controller)和经典蓝牙(Vol 2: BR/EDR Controller)两个章节说明
  • HCI:此部分定义了主机和控制器之间通信的接口标准(Vol 4: Host Controller Interface),可以是UART、USB等通信方式。
  • 上图中红色部分是BR/EDR经典蓝牙的必选项,绿色部分是LE低功耗蓝牙必选项,蓝色部分是公共部分;当然经典蓝牙也可以具备绿色部分特性。HCI接口根据芯片架构有关,是可选项。
  • BLE协议栈的实现方式采用分层的思想:
    • 控制器部分包括:物理层(PHY)、链路层(LL)、控制接口层(HCI)
    • 主机部分包括:裸机链路控制及自适应协议层(L2CAP)、安全管理层(SMP)、属性协议层(ATT)、通用访问配置文件层(GAP),通用属性配置文件层(GATT)
  • 下图为一个经典BLE系统框架图,尔其中的  Host 、 Controller 就是BLE协议栈。

02-物理层

  • BLE的物理层定义了如何使用无线电发射器/接收器来编码和解码用于传输和接收的数字数据,以及应用的其他无线电相关参数和属性。现阶段可以略过
  • 主要了解下Frequency Band
    • BLE在2400Mhz至2483.5 MHz的2.4GHz免授权频段内工作。BLE采用40个信道,每个信道间隔为2MHz,分为数据信道和广播信道;广播信道占用3个,用于发现设备、建立连接、广播数据;数据信道占用37个,用于已建立连接设备间的数据通信。建立连接的两个设备,必须同一时间处于同一信道上才能通信。
    • 其中37/38/39固定为广播信道,其余为数据信道。

03-链路层(LL)

  • 低功耗蓝牙参考 《Core_v5.3.pdf》中 Part B: Link Layer Specification 章节部分,LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者GATT。
  • 报文是链路层的基石,是BLE通信的基础设施,它包含四个字段:前导码、访问地址、协议数据单元(PDU)和循环冗余校验(CRC)。在广播、扫描或建立连接的过程中使用广播通道PDU 传输广播包。而用于与连接器件交换数据的数据包是通过数据通道PDU 传输的。链路层数据包的格式如图:
  • 广播包的报头与数据包的报头内容不同
    • 广播包 的报头,包含了:PDU Type(4bit) 广播报文类型、RFU(1bit) 未使用、ChSel(1bit) 未使用、TxAdd(1bit) 发送地址类型、RxAdd(1bit) 接收地址类型、length(8bit) payload长度。
    • 数据包 的包头,包含了:LLID(2bit)逻辑链路标识符、NESN(1bit)下一个预期序列号、SN(1bit)序列号、MD(1bit)更多数据、RFU(3bit)保留、length(8bit)长度。

04-HCI层

  • HCI (Host Controller interface), 为Host访问Controller提供一组标准的接口
  • 主要完成3个任务:
    • Host通过HCI发送命令给Controller
    • Controller通过HCI将事件发送给Host
    • 传递ACL Data(面向连接,在连接通道上进行数据传输)
  • 这里所说的接口既包括两个设备之间的物理接口,也包括逻辑接口。逻辑接口定义了命令、事件和数据的封包格式。而物理接口定义了主机和控制器之前如何传输这些数据。蓝牙规范定义了4种物理接口,3线 串口 、4线串口、HID、SDIO。这里不做过多介绍。

05-L2CAP层

  • L2CAP是个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分割和重组功能,使得较大的报文可以在底层无线电中传输。
  • 主要功能:屏蔽了控制器传输协议中的许多特性,方便高层协议的开发;报文分片和重组(SAR);流控、重传、报文完整性校验等。

06-SMP层

  • SMP(Secure manager protocol)。定义了蓝牙设备配对、认证、解密等行为的安全操作,SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。
  • 这一部分在后续“高阶”BLE安全研究过程中很重要。

07-ATT层

  • ATT(属性协议):定义了访问对端设备上数据的一组规则,是GATT规范的基础,也是低功耗蓝牙的基石。定义了Host端属性报文格式和报文类型。这一层的关键词是Attribute(属性)。一个属性其实就是一条数据,属性是BLE数据提供单元,也是蓝牙空中传播数据的最上层,BLE开发过程中接触最多的就是这一层。
  • ATT数据格式(本章简单了解即可)

08-GATT层

  • GATT(Generic Attribute Profile, 通用属性规范),自己本身不提供数据,而是将ATT层提供的属性组合起来构成的服务。通过ATT层可以读写对端设备的属性值,各个属性之间有什么联系各个属性之间怎么组合起来的,是由GATT层负责。服务是GATT层的关键字,服务由属性组成。
  • 一个BLE设备可以由多个服务组成,一个服务可以包含多个特征(characteristic),一个特征可以包含多个属性。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题。

09-GAP层

  • GAP(Generic Access Profile, 通用访问规范):定义了所有蓝牙设备的基础功能,设备间发现、连接、配对绑定的流程;蓝牙设备中四种角色;广播和扫描响应报文的格式;还有一些通用蓝牙参数定义,比如设备地址、名称、配对秘钥和设备的外观特征值,用于区分是什么设备,手机还是电脑;明确了作为一个低功耗蓝牙设备的基本需求,包含哪些层级以及如何协同工作的。 规范了一些通用的蓝牙参数:蓝牙设备地址、设备名称、配对秘钥、外观特征值(用于区分设备是手机还是电脑)。 其他详情可参考《Core_v5.3.pdf》中 Part C: Generic Access Profile 章节部分。

参考:

 蓝牙协议学习入门 - SeeDeer的博客 

蓝牙技术联盟核心规范: http://www.bluetooth.com 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 00-蓝牙的历史
  • 01-蓝牙协议栈
  • 02-物理层
  • 03-链路层(LL)
  • 04-HCI层
  • 05-L2CAP层
  • 06-SMP层
  • 07-ATT层
  • 08-GATT层
  • 09-GAP层
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档