亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        針對異構(gòu)協(xié)議的動態(tài)解析器模型①

        2017-02-20 07:40:51王永娜王鴻亮王俊霖
        關(guān)鍵詞:解析器狀態(tài)機(jī)異構(gòu)

        王永娜, 趙 奎, 王鴻亮, 王俊霖

        ?

        針對異構(gòu)協(xié)議的動態(tài)解析器模型①

        王永娜1,2, 趙 奎2, 王鴻亮2, 王俊霖3

        1(中國科學(xué)院大學(xué), 北京 100049)2(中國科學(xué)院沈陽計算技術(shù)研究所, 沈陽 110168)3(大連理工大學(xué)軟件學(xué)院, 大連 116024)

        介紹了異構(gòu)協(xié)議報文格式和特點(diǎn), 通過使用 XML 語言描述可擴(kuò)展協(xié)議報文的方法, 以簡單協(xié)議解析為基礎(chǔ), 將解析器功能模塊化, 從而設(shè)計此異構(gòu)協(xié)議動態(tài)解析器模型. 應(yīng)用此模型實現(xiàn)不必重新編譯, 只需進(jìn)行少量代碼修改, 即可完成異構(gòu)協(xié)議報文自動模型匹配, 進(jìn)而完成報文數(shù)據(jù)解析. 針對兩種簡單協(xié)議進(jìn)行模型應(yīng)用, 結(jié)果表明使用XML語言描述協(xié)議報文的方法及可重構(gòu)的解析器能夠有效地描述和解析異構(gòu)協(xié)議報文, 獲得可靠的解析結(jié)果.

        異構(gòu)協(xié)議; 動態(tài)解析; XML; 狀態(tài)機(jī)

        1 引言

        設(shè)備管控系統(tǒng)是通過數(shù)據(jù)通信進(jìn)行設(shè)備采集信息及控制反饋信息的交互, 實現(xiàn)信息采集處理與遠(yuǎn)程設(shè)備管控, 需要按照相關(guān)協(xié)議格式與底層設(shè)備進(jìn)行數(shù)據(jù)通信. 由于設(shè)備及通信信息種類繁多, 通信協(xié)議多樣, 存在不同類型的協(xié)議幀格式[1], 導(dǎo)致數(shù)據(jù)預(yù)處理的復(fù)雜度增大.

        基于可擴(kuò)展低耦合的設(shè)計思想, 此協(xié)議解析器模型采用具有自描述性語言XML表現(xiàn)協(xié)議格式與內(nèi)容, 采納設(shè)計模式思想, 設(shè)計出可根據(jù)解析對象格式通過XML語言自定義協(xié)議解析規(guī)則, 實現(xiàn)異構(gòu)協(xié)議動態(tài)匹配, 使其可在不重新編譯情況下, 通過XML配置文件和解析模塊少量代碼的修改, 實現(xiàn)將異構(gòu)協(xié)議動態(tài)解析為標(biāo)準(zhǔn)協(xié)議. 模型獨(dú)立性強(qiáng), 可擴(kuò)展性好, 可解決數(shù)據(jù)通信中異構(gòu)協(xié)議數(shù)據(jù)的交互問題.

        2 協(xié)議解析器模型架構(gòu)設(shè)計

        基本協(xié)議解析是識別數(shù)據(jù)報頭部和提取數(shù)據(jù)字段以供后續(xù)數(shù)據(jù)處理的過程[2]. 協(xié)議解析器模型在此基礎(chǔ)上進(jìn)行擴(kuò)展, 按照數(shù)據(jù)的流入、處理、流出, 可分為三大主要模塊: 異構(gòu)數(shù)據(jù)接入層, 譯碼層, 標(biāo)準(zhǔn)數(shù)據(jù)交互層.

        異構(gòu)數(shù)據(jù)接入層與數(shù)據(jù)采集端進(jìn)行交互, 完成UDP異構(gòu)數(shù)據(jù)報接收[3]. 譯碼層進(jìn)行數(shù)據(jù)報匹配及解析處理, 詳細(xì)設(shè)計分為決策組件和適配組件, 決策組件是模型的檢測機(jī)構(gòu), 鑒別報文合法性; 適配組件將已通過檢測的報文進(jìn)行模式適配, 匹配XML配置文件中定義的解析模板, 完成報文解析. 標(biāo)準(zhǔn)數(shù)據(jù)交互層負(fù)責(zé)將數(shù)據(jù)發(fā)送到管控系統(tǒng)后續(xù)的數(shù)據(jù)處理服務(wù)器做進(jìn)一步的數(shù)據(jù)存庫與推送.

        動態(tài)協(xié)議解析器模型架構(gòu)設(shè)計圖如圖1所示.

        圖1 動態(tài)協(xié)議解析器模型架構(gòu)

        3 協(xié)議解析器模型組件詳細(xì)設(shè)計

        協(xié)議解析的基本流程是解析器讀取數(shù)據(jù)報首部, 驗證數(shù)據(jù)報文合法性, 通過讀取識別信息, 確定是否有解析模板可以匹配解析, 適配相應(yīng)解析模板進(jìn)行異構(gòu)協(xié)議數(shù)據(jù)的解析, 最終將標(biāo)準(zhǔn)數(shù)據(jù)傳送給數(shù)據(jù)處理服務(wù)器做進(jìn)一步數(shù)據(jù)處理與數(shù)據(jù)轉(zhuǎn)存、顯示. 功能組件詳細(xì)設(shè)計如下.

        3.1 異構(gòu)數(shù)據(jù)接入層

        協(xié)議解析器模型要接入的基本信息單元是數(shù)據(jù)包, 將數(shù)據(jù)包接收階段定義為不同的狀態(tài), 將接收新的數(shù)據(jù)作為外部觸發(fā)條件, 從而改變狀態(tài), 此異構(gòu)數(shù)據(jù)接入層可抽象表現(xiàn)為一個基于有限狀態(tài)機(jī)的網(wǎng)絡(luò)通信數(shù)據(jù)接收端[4]. 基于有限狀態(tài)機(jī)的狀態(tài)模型圖如下:

        3.2 譯碼層決策組件

        譯碼層是整個模型核心部分, 解析異構(gòu)協(xié)議首先要判斷協(xié)議內(nèi)容是否合法, 能否被適配組件解析, 因此決策組件協(xié)議識別至關(guān)重要. 協(xié)議解析器采用數(shù)據(jù)報邊接收邊解析的方式, 基于有限狀態(tài)機(jī)進(jìn)行異構(gòu)數(shù)據(jù)接入的同時, 進(jìn)行協(xié)議合法性決策判斷.

        狀態(tài)機(jī)的兩個主要組成部分是: 事物所處狀態(tài)、引發(fā)狀態(tài)變化的外部事件[5]. 程序?qū)崿F(xiàn)過程中定義不同數(shù)字編號表示不同狀態(tài), 狀態(tài)變量值的改變即可描述狀態(tài)的變化. 結(jié)合狀態(tài)圖, 示例代碼實現(xiàn)如下:

        LONG ReciveInfo::OnCommunication(WPARAM data)

        {

        receivedata = (BYTE)data;

        if(receive_state_machine == 0)

        {

        if(receivedata == 0x77) // 接收到起始標(biāo)志

        receive_state_machine = 1;

        else

        receive_state_machine = 0; // 狀態(tài)機(jī)復(fù)位

        }

        else if(receive_state_machine == 4)

        {

        if(receivedata == 0xAA) // 接收到校驗位

        receive_state_machine = 5;

        else

        receive_state_machine = 0; // 狀態(tài)機(jī)復(fù)位

        }

        }

        將接收數(shù)據(jù)劃分為不用階段, 通過變量值表示狀態(tài), 接收數(shù)據(jù)幀和數(shù)據(jù)監(jiān)測結(jié)果作為狀態(tài)機(jī)觸發(fā)條件, 從而改變狀態(tài), 最終完成一個數(shù)據(jù)包的接收和校驗.

        圖2 異構(gòu)數(shù)據(jù)接入層狀態(tài)圖

        3.3 譯碼層適配組件

        動態(tài)協(xié)議解析器模型中適配組件的設(shè)計是通過分析異構(gòu)協(xié)議變化特點(diǎn), 設(shè)計可擴(kuò)展協(xié)議格式, 采用具有自描述性及可擴(kuò)展性的XML 配置文檔進(jìn)行封裝, 反映通信協(xié)議的格式和內(nèi)容. 經(jīng)決策組件校驗的協(xié)議可被適配組件按解析模板進(jìn)行動態(tài)解析. 協(xié)議的改變只需要動態(tài)修改XML描述文件同時符合XML Schema驗證文檔即可. 根據(jù)XML協(xié)議配置文件適配協(xié)議解析模板, 通過動態(tài)加載XML協(xié)議數(shù)據(jù)幀得出字段的物理含義.

        解析器模型框架詳細(xì)組件設(shè)計如圖3所示.

        圖3 異構(gòu)協(xié)議動態(tài)解析器模型

        4 動態(tài)解析器模型中XML的使用設(shè)計

        4.1 報文的XML文件描述

        網(wǎng)絡(luò)通信協(xié)議需要用協(xié)議幀描述傳輸信息, 通常采用硬編碼方式嚴(yán)格定義協(xié)議格式, 針對每個協(xié)議格式編寫固定代碼實現(xiàn)協(xié)議解析, 此方式不具通用性, 不便于擴(kuò)展, 而基于 XML 配置文檔的解析方式使得異構(gòu)協(xié)議可擴(kuò)展, 在軟件解析中應(yīng)用較多[6].

        使用XML描述協(xié)議表現(xiàn)協(xié)議字段在數(shù)據(jù)幀中的位置及所占的字節(jié)數(shù)等抽象化信息, 可以定義統(tǒng)一的數(shù)據(jù)傳輸格式, 協(xié)議內(nèi)容及形式的改變, 只修改XML文檔中元素的屬性值即可, 此文件是解析器淺層解析的模板.

        4.2 XML解析模板配置文件

        以上配置文件代碼描述了幀標(biāo)識與解析模板號的關(guān)系, 協(xié)議解析程序?qū)?shù)據(jù)幀進(jìn)行匹配時會識別出幀標(biāo)識, 與XML配置文件進(jìn)行模板匹配, 最終通過temp屬性值確定數(shù)據(jù)幀解析模板號, 完成數(shù)據(jù)解析.

        4.3 XML Schema協(xié)議驗證文檔

        為改善硬編碼的不可擴(kuò)展性, XML協(xié)議描述文件也要摒棄嚴(yán)格定義協(xié)議格式的方式, 將數(shù)據(jù)升華為Item元素抽象間接描述, 定義一個Schema文檔規(guī)范XML配置文件架構(gòu)[7]. XML Schema示例代碼如下:

        4.4 XML解析庫的使用

        常見XML解析器有tinyxml、Xerces、pugixml、libxml等, 通過對比不同XML解析器對編程語言及開發(fā)環(huán)境等的支持[8], 選擇Xerces-C++應(yīng)用于本模型.

        Xerces-C++ 主要組件是掃描程序, 本解析器模型需要進(jìn)行驗證因此選擇SGXMLScanner[9]. 根據(jù)線程模型, 主線程調(diào)用Initialize(), 創(chuàng)建其他用于解析的線程, 最后調(diào)用Terminate(). 初始化期間創(chuàng)建解析器池, 可以在運(yùn)行時使用這些解析器, 從而避免構(gòu)造和分解解析器的開銷.

        5 測試及結(jié)果分析

        5.1 實驗設(shè)計

        以設(shè)備管控系統(tǒng)為背景, 項目中數(shù)據(jù)網(wǎng)關(guān)需要和底層儀器進(jìn)行通信采集信息, 選取以下兩種異構(gòu)協(xié)議報文進(jìn)行測試.

        XML協(xié)議描述示例代碼如下:

        將具體元素抽象為Item元素, 可承載不同協(xié)議內(nèi)容, 避免了固定協(xié)議格式的弊端. 測試表明: 基于XML文件的協(xié)議描述方式可以很好地描述異構(gòu)協(xié)議, 且修改與擴(kuò)展方便可行.

        通過使用編程接口及線程池、網(wǎng)絡(luò)通信等實現(xiàn)協(xié)議數(shù)據(jù)接收及解析推送. 測試程序解析類工廠模式類圖設(shè)計如圖5.

        圖5 解析類工廠模式類圖

        5.2 測試結(jié)果

        測試程序采用多線程編程模擬數(shù)據(jù)采集器控制數(shù)據(jù)數(shù)量, 從而測試解析不同數(shù)量數(shù)據(jù)幀所需要的時間.

        圖6 協(xié)議解析器數(shù)據(jù)接入及解析界面

        上圖為協(xié)議解析器模型測試程序數(shù)據(jù)接收層接收的數(shù)據(jù)及經(jīng)過譯碼層后解析出的數(shù)據(jù)演示界面. 數(shù)據(jù)幀解析時間采用軟件讀取定時計數(shù)器值, 將不同時刻讀取的值進(jìn)行差值計算得出時間測試值.

        結(jié)果表1所示.

        表1 解析時間記錄表

        從測試可以看出: 數(shù)據(jù)幀解析時間為ms級別, 且從整體看協(xié)議解析所需時間未表現(xiàn)出隨數(shù)據(jù)幀數(shù)量的增加同比上升, 以上數(shù)據(jù)僅表現(xiàn)出此實驗的測試結(jié)果, 實際應(yīng)用中結(jié)合調(diào)度器線程合理分配, 進(jìn)一步改進(jìn)解析模塊程序或?qū)⒌玫礁玫臅r間性能指標(biāo).

        6 結(jié)語

        該解析器模型使用XML描述協(xié)議格式與內(nèi)容, 層次關(guān)系清晰, 協(xié)議發(fā)生變化或新增協(xié)議時, 只需適當(dāng)修改XML協(xié)議描述文件, 或增加新的解析模塊, 即可實現(xiàn)對數(shù)據(jù)幀的解析, 充分體現(xiàn)了設(shè)計考慮的可重構(gòu)性與可擴(kuò)展性[10]. 此模型可靠性強(qiáng), 數(shù)據(jù)轉(zhuǎn)換效率高, 能夠?qū)?shù)據(jù)格式和映射關(guān)系實現(xiàn)靈活定制, 可以應(yīng)用到多種類型設(shè)備及工業(yè)控制, 實現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換.

        1 俞曉華,于鳳芹,欽道理.一種能耗數(shù)據(jù)采集協(xié)議描述及生成解析方法.計算機(jī)技術(shù)與發(fā)展,2015.

        2 Gibb G. Design Principles for Packet Parsers. Stanford University Microsoft Research, 2015.

        3 王智莉,卜方玲.異構(gòu)感知數(shù)據(jù)的動態(tài)適配接入方法.傳感器與微系統(tǒng),2015.

        4 潘準(zhǔn)洋,劉彩霞,劉樹新.基于有限狀態(tài)機(jī)的網(wǎng)絡(luò)協(xié)議狀態(tài)機(jī)制檢測方法.計算機(jī)應(yīng)用研究,2015.

        5 李瑩,賈彬.一種基于狀態(tài)機(jī)的串口通信協(xié)議的設(shè)計與實現(xiàn).電子設(shè)計工程,2012.

        6 齊建業(yè),余祥,劉峻宇,李強(qiáng).協(xié)議一致性測試數(shù)據(jù)包的構(gòu)造與解析.西南科技大學(xué)學(xué)報,2013.

        7 Thaw TZ, Khin MM. Measuring qualities of XML schema documents. Journal of Software Engineering and Applications, 2013.

        8 http://lars.ruoff.free.fr/xmlcpp/.

        9 http://xerces.apache.org/xerces-c/.

        10 梁彥杰,廉東本.基于消息中間件的數(shù)據(jù)交換平臺傳輸框架設(shè)計.計算機(jī)系統(tǒng)應(yīng)用,2012,21(4):10-13.

        Model of Dynamic Parser for Heterogeneous Protocol

        WANG Yong-Na1,2, ZHAO Kui2, WANG Hong-Liang2, WANG Jun-Lin3

        1(University of Chinese Academy of Sciences, Beijing 100049, China)2(Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China)3(School of Software Technology, Dalian University of Technology, Dalian 116024, China)

        This paper firstly describes the format and features of heterogeneous protocol packet. Then it describes the extended protocol packets by using the XML language, and modularizes the parser function to design a model of dynamic heterogeneous protocol parser based on the method of simple protocol analysis. Realizations applying this model can be achieved without recompiling, and only a small amount of code changes is needed to complete the model automatic matching of heterogeneous protocol packets, and then complete the analysis of packet data. We apply the model into two simple protocols, and the results show that the method of using XML to describe the protocol message and the reconfigurable parser can describe and analyze the heterogeneous protocol message effectively, and obtain reliable analysis result.

        heterogeneous protocol; dynamic analysis; XML; state machine

        國家水體污染控制與治理科技重大專項課題(2012ZX07505003)

        2016-04-26;收到修改稿時間:2016-06-21

        [10.15888/j.cnki.csa.005533]

        猜你喜歡
        解析器狀態(tài)機(jī)異構(gòu)
        試論同課異構(gòu)之“同”與“異”
        基于多解析器的域名隱私保護(hù)機(jī)制
        基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實現(xiàn)
        基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
        如何防御DNS陷阱?常用3種DNS欺騙手法
        一種基于無關(guān)DNS的通信隱私保護(hù)技術(shù)研究
        電子世界(2018年14期)2018-04-15 16:14:25
        overlay SDN實現(xiàn)異構(gòu)兼容的關(guān)鍵技術(shù)
        LTE異構(gòu)網(wǎng)技術(shù)與組網(wǎng)研究
        在新興異構(gòu)SoCs上集成多種系統(tǒng)
        FPGA設(shè)計中狀態(tài)機(jī)安全性研究
        亚洲精品有码在线观看| 国产人妻鲁鲁一区二区| 九九久久99综合一区二区| 丰满少妇在线观看网站| 久久精品国产亚洲综合色| 国产精品日本中文在线| 国产亚洲av另类一区二区三区| 亚洲精品熟女国产| 久久精品中文字幕第23页| 经典女同一区二区三区| 少妇人妻无奈的跪趴翘起| 日韩av高清在线观看| 醉酒后少妇被疯狂内射视频| 色婷婷久久免费网站| 国产自拍视频免费在线观看| 精品无人码麻豆乱码1区2区| 蜜桃av噜噜一区二区三区| 99久久精品久久久| 91熟女av一区二区在线| 美女露内裤扒开腿让男人桶无遮挡| 成人免费毛片内射美女-百度 | 国产人成精品免费视频| 久久综合给合久久97色| 女人av天堂国产在线| 亚洲av无码一区二区乱孑伦as | 久久久国产精品ⅤA麻豆百度| 不卡免费在线亚洲av| 午夜福利理论片在线观看| 国产99r视频精品免费观看| 中文字幕在线人妻视频| 麻豆精品一区二区av白丝在线| 亚洲av无码xxx麻豆艾秋| 久久国产亚洲AV无码麻豆| 91麻豆精品久久久影院| 国产suv精品一区二区四| 一本之道高清无码视频| 青青草99久久精品国产综合| 手机久草视频福利在线观看| 免费无遮挡禁18污污网站| 久久99精品久久久久久齐齐百度| 91羞射短视频在线观看|