蓝牙mesh 数据包的结构

蓝牙mesh数据包的结构如图所示:
在这里插入图片描述

1、网络层协议数据单元PDU

序号 Field Name(字段名) Bits 描述
1 IVI 1 IV索引的最小值位
2 NID 7 网络ID,Network ID
网络密钥(NetKey)派生的值,用于标识用于保护此PDU的加密密钥隐私密钥
3 CTL 1 网络控制(Network Control)
4 TTL 7 生存时间(Time To Live)
5 SEQ 24 序列号(Sequence Number)
6 SRC 16 源地址(Source Address)
7 DST 16 目的地址(Destination Address)
8 TransportPDU 8~1281~16个字节) 传输 协议数据单元
9 NetMIC 3264 网络 消息完整校验值(Message Integrity Check for Network)
(1)IVI - 初始化矢量索引(Initialization Vector Index)在这里插入图片描述
序号 描述
1 1-bit
2 IV索引的最小值位
(2)NID - 网络ID(Network ID)在这里插入图片描述
序号 描述
1 7-bit
2 决定使用哪个mesh网络传递数据
3 删除和该信息矛盾的请求
4 网络身份有(2^121)个网络密钥
(3)CTL - 控制(Network Control)在这里插入图片描述

CTL字段是1-bit值,用于确定消息是否包含访问消息或者控制消息

CTL Field 描述
0 NetMIC32-bit值,并且底层传输PDU包含访问消息
1 NetMIC64-bit值,并且底层传输PDU包含控制消息
序号 消息分类 描述
1 访问消息 (1)定义了应用数据的格式
(2)应用密钥(App Key)或者设备密钥(Device Key)用于加密认证信息
2 控制消息 (1)用于创建和管理友谊心跳操作
(4)TTL - 生存时间(Time to Live)在这里插入图片描述

TTL字段是7-bit字段:

序号 描述
1 0 不会被中继
2 1 不会被中继
3 2~126 可能已被中继,并且可以被中继
4 127 可以中继(最大值)
(5)SEQ - 序列号(Sequence Number)在这里插入图片描述
序号 描述
1 24-bit
2 每个mesh的信息的SEQ必须不同
3 要有源地址, 唯一身份识别mesh 信息
(6)SRC - 源地址,DST - 目标地址在这里插入图片描述
SRC - 源地址(Source Address)
序号 描述
1 16-bit
2 识别信息原始源
3 必须是一个单广播地址
DST - 目标地址(Destination Address)
序号 描述
1 16-bit
2 定义了这条消息的目的地
3 可以是一个单播地址虚拟地址分组地址或者广播地址
4 目标地址使用网络密钥(NetKey)加密
Mesh 地址:
序号 地址类型 范围 描述
1 Unassigned(未分配) 0x0000 没有分配地址(无发布或订阅时被特定使用)
2 Unicast(单播) 0x0001 ~ 0x7FFF 分配给每个元素的唯一地址,一共32767个
3 Virtual(虚拟) 0x8000 ~ 0xBFFF 一个或一组设备的虚拟地址
4 Group(组) 0xC000 ~ 0xFEFF 一组mesh节点的地址(发布或订阅时被特定使用)
5 Broadcast(广播) 0xFFFF 网络中的每一个节点
(7)TransportPDU - 传输协议数据单元在这里插入图片描述
序号 描述
1 1-16个字节
2 包含了底层传输层的信息
3 CTL决定了传输PDU的大小
CTL=0,传输PDU 限制在16字节;CTL=1,传输PDU 限制在12字节)
4 传输PDU时使用了网络密钥(NetKey)进行加密
(8)NetMIC - 网络消息完整校验值(Message Integrity Check for Network)在这里插入图片描述
序号 描述
1 32-bit64-bit
CTL=0NetMIC32-bit值;CTL=1NetMIC64-bit值)
2 认证符合网络密钥(NetKey)的节点发出的消息
发布了125 篇原创文章 · 获赞 76 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Hongwei_1990/article/details/96378690