技術篇之理解藍牙Mesh的地址概念

概述

衆多通信協議上都離不開地址的概念,大名鼎鼎的IP地址、基石的MAC地址,藍牙Mesh也不例外,本文將着重講解Mesh地址的概念,希望能夠幫助讀者以小窺大,洞悉藍牙Mesh。

地址的分類

在藍牙Mesh規範中,將地址分爲四類:

  1. 單播地址(Unicast Address)用於唯一標識網絡中節點的元素地址。
  2. 組播地址(Group Address)用於表示網絡中的組地址,組地址可以被一個或多個節點所共有。
  3. 虛擬地址(Virtual Address)作用類似與組地址,不同點在於其地址空間爲2^16。
  4. 未分配地址 (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用於特殊使用:

  1. 0xFFFC 代指所有的代理節點(Proxy Node)
  2. 0xFFFD 代指所有的朋友節點(Friend Node)
  3. 0xFFFE 代指所有的轉發節點(Relay Node)
  4. 0xFFFF 代指所有的節點(All Nodes)

藍牙Mesh網絡的通信模型是取決於目的地址(DST)字段,如果目的地址爲單播地址,那麼該消息只能被單播地址爲該目的地址的元素所處理,如果目的地址爲組播地址的話,該消息可以被訂閱該地址的模型所處理。由此推出通信模型:

  1. 客戶端/服務端模型
  2. 訂閱/發佈模型

虛擬地址

虛擬地址一般用法與組播地址類似,虛擬地址是通過Label UUID 生成,由0x8000開始到0xBFFF結束,Label 有16字節構成,其地址空間無限大,可以彌補組播地址的空間約束性,但是Label UUID在上傳輸層(Upper Transport Layer)加密時必須作爲參數參與運算
EncAccessPayload,TransMIC=AESCCM(AppKey,ApplicationNonce,AccessPayload,LabelUUID)EncAccessPayload, TransMIC = AES-CCM (AppKey, Application Nonce, AccessPayload, Label UUID)

未分配地址

未分配地址0x0000,用於設備處於未配網狀態時或其發佈訂閱地址未配置時初始地址。該地址不能用於網絡數據的發送。

藍牙技術中文社區

藍牙交流社區成立啦,不定期有技術乾貨出爐,歡迎各位一起討論展望未來物聯網的新格局。感興趣的可加掃我二維碼加我好友,審覈後將拉進社區。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章