關聯過程:
關聯過程抓包分析:
beacon request幀展開:
beacon幀展開:
父節點廣播的裝置申明:
通過關聯方式加入乙個網路:
加入乙個裝置,是兩個裝置的事,即子裝置和待定父裝置
對於子裝置,首先子裝置呼叫nlme-network-discovery.request 原語,設定待掃瞄的通道,以及每個通道掃瞄的時間,網路層收到這個原語,將要求mac層執行被動或主動掃瞄。
具體傳送到裝置外的是乙個「信標請求」(becon request) mac命令幀(如上圖 beacon request幀展開),注意此時端裝置傳送的mac幀的 pan id是0xffff,表示可以加入當前環境中任何網路,當在這個通道中的裝置收到該幀,將會傳送becon幀(如上圖 beacon幀展開),這時子裝置通過beacon-notify.indication 原語,告知該裝置的mac層,該becon幀包含了傳送該幀的位址資訊,以及是否允許其他裝置以其子節點的方式加入等資訊。待加入的裝置,在網路層,將檢查該becon幀 協議 id是否是zigbee id 。如果不是,將 忽略;如果是,該裝置將複製收到每個becon幀的相關資訊到其關聯表(neighbor table)。
一旦mac層完成了掃瞄,將傳送 mlme-scan.confirm 原語,告知網路層,網路層將傳送nlme-network-discovery.confirm 原語,告知應用層。
/**************************** 以上描述的過程在 關聯過程圖 中看不出來需要抓包看 ***************************************/
/***************************************** 以下部分就是 關聯過程圖 中的解釋了 *****************************************/
一旦潛在的父節點確定,網路層將呼叫mlme-associate.request 原語到mac層。mac會傳送乙個「關聯請求」(association request),關聯請求中攜帶裝置型別、電源型別、是否要分配網路位址等資訊,注意此時端裝置的pan id還是0xffff,然後父節點會回發乙個應答告訴端裝置收到了關聯請求,但是此時還沒有入網成功,但是此後端裝置會嘗試使用父節點網路的pan id,去和父節點mac層通訊,此時父節點去處理能不能進行關聯的處理,父節點不會主動給端裝置回應,而是端裝置等待乙個時間間隔後,主動去傳送「資料請求命令」(data request),經過一次應答,父節點mac層回應端裝置是否能夠進行關聯。如果成功的話那也只能說是mac層接收了這個關聯,之後端節點還需要向網路中所有未休眠的節點(通過父節點**)傳送「裝置宣告」(device announce)要注意的是 router 裝置入網是通過廣播的方式進行「裝置申明」,如果是enddevice則通過單播發送給他的父節點,父節點會代為廣播。如果另外乙個裝置收到此廣播後,發現與自己位址相同,它將發出乙個「位址衝突」(address conflict)的廣播資訊 ,關聯失敗,否則在非zigbee3.0中以及認為入網成功;在zigbee3.0中如果後面的秘鑰互動過程失敗也會導致無法入網。
如果試圖加入不成功,網路層將收到mac層通過mlme-associate.confirm告知的加入失敗,如果收到的是潛在父節點拒絕該裝置加入,這時候,網路層將會在關聯表中,把該潛在父節點的相應部分,潛在父節點位(potential parent bit)置為零,確保網路層,不再給這個裝置二次傳送加入請求。
如果一次加入沒成功,將選擇另乙個潛在的父節點加入,直到找到乙個合適的裝置加入或者所有的裝置都不適合。
如果加入成功,網路層收到的mlme-associate.confirm 原語,將含有該裝置可用的16 唯一的邏輯位址,網路層將在關聯表中設定與其父節點的關係,同時,這個父節點也會在其關聯表中加入這個新裝置。
zigbee學習之裝置profile概述
zigbee 應用層規範描述了常用zigbee 裝置功能,比如繫結 裝置發現和服務發現是如何在zigbee裝置物件內部實現的。zigbee 裝置profile 通過定義cluster 能夠像任何的zigbee profile 一樣執行。不像應用程式特定的 profile,zigbee 裝置 prof...
zigbee協議棧學習(五)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!下篇文張講解乙個無線控制led案列,這章了解系統執行的結構。第一z stack 軟體架構 z stack 由 main 函式開始執行,main 函式共做了 2 件事 一是系統初始 化,另外一件是開始執行輪轉查詢式作業系統,fs zstack zma...
zigbee協議棧學習(二)
協議棧規範的 id號可以通過查詢裝置傳送的 beacon 幀獲得。在裝置加入網路之前,首先 需要確認協議棧規範的 id。特定網路 規範 id號為0 zigbee協議棧規範的 id號為1 zigbee ro 協議棧規範的 id 號為 2。協議棧規範的 id stack profile id 在 nwk...