廣東工業(yè)大學(xué) 鐘其源
BACnet報文分析
廣東工業(yè)大學(xué) 鐘其源
所謂通信協(xié)議,是指計算機網(wǎng)絡(luò)中各自主節(jié)點在進行數(shù)據(jù)(包括控制信息)交換時必須遵守事先約定的規(guī)程或規(guī)則。BACnet標(biāo)準(zhǔn)作為智能樓宇自控網(wǎng)絡(luò)的通信協(xié)議,網(wǎng)絡(luò)里各個子系統(tǒng)的互操作要求它們必須認識這個交流的“語言”。而很多非標(biāo)準(zhǔn)的子系統(tǒng)和控制器,無法接入BACnet系統(tǒng)上,這就需要我們找到一個“翻譯“,也就是網(wǎng)關(guān),協(xié)議的轉(zhuǎn)換器,這時候我們就會覺得對BACnet報文分析顯得尤為重要。
BACnet協(xié)議;報文分析;編碼
BACnet的報文其實就是一串?dāng)?shù)字,我們可以借助VTS軟件對主流的應(yīng)用服務(wù)進行分析。而要全面搞懂報文,必須深入了解BAC-net協(xié)議本身結(jié)構(gòu),因為是BACnet網(wǎng)絡(luò)與外界Internet連接,它重新定義一個微協(xié)議層,稱為虛擬鏈路數(shù)據(jù)層,“BVLL“,位于網(wǎng)絡(luò)層和ip協(xié)議層之間,作用是進行BACnet廣播管理,并提供向其他通信協(xié)議擴展的擴展機制,這種擴展方式利用ip用戶數(shù)據(jù)包(UDP)進行BACnet信息傳輸,UDP是無連接服務(wù),優(yōu)點是靈活方便和比較速度,但是不能保證不丟包,VTS測試軟件也是基于UDP進行數(shù)據(jù)的傳輸,在報文上把UDP的端口號”BAC0“放在目標(biāo)地址的ip地址后。至于其他層協(xié)議的數(shù)據(jù)結(jié)構(gòu)編碼我將結(jié)合VTS軟件和實際的例子給大家分析講解。

圖1
現(xiàn)在我對本地的BACnet設(shè)備發(fā)送一個廣播who-is,前面四個字節(jié)表示一個廣播地址,“C0 A8 FF BA“為”192.168.1.255“,”BA C0“為UDP的端口號。接下來的四個字節(jié)為虛擬鏈路層的報文結(jié)構(gòu),”81 0A 00 0C“,”81”表示低層通信協(xié)議僅限為ip協(xié)議,是一種特定類型,”0A“是BVLL協(xié)議報文根據(jù)功能區(qū)分的第十種報文類型,表示用于對等設(shè)備節(jié)點間信息的單播。……