【蓝牙mesh】Lower协议层介绍

简介: 蓝牙Mesh中的Lower层主要的功能就是对网络数据包进行分片和组包,是位于Upper层和Network层之间,对蓝牙Mesh的分层加密起着非常重要的作用。

Lower层简介

在这里插入图片描述

   Lower协议层用于处理网络层以下的功能,包括节点的广播、重传、路由和网络拓扑等,是实现蓝牙mesh网络的关键协议之一。其中Lower协议层中最主要的一部分工作就是mesh数据的分片和组包。
Lower层是将Upper层发过来的数据,进行封装并传递给下层,当Upper层数据较长时,Lower层会对数据进行分片处理,发送给下层。同样的,当接收到来自下层的数据包后,Lower层会解析并判断数据,如果数据是分片的,Lower层会对数据进行组包,组包完成后,将其发送给Upper层。

Lower层数据包

蓝牙mesh Lower层的数据包根据CTL标志位和SEG标志位的不同,分为四种数据类型,分别为不分包的Access数据包、分包的Access数据包、 不分包的Control数据包和分包的Control数据包。

在这里插入图片描述

下面分别对四种数据包进行介绍。

不分包的Access数据包

数据包格式如下图:
在这里插入图片描述

下面分别介绍下每个字段的含义:
SEG: 表示数据包是否是分包数据, 不分包的数据该字段为0
AKF:表示数据包应用层加解密是使用appkey还是devkey。 0:devkey 1: appkey
AID: 表示appkey的ID,该字段只有AKF为1时才生效,否则该字段为0.
Upper Transport Access PDU: 这个就是应用层真正的数据。

分包的Access数据包

在这里插入图片描述

下面分别介绍下每个字段的含义:
SEG: 表示数据包是否是分包数据,分包的数据该标志位为1
AKF:表示数据包应用层加解密是使用appkey还是devkey。 0:devkey 1: appkey
AID: 表示appkey的ID,该字段只有AKF为1时才生效,否则该字段为0.
SZMIC:表示消息认证码的长度
SeqZero: SEQ的低13位,是在Upper层进行设置的
SegO: 表示当前分包的包数,数值是从0开始的
SegN: 表示最后一包的包数
Upper Transport Access PDU: 这个就是应用层真正的数据。
Segment m : 表示分包的数据, 字节长度1-12个字节,数据包分包长度每包为12个字节(除了最后一包)。

分包数据中的每包中,AKF, AID, SZMIC, SeqZero, and SegN这些字段的数值都是一样的。

不分包的Control数据包

在这里插入图片描述

下面分别介绍下每个字段的含义:
SEG: 表示数据包是否是分包数据,不分包的数据该标志位为0
Opcode: 0x00:表示回复数据, 0x01 - 0x7F表示Control数据的Opcode,具体的Control数据我们上个章节有讲到。
Parameters:表示Control数据的具体数据包。长度为0-11个字节

上面说了Opcode为0表示是回复数据,下面我们看下Control的回复数据包格式是怎样的?

Control回复数据包

在这里插入图片描述

下面分别介绍下每个字段的含义:
SEG: 表示数据包是否是分包数据,不分包的数据该标志位为0
Opcode: 该字段为0,表示回复数据
OBO: 表示该数据包是否是Friend节点与低功耗节点交互的数据。 如果是则为1, 否则为0。
SeqZero: 该数值表示Seq,是上层Upper层决定的数据。
BlockAck:表示接收到了多少包分包的数据,每包使用一个bit表示。

分包的Control数据

在这里插入图片描述

下面分别介绍下每个字段的含义:
SEG: 表示数据包是否是分包数据,不分包的数据该标志位为1
Opcode: 数值0x01 - 0x7f
RFU: 保留位
SeqZero: 表示Seq的最低13bit,有Upper层决定。
SegO: 当前的分包值,数值从0开始计算
SegN: 最后一包的分包值
Segment m: 分包数据,长度为1-8个字节

每个分包的Control数据的 Opcode, SeqZero, and SegN这几个字段的数值是相同的。

分片与组包

Lower层的一个非常重要的功能就是对数据进行分片和组包。当Upper层的数据超过15个字节后,就需要在Lower层对数据进行分片。

下面这个图片很好的表示了数据的在每一层上的格式和封装,大家可以仔细分析下这张图

在这里插入图片描述

Access层的数据进入到Upper层之后, 会使用appkey对Access的数据进行加密,生成密文Access PDU 和消息认证码TransMIC, 当Upper层的数据超过15个字节后,就会在Lower层对数据进行分包处理。数据分包的格式我们前面已经介绍过了,分包之后会传递到下层的network层,使用netkey进行网络层加密,这个我们下一章节会再细讲。

总结

   蓝牙Mesh中的Lower层主要的功能就是对网络数据包进行分片和组包,是位于Upper层和Network层之间,对蓝牙Mesh的分层加密起着非常重要的作用。

目录
相关文章
|
2月前
|
传感器 运维 物联网
蓝牙Mesh网络:连接未来的智能解决方案
蓝牙Mesh网络:连接未来的智能解决方案
269 12
|
6月前
|
传感器 物联网 芯片
低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别
如何选择适合的蓝牙协议以实现最佳的无线通信效果。
525 0
|
安全 物联网
|
存储 缓存 安全
【蓝牙mesh】Upper协议层介绍
Control数据主要是用在Mesh设备的Friend特性,通过Friend特性和低功耗LowPower节点之间建立联系。Control数据就是下面的这几条命令,除此之外Upper层的所有数据都是Access数据。Friend节点与LowPower节点建立关系的流程如下:要建立 Friendship关系,首先LowPower节点向空中发送 Friend Request 请求(地址类型是 all-friend)
155 0
【蓝牙mesh】Upper协议层介绍
|
缓存 物联网 数据安全/隐私保护
【蓝牙mesh】Network协议层介绍
Network层是蓝牙Mesh协议栈中中,按照协议栈层级仅次于网络承载层的,是对整个蓝牙MeshMesh网络中非常重要的一个协议层。Network层会使用netkey对数据包进行单独的加解密和认证,为mesh网络的数据安全提供有力的保障。
210 0
【蓝牙mesh】Network协议层介绍
Adurion两个HCO5蓝牙模块之间互相通信
Adurion两个HCO5蓝牙模块之间互相通信
126 0
|
物联网 数据安全/隐私保护
【蓝牙mesh】access层(接入层)协议介绍
Model ID 是一个16Bit 或者32Bit的一个数值。用来表示设备的某个功能模块,比如onoff model, lightness model。那16Bit的Model ID 和 32Bit的Model ID有什么区别呢?16Bit的Model ID 是有蓝牙技术联盟分配的。如下图是Sig制定的几个Model ID32Bit的Model ID是由各个厂商自定义的Model ID。
168 0
【蓝牙mesh】access层(接入层)协议介绍
|
传感器 物联网 数据安全/隐私保护
【蓝牙mesh】Bearer层(承载层)介绍
蓝牙Mesh Bearer层分为广播Bearer层和Gatt bearer层,一个节点设备可以支持至少其中的一个,也可以都支持。一般情况下,子设备节点如果不是低功耗设备,两个层都会支持的。在蓝牙Mesh网络中,Bearer层还提供了许多其他的功能,例如数据加密、数据压缩、数据分段等等。这些功能都是为了提高数据传输的效率和安全性。总的来说,Bearer层是蓝牙Mesh网络中非常重要的一层,它提供了数据传输的基础支持,使整个网络能够顺畅地运行。
241 0
【蓝牙mesh】Bearer层(承载层)介绍
|
编解码 语音技术
【经典蓝牙】 蓝牙HFP层协议分析
HFP(Hands-Free Profile), 是蓝牙免提协议, 可以让蓝牙设备对对端蓝牙设备的通话进行控制,例如蓝牙耳机控制手机通话的接听、 挂断、 拒接、 语音拨号等。HFP中蓝牙两端的数据交互是通过定义好的AT指令来通讯的
2458 0
【经典蓝牙】 蓝牙HFP层协议分析
|
网络协议 网络架构
三十八、移动IP和网络层设备
三十八、移动IP和网络层设备
三十八、移动IP和网络层设备