文章目录
蓝牙Mesh数据包的结构,如图所示:

1、网络层 协议数据单元(PDU)
Field Name (字段名) | bits | 描述 |
---|---|---|
IVI | 1 | IV索引的 最低有效位 |
NID | 7 | 网络ID,Network ID 从 网络密钥 (NetKey)派生的值,用于标识用于保护此PDU的加密密钥 (encryption key) 和隐私密钥 (privacy key) |
CTL | 1 | 网络控制(Network Control) 0表示Access Message,且NetMIC为32bits 1表示Control Message,且NetMIC为64bits |
TTL | 7 | 生存时间(Time To Live) 转发数据的次数 |
SEQ | 24 | 序列号(Sequence Number) 表示 Network PDU 数据包的索引 |
SRC | 16 | 源地址(Source Address) 数据包发起方的源地址、且该地址应为单播地址 |
DST | 16 | 目的地址(Destination Address) 可以为单播地址、组地址以及虚拟地址 |
Transport PDU | 96~128 ( 12~16 个字节) | 传输 协议数据单元 |
NetMIC | 32 或 64 ( 4 或 8 个字节) | 网络 消息完整校验值(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
值,用于确定Mesh消息是否包含访问消息
或者控制消息
。
CTL Field | 描述 |
---|---|
0 | NetMIC 是32bits 值,并且底层传输PDU 包含访问消息 (Access Message),传输 pdu 限制在16 字节 |
1 | NetMIC 是64bits 值,并且底层传输PDU 包含控制消息 (Control Message),传输 pdu 限制在12 字节 |
消息分类 | 描述 |
---|---|
访问 消息(Access Message) | (1)定义了应用数据 的格式(2) 应用 密钥(App key)或者设备 密钥(Device key)用于加密 和认证 信息 |
控制 消息(Control Message) | (1)用于创建和管理友谊 和心跳 操作 |
(4)TTL - 生存时间(Time to Live)
TTL字段是7-bit
字段:
值 | 描述 |
---|---|
0、1 | 不会被中继 |
2~126 | 可能已被中继,并且可以被中继 |
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)Transport PDU - 传输协议数据单元
序号 | 描述 |
---|---|
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-bit 或64-bit 值CTL=0 (访问消息 Access Message),NetMIC 是32-bit 值,传输 pdu 限制在16 字节;CTL=1 (控制消息 Control Message),NetMIC 是64-bit 值,传输 pdu 限制在12 字节 |
2 | 认证符合网络密钥 (NetKey)的节点发出的消息 |