蓝牙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~128 (1~16 个字节) |
传输 协议数据单元 |
9 | NetMIC |
32 或 64 |
网络 消息完整校验值(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 |
NetMIC 是32-bit 值,并且底层传输PDU 包含访问消息 |
1 |
NetMIC 是64-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-bit 或64-bit 值( CTL=0 ,NetMIC 是32-bit 值;CTL=1 ,NetMIC 是64-bit 值) |
2 | 认证符合网络密钥 (NetKey)的节点发出的消息 |