国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

通用變長協(xié)議數(shù)據(jù)描述及解析方法研究*

2015-03-14 08:07張志祥商雄偉
艦船電子工程 2015年5期
關(guān)鍵詞:數(shù)據(jù)項報文編碼

張志祥 商雄偉

(海軍工程大學(xué) 武漢 430033)

?

通用變長協(xié)議數(shù)據(jù)描述及解析方法研究*

張志祥 商雄偉

(海軍工程大學(xué) 武漢 430033)

越來越多的數(shù)據(jù)通信協(xié)議中出現(xiàn)了選項和長度不固定的報文,給報文描述和自動解析帶來困難。分析了硬編碼報文解析方式的特點和存在的問題,提出了基于報文描述信息的統(tǒng)一報文解析方式,該方式使用于元數(shù)據(jù)描述報文格式和解析要求。設(shè)計了報文描述的概念模型,報文中各數(shù)據(jù)項的形式化描述,以及相應(yīng)的通用解析算法。使用這種統(tǒng)一的報文描述方法和通用解析算法,可以靈活地解析數(shù)據(jù)。

協(xié)議描述; 元數(shù)據(jù); 報文解析

Class Number TP311.52

1 引言

工業(yè)控制系統(tǒng)通常是由多個子系統(tǒng)構(gòu)成,各子系統(tǒng)之間通過以太網(wǎng)、串口、總線等不同傳輸接口交換數(shù)據(jù)。為了檢驗報文協(xié)議,以及分析系統(tǒng)功能和性能,需要對各子系統(tǒng)之間傳輸?shù)膱笪倪M行解析。越來越多的協(xié)議采用變長方式進行編碼,給自動解碼帶來困難。目前的應(yīng)用大多是針對特殊的協(xié)議定制一套處理方法,這使得程序的擴充性和通用性變得很差,很難適應(yīng)協(xié)議的新版本或者支持別的協(xié)議。對于子系統(tǒng)多、接口復(fù)雜的系統(tǒng),往往報文種類數(shù)量眾多,增加了解析的工作量和難度。本文提出了基于元數(shù)據(jù)描述報文,基于報文描述的通用解析方法。

2 現(xiàn)狀分析

對報文的研究包括如下幾個方面:報文生成、報文數(shù)據(jù)傳輸/獲取、報文數(shù)據(jù)解析/轉(zhuǎn)換和報文協(xié)議描述等,其中報文協(xié)議描述是報文數(shù)據(jù)生成以及報文數(shù)據(jù)解析/轉(zhuǎn)換的基礎(chǔ)。

報文協(xié)議分為定長和變長兩種。對于定長協(xié)議報文,每一種報文中數(shù)據(jù)項數(shù)量和格式固定。定長報文具有編碼和解碼簡單的優(yōu)點,在有些情況下定長報文編碼過長。在通信帶寬受限或者通信信道質(zhì)量較差的情況下,不宜傳送較長的報文。和定長協(xié)議相比,變長協(xié)議具有報文數(shù)據(jù)短、傳輸可靠性高、速度快等特點。變長報文協(xié)議通過語法實現(xiàn)報文數(shù)據(jù)的可變性。報文由強制字段和可選字段組成,在報文描述中,字段或字段組是否出現(xiàn)由指示器來確定,從而實現(xiàn)按需發(fā)送,減少在傳輸過程中帶來的大量數(shù)據(jù)冗余,節(jié)約有限的帶寬資源。例如,歐美戰(zhàn)術(shù)數(shù)據(jù)鏈協(xié)議中專門有支持可變格式報文的VMF報文[1]。對于變長報文,目前采用自然語言、表格等非形式化方法描述每個字段的名稱、占用比特數(shù)和位置,說明每個字段的含義和可能取值。這樣的表示方法比較直觀,但是不適合機器閱讀,而且不同的協(xié)議之間表示方法有較大的差別,所以難以用于需要進行多協(xié)議統(tǒng)一處理的場合。

文獻[2]提出了一種通用的協(xié)議報文格式描述語言PFDL,使用該語言可以定義常量、變量、比特、選項、子結(jié)構(gòu)等類型。“選項”類型可支持可變格式的報文描述,但這種“可變”是靜態(tài)的,無法支持靠報文數(shù)據(jù)本身描述的可變性。文獻[3]將自描述的結(jié)構(gòu)體信息與數(shù)據(jù)信息分離,定義一種自解析報文協(xié)議HML。該協(xié)議通過限制結(jié)構(gòu)體信息的層數(shù),在保持自描述特性的同時,提高報文解析效率,解決高并發(fā)的大規(guī)模處理系統(tǒng)層次之間通信問題。但該協(xié)議的描述和使用很復(fù)雜;文獻[4~5]也使用XML語言描述協(xié)議報文,實現(xiàn)與協(xié)議無關(guān)的數(shù)據(jù)流解析和轉(zhuǎn)換,但都沒有處理變長報文的能力。文獻[6]提出一種基于特征關(guān)鍵字的多協(xié)議數(shù)據(jù)流轉(zhuǎn)換方法,分析基于特征關(guān)鍵字的數(shù)據(jù)幀格式描述方法,通過將通信協(xié)議數(shù)據(jù)幀格式的描述與數(shù)據(jù)流的解析轉(zhuǎn)換代碼相分離,實現(xiàn)與協(xié)議無關(guān)的數(shù)據(jù)流解析和轉(zhuǎn)換。該方法用穩(wěn)定的程序處理不穩(wěn)定的數(shù)據(jù)流,避免不同通信協(xié)議之間的數(shù)據(jù)流轉(zhuǎn)換均要編寫專用解析轉(zhuǎn)換程序的缺陷,具有較好的靈活性和普適性。國外有代表性的工作是文獻[7~9]。文獻[9]提出了一種基于XML的報文描述語言NetPDL,使用該語言可以描述應(yīng)用無關(guān)的協(xié)議,并實現(xiàn)多種網(wǎng)絡(luò)應(yīng)用,在此基礎(chǔ)上,文獻[10]實現(xiàn)了一個基于NetPDL的解析引擎BetBee。NetPDL提供了豐富的標簽元素,可以描述包括變長報文在內(nèi)的各種報文,但描述復(fù)雜。

上述方法均沒有很好地處理變長報文協(xié)議的自動化編解碼問題。越來越多的應(yīng)用要求能夠統(tǒng)一的處理不同的協(xié)議,統(tǒng)一的處理不同的報文格式。但沒有對可變格式報文統(tǒng)一的形式化描述方法,因此無法對可變格式報文進行自動化的編碼和解碼。

3 報文解析方法

對變長報文的解析存在兩種方式:硬編碼報文解析方式和統(tǒng)一報文解析方式。這里稱負責解析報文的程序為“解析器”。

硬編碼報文解析方式是為每類報文開發(fā)一個解析器,每個解析器負責一種報文的解析。報文流到達后,由多路分發(fā)器根據(jù)報文中的報文標識確定報文的具體類型,并分發(fā)到不同的解析器進行解析,得到報文解析結(jié)果。每種解析器負責解析一種報文。類型具體處理過程如圖1所示。

圖1 硬編碼報文解析方式

硬編碼報文解析方式的特點是一個解析器只解析一種類型的報文。其優(yōu)點是解析器的設(shè)計較簡單,易于實現(xiàn),其缺點是將解析規(guī)則硬編碼為各種解析器,使程序無法通用,一旦報文定義發(fā)生改變,都需要對原有程序重新進行調(diào)整,這使得程序本身非常脆弱,程序員工作量大,也不利于系統(tǒng)的擴展。

統(tǒng)一報文解析方式是增加表示層(元數(shù)據(jù))描述報文格式和報文解析要求,報文解析器根據(jù)報文描述信息對報文流進行解析,輸出解析結(jié)果。其處理過程如圖2所示。元數(shù)據(jù)是對報文數(shù)據(jù)格式的描述。

圖2 統(tǒng)一報文解析方式

這種方式的特點是通過報文描述信息體現(xiàn)報文的多樣性,通過改變報文描述信息擴充解析功能。對于定長報文,實現(xiàn)這種方式比較容易。但對于變長報文,其描述較復(fù)雜,報文解析器的編寫難度大。

變長報文描述的難點在于:數(shù)據(jù)種類多,難以處理;可選字段出現(xiàn)的條件復(fù)雜,難以描述;多類型數(shù)據(jù)和可選數(shù)據(jù)的描述到解析引擎的轉(zhuǎn)換復(fù)雜。

4 通用數(shù)據(jù)報文描述

4.1 變長數(shù)據(jù)報文實例

表1是某報文的描述信息,其中信息狀態(tài)字中的一些比特(bit)位表示后續(xù)信息塊是否出現(xiàn)。

表1 變長數(shù)據(jù)報文實例

數(shù)據(jù)報文是一個字節(jié)流。數(shù)據(jù)項是對應(yīng)應(yīng)用領(lǐng)域的一個特定信息,如表1中的通信標志、傳送字節(jié)數(shù)、命令狀態(tài)信息、遙測信息、設(shè)備工作狀態(tài)、方位、距離等。作為報文描述的最小單位,一個數(shù)據(jù)項對應(yīng)報文中的一個或者幾個bit位。變長報文的特點是某些數(shù)據(jù)項是否存在受之前解析出來的某些數(shù)據(jù)項的值決定,稱后者為條件數(shù)據(jù)項。

變長數(shù)據(jù)報文描述的難點在于如何表示某些數(shù)據(jù)項出現(xiàn)的條件。在變長報文中,某些數(shù)據(jù)項受其條件數(shù)據(jù)項的值的控制。如當“信息狀態(tài)字”中的最低位為1時才會出現(xiàn)“命令狀態(tài)信息”。

另外,作為一種通用的報文描述方法,需要考慮多種數(shù)據(jù)類型。變長報文中包括標志型數(shù)據(jù)和數(shù)值型數(shù)據(jù),數(shù)值型數(shù)據(jù)又分為不同的數(shù)據(jù)類型,如表2所示。有些數(shù)據(jù)項的解析需要考慮位運算。

表2 變長報文數(shù)據(jù)分類

4.2 變長報文的元數(shù)據(jù)描述

一個數(shù)據(jù)報文是數(shù)據(jù)項的有限序列。如圖3所示,數(shù)據(jù)項分為條件數(shù)據(jù)項和數(shù)值型數(shù)據(jù)項,數(shù)值型數(shù)據(jù)項可以受條件數(shù)據(jù)項的約束。

這里假設(shè)一個數(shù)據(jù)項是否出現(xiàn),只受一個標志型布爾量的控制。本假設(shè)適合于目前絕大多數(shù)協(xié)議。

用Item=〈itemid,name,type,blocklen,startbit,endbit,coef,condition,valuetype,value,offset〉表示某一報文中的一個數(shù)據(jù)項,其中:itemid為數(shù)據(jù)項的編號;name為數(shù)據(jù)項名稱;type為數(shù)據(jù)類型(見表2);blocklen為數(shù)據(jù)項所在數(shù)據(jù)塊的長度;startbit和endbit分別為該數(shù)據(jù)項在所在數(shù)據(jù)塊中的起始位和結(jié)束位;blocklen,startbit和endbit確定了該數(shù)據(jù)項所對應(yīng)的原始數(shù)據(jù)位置,對于有些只占二進制串(n個字節(jié))的其中m個連續(xù)位的整數(shù)型數(shù)據(jù),利用這三個屬性計算整數(shù)值;對于浮點型數(shù)據(jù)項,用coef表示最小單位;condition表示條件數(shù)據(jù)項;它是決定Item是否在報文中出現(xiàn)的數(shù)據(jù)項的itemid。valuetype和value分別為解析值類型和解析結(jié)果;offset用于確定在該數(shù)據(jù)項解析結(jié)束后解析下一個數(shù)據(jù)項所需的原始數(shù)據(jù)偏移量。

圖3 報文描述概念模型

例如,對于表1中的命令狀態(tài)信息標志,name=“命令狀態(tài)信息標志”,type=INDICATE,blocklen=1,startbit=7,endbit=7,coef=1,condition=0(表示無條件解析),offset=0。對于表1中的“方位”,name=“方位”,type=FLOAT,blocklen=2,startbit=0,endbit=15,coef=0.1,condition=4(表示在items中第4項“遙測信息標志”的值為真時解析該數(shù)據(jù)項,否則不解析),offset=2。

4.3 變長報文的自動解析方法

當采用如上的數(shù)據(jù)項描述后,就可以對接收報文進行自動解析。

表items是Item構(gòu)成的有序集合,其中的元素按照數(shù)據(jù)項可能出現(xiàn)的順序排序。解析算法如下:

輸入:報文描述信息,二進制數(shù)據(jù)buffer[0..n-1]

輸出:各數(shù)據(jù)項的解析值

步驟:

1、根據(jù)報文描述信息初始化items,i=j=0;

//i為要解析的數(shù)據(jù)項的編號,j為buffer中第i個數(shù)據(jù)項所對應(yīng)的源碼數(shù)據(jù)的開始位置。

2、如果items[items[i].condition].value!=“假”

2.1 對buffer[j…j+ items[i].blocklen]解析,得到items[i] .valuetype;

2.2 根據(jù)items[i].valuetype將解析結(jié)果轉(zhuǎn)換,得到items[i].value;

2.3 j=j+ items[i].offset;

3、i++;

4、如果解析未結(jié)束,轉(zhuǎn)2;否則算法結(jié)束。

其中步驟2.1對items[i]進行解析,數(shù)據(jù)塊為buffer[j…j+items[i].blocklen]。根據(jù)不同類型進行相應(yīng)的處理:

1) 布爾型:根據(jù)“起始位”信息得到布爾值。

2) 整數(shù)型(包括UNSIGNED和SIGNED):根據(jù)“起始位”、“結(jié)束位”信息得到整型值。

3) 浮點數(shù)型:根據(jù)長度確定浮點數(shù)精度,并進行相應(yīng)的轉(zhuǎn)換得到結(jié)果。

4) 字符型:根據(jù)長度直接轉(zhuǎn)換得到結(jié)果。

另外,可以用兩種方法判斷一個報文的解析是否結(jié)束:通過數(shù)據(jù)項編號i進行判斷;通過數(shù)據(jù)偏移量j進行判斷。也可以同時使用這兩個條件進行判斷。

5 結(jié)語

使用本方法開發(fā)的系統(tǒng)已經(jīng)在多型武器系統(tǒng)的測試工作中得到應(yīng)用,解析了近80種不同類型的報文,避免了多次重復(fù)開發(fā),極大地減少了工作量。

針對變長報文,使用統(tǒng)一的報文表示方法,可以滿足不同行業(yè)、不同歷史階段遺留下來的不同標準的需要,也能夠很好地兼顧現(xiàn)有類型的異構(gòu)數(shù)據(jù)報文格式標準。本文提出的方法不僅適合于變長報文解析,也適合于定長報文解析。

[1] 柏雪倩,毛玉泉,李連寶.戰(zhàn)術(shù)數(shù)據(jù)鏈的報文格式解讀[J].通信技術(shù),2009,42(4):52-54.

[2] 劉鴻,尹霞.一種通用的協(xié)議報文格式描述語言——PFDL[J].小型微型計算機系統(tǒng),2003,24(7):1119-1123.

[3] 羅毅,吳產(chǎn)樂,熊偉成.一種基于自解析報文協(xié)議的系統(tǒng)分層方法[J].計算機工程,2012,38(4):79-81.

[4] 劉喆,郇極,劉艷強.基于XML的EtherCAT工業(yè)以太網(wǎng)協(xié)議解析技術(shù)[J].北京航空航天大學(xué)學(xué)報,2011,37(9):1086-1090.

[5] 李海剛,高欣.基于元數(shù)據(jù)驅(qū)動的通用電文解析技術(shù)[J].控制工程,2013,20(S1):142-145.

[6] 林霞,蔡聲鎮(zhèn),吳允平,等.基于特征關(guān)鍵字的多協(xié)議數(shù)據(jù)流轉(zhuǎn)換方法[J].計算機工程,2011,37(5).

[7] Computer Networks Group(NetGroup) at Politecnico di Torino, Analyzer, Available from: 〈http://analyzer.polito.it〉, March 1999.

[8] Surasak Sanguanpong, Ekapol Rojratanavichai, Syntax directed, definition supported universal protocol analyzer, in: Electrical Engineering Conference(EECON), Kasetsart University, Bangkok, December 1999, Available from: 〈http://anreg.cpe.ku.ac.th/pub/protocol.pdf〉 (in Thai).

[9] Fulvio Risso, Mario Baldi. NetPDL: An extensible XML-based language for packet header description. Computer Networks 50 (2006), 688-706.

[10] Computer Networks Group(NetGroup) at Politecnico di Torino, The NetBee Library, Available from: 〈http://www.nbee.org/〉, August 2004.

Describing and Interpreting Method of Variant-length Protocol Data

ZHANG Zhixiang SHANG Xiongwei

(Naval University of Engineering, Wuhan 430033)

More and more data communication protocols use variant length data, which is difficult to be described and interpreted automatically. This paper summarizes existed approaches for describing and interpreting of protocols, the disadvantages of hard-coding interpreting methods, proposes a general interpreting method based on package descriptions of package format and interpreting requirements. The conceptual model of protocol describing, the formal description of data items and a corresponding general interpreting algorithm are given. The uniform description method and general interpreting algorithm can contribute to constructing flexible interpreting system.

description of protocol, meta-data, interpreting of packages

2014年11月10日,

2014年12月30日

張志祥,男,博士,副教授,研究方向:軟件質(zhì)量保證,計算機控制。商雄偉,男,碩士研究生,研究方向:數(shù)據(jù)采集與處理。

TP311.52

10.3969/j.issn1672-9730.2015.05.018

猜你喜歡
數(shù)據(jù)項報文編碼
基于J1939 協(xié)議多包報文的時序研究及應(yīng)用
國六柴油車遠程排放監(jiān)測數(shù)據(jù)項間相關(guān)性特征研究*
生活中的編碼
基于相似度的蟻群聚類算法?
低軌星座短報文通信中的擴頻信號二維快捕優(yōu)化與實現(xiàn)
CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
《全元詩》未編碼疑難字考辨十五則
子帶編碼在圖像壓縮編碼中的應(yīng)用
非完整數(shù)據(jù)庫Skyline-join查詢*
淺析反駁類報文要點