技术篇之理解蓝牙Mesh的地址概念

Petunia ·
更新时间:2024-11-13
· 903 次阅读

概述

众所周知,众多通信协议上都离不开地址的概念,大名鼎鼎的IP地址、基石的MAC地址,蓝牙Mesh也不例外,本文将着重讲解Mesh地址的概念,希望能够给读者以清晰的理解。

地址的分类

在蓝牙Mesh规范中,将地址分为四类:

单播地址(Unicast Address)用于唯一标识网络中节点的元素地址。 组播地址(Group Address)用于表示网络中的组地址,组地址可以被一个或多个节点所共有。 虚拟地址(Virtual Address)作用类似与组地址,不同点在于其地址空间为2^16。 未分配地址 (Unassigned address)表示此地址不能被使用。 单播地址

单播地址被用于唯一的标识蓝牙Mesh网络中节点的元素(Element),单播地址从0x0001开始到0x7FFF结束,该地址是在蓝牙Mesh设备配网阶段由配置者分配给设备的,单播地址在各节点之间不能重复,而在节点内必须递增。例如:网络由三个节点组成,节点A有1个元素,节点B有2个元素,节点C由2个元素,节点A的地址为0x0001,节点B的第一个元素如果为0x0002的话,第二个元素必须为0x0003,节点C同理。单播地址在网络中用于唯一的标识网络的节点的元素,因此在网络数据包中源地址(SRC)字段必须设置为该单播地址,而目的地址(DST)则无此要求。

组播地址

组播地址一般被用于元素模型的订阅(Subscribe)和发布(Publish)地址,组播地址从0xC000开始,到0xFEEE结束可以被任意使用,而0xFF00到0xFFFB为保留地址,不能使用。0xFFFC到0xFFFF用于特殊使用:

0xFFFC 代指所有的代理节点(Proxy Node) 0xFFFD 代指所有的朋友节点(Friend Node) 0xFFFE 代指所有的转发节点(Relay Node) 0xFFFF 代指所有的节点(All Nodes)

蓝牙Mesh网络的通信模型是取决于目的地址(DST)字段,如果目的地址为单播地址,那么该消息只能被单播地址为该目的地址的元素所处理,如果目的地址为组播地址的话,该消息可以被订阅该地址的模型所处理。由此推出通信模型:

客户端/服务端模型 订阅/发布模型 虚拟地址

虚拟地址一般用法与组播地址类似,虚拟地址是通过Label UUID 生成,由0x8000开始到0xBFFF结束,Label 有16字节构成,其地址空间无限大,可以弥补组播地址的空间约束性,但是Label UUID在上传输层(Upper Transport Layer)加密时必须作为参数参与运算
EncAccessPayload,TransMIC=AES−CCM(AppKey,ApplicationNonce,AccessPayload,LabelUUID)EncAccessPayload, TransMIC = AES-CCM (AppKey, Application Nonce, AccessPayload, Label UUID)EncAccessPayload,TransMIC=AES−CCM(AppKey,ApplicationNonce,AccessPayload,LabelUUID)

未分配地址

未分配地址0x0000,用于设备处于未配网状态时或其发布订阅地址未配置时初始地址。该地址不能用于网络数据的发送。

蓝牙技术中文社区

蓝牙交流社区成立啦,不定期有技术干货出炉,欢迎各位一起讨论展望未来物联网的新格局。感兴趣的可加扫我二维码加我好友,审核后将拉进社区。
在这里插入图片描述


作者:给你一缕阳光



mesh 地址

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章