close

往後會一個一個仔細地介紹每一層的內容,在此先來個總覽吧!

ZigBee的封包跟我們之前學的TCP/IP封包差不多,都是一層一層的包上去,收到之後在一層一層的脫掉外衣解出訊息,一樣的大腸包小腸的方式。

我們總共要認識的有四層,從下到上分別是

實體層 PHY

媒體層 MAC

網路層 NWK

應用層 APS

 

可以認知為,實體層的封包,是除了實體層,再加上媒體層的資訊。而媒體層的封包,是媒體層之外再加上網路層的資訊。而網路層是除了本身的資訊再加上應用層的資訊,而應用層,就是你的應用程式需要用到的。也就是說,你在sniffer上面截取到一個封包,他是實體層的,你要把他剝掉實體層取出媒體層,再從媒體層的內容(payload)得到網路層,再從網路層的內容得到應用層,最後這個才是你要觀察的對象。當你要除錯(debug)的對象只有你寫的程式,這是假定所有的設備(device)都有按照Zigbee的規範,沒有人偷改下面的協定。這樣的話你看應用層的資料就行。但是要是要解釋為何組網不成功,想要看到網路層的動作,理論與實際有沒有吻合,你就必須看看請處每一層的內容。

這個包裹的樣式,需要認識仔細,才不會後面講到sniffer時看不懂,其實也不難,就只要層層分開解析就可以看清楚資訊了。

一個一個來簡介

<實體層>

這是跟硬體最接近的一層,直接控制收發機(transceiver)的介面。以後你看到TI 2530的規格書有一堆無線電相關的站存器功能等等,就是由這一層控制的。這一層負責 觸發(active)收發機的傳送與接收,也用來選擇一個乾淨的頻率與通道確保沒有其他設備或是網路使用。

image

包含三個欄位

1. 同步檔頭SHR (Synchronization header),就是同步用的,具體的值,後面看到sniffer自然就知道。

2. 實體層檔頭PHR (PHY header),這個包含總長度的資訊。

3. 實體層附載PHY payload. 也就是包含整個媒體層的內容。 payload這個字不太好翻譯,你就想成是背負的內容或是附載,或是夾帶的資訊。這個還是以後用payload 這個字比較純傳神。這個payload就是包含整個媒體層。

 

<媒體層>

負責產生信標,以及讓device同步到這個信標,若處在一個有信標的網路。這一層也要提供讓device結合(association)與分裂(siaassociation)的服務。

結合與分裂,真是敖口,以後應該是直接用英文來寫。當一台device想要加入一個網路,該台device會送出結合要求(association request)給該網路的coordinator,coordinator收到之後可以決定要接受或是拒絕,相同的,要是一台device想要離開一個網路,他可以送出分裂要求(disassociation)給coordinator。

有三個欄位,分別是

1. 媒體層檔頭MHR (MAC header),包含位址資訊與安全資訊。

2. 媒體層payload,這個就是包住整個網路層啦!

3. 媒體層檔尾 MFR (MAC footer),是一個用CRC (Cyclic Redundancy Check)算出來的16 bits 框架檢測序列(FCS, Frame Check Sequence),做為資料驗證用途。

在IEEE 802.15.4定義了四種框架在媒體層內

1. 信標框架 (Beacon frame)

    除了把網路內的device做同步以外,還可以通知指定的device,他有未讀的訊息在coordinator內。這個也稱為間接性傳輸(indirect transmission)

2. 資料框架 (Data frame)

    用來傳資料給網路層

3. 回應框架 (Acknowledge frame)

    單純做回應用

4. 命令框架 (MAC command frame)

    用來要求association或是disassociation。

 

<網路層>

用來管理網路資訊與繞徑(routing),也就是選擇合適的路徑來將資訊傳給終端的機器。而繞徑這件事是需要去尋找與維護的,這個責任在coordinator與router身上,End Device是沒有這個能力的喔。所以網路層的主要功能就是去發現並且組網,並且決定合適的拓樸網路,樹狀,星狀或是網格。

這個比較簡單,只有兩個欄位

1. 網路層檔頭NHR (NWK herader),這裡有網路層的位址,與控制資訊。

2. 網路層payload,這個就是整個應用層的內容啦!

 

<應用層>

設備開發者開發應用物件(application object)去讓一台device有多種的應用,依照規格,每台device可以掛上去240個應用物件。會將其編號由1~240,也稱為端點位址(end point address)。

這個有四個欄位

1. 應用層檔頭AHR (APS header),包含應用層的控制與位址資訊。

2. 輔助的應用層檔頭(Auxiliary HDR),包含安全性與金鑰(security key)資訊,用來解鎖(unlock)這個訊息。

3. 應用層payload,這個就是你寫應用程式最後要傳送的資訊,例如你的應用程式傳送了一個結構體,內有兩個整數值,那你就可以從sniffer上面看到你實際傳送的內容。

4. 訊息完整碼MIC (Message Integrity Code),用這個來檢查訊息的完整性,還有偵測沒有經過授權的串改。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 oldmonkey 的頭像
    oldmonkey

    oldmonkey的部落格

    oldmonkey 發表在 痞客邦 留言(0) 人氣()