CN101141438B - 消息数据单元的分析方法 - Google Patents
消息数据单元的分析方法 Download PDFInfo
- Publication number
- CN101141438B CN101141438B CN200710163140A CN200710163140A CN101141438B CN 101141438 B CN101141438 B CN 101141438B CN 200710163140 A CN200710163140 A CN 200710163140A CN 200710163140 A CN200710163140 A CN 200710163140A CN 101141438 B CN101141438 B CN 101141438B
- Authority
- CN
- China
- Prior art keywords
- message data
- data cell
- definition
- analytical method
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种消息数据单元的分析方法,包括以下步骤:确定至少一个消息数据单元的扫描关键字;建立用于存储至少一个消息数据单元的特征信息的数据结构;以及对至少一个消息数据单元进行预处理,并利用扫描关键字找出经过预处理的至少一个消息数据单元中的特征信息,并将特征信息存储到数据结构中,以对至少一个消息数据单元进行分析。本发明可以避免把ASN.1消息数据单元文件人工转换成可编译文件的巨大工作量,并且可以使后续计算机生成ASN.1消息数据单元的编解码代码变得更加简便。
Description
技术领域
本发明涉及通信领域,更具体地涉及一种消息数据单元的分析方法。
背景技术
在现代通信领域,随着通信功能的日益强大,很多网络协议已成为一个非常庞大和复杂的软件系统,这个系统中有着许多基于不同编解码规则的编解码过程,比如层3消息编解码以及基于ASN.1(Abstract Sybtax Notation One)定义的消息数据单元的编解码等。这些编解码过程是整个协议软件系统的重要组成部分,并起着极其重要的作用。
目前,对于基于ASN.1定义的消息数据单元的编解码代码的实现,可以采用编写自动代码生成工具,并用它自动产生编解码代码的办法。目前的方法有人工分析ASN.1定义的消息数据单元,并改写成编译器可识别的文件形式再用于自动代码生成工具分析并产生编解码代码;显然此种方式需要对ASN.1规则有深入的理解、工作量大,并且人工操作也会带入许多不必要的错误。
发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种消息数据单元的分析方法。
根据本发明的消息数据单元的分析方法,包括以下步骤:确定至少一个消息数据单元的扫描关键字;建立用于存储至少一个消息数据单元的特征信息的数据结构;以及对至少一个消息数据单元进行预处理,并利用扫描关键字找出经过预处理的至少一个消息数据单元中的特征信息,并将特征信息存储到数据结构中,以对至少一个消息数据单元进行分析。
其中,定义扫描关键字的步骤具体包括:对至少一个消息数据单元中的消息数据进行归纳;找出至少一个消息数据单元包含的关键字;以及根据所找出的关键字和至少一个消息数据单元的具体描述形式定义扫描关键字。
其中,对至少一个消息数据单元进行的预处理是去除至少一个消息数据单元中的冗余信息。其中,冗余信息包括注释信息和无用信息。可以根据注释信息的标记去除至少一个消息数据单元的注释信息。
其中,消息数据单元包括以下定义中的至少一种:常量的定义、以及其他类型的定义。数据结构包括以下定义中的至少一种:描述协议相关信息和消息的根结构定义、消息内部成员的结构信息定义、枚举成员的结构定义、以及常量的结构定义。消息数据单元是基于ASN.1定义的消息数据单元。
本发明可以避免把ASN.1消息数据单元文件人工转换成可编译文件的巨大工作量,并且可以使后续计算机生成ASN.1消息数据单元的编解码代码变得更加简便。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明的消息数据单元的分析方法的流程图。
具体实施方式
下面参考附图,详细说明本发明的具体实施方式。
参考图1,说明根据本发明实施例的消息数据单元的分析方法。如图1所示,该分析方法包括以下步骤:
S102,确义至少一个消息数据单元的扫描关键字。
具体地,对通信协议文件中的所有ASN.1消息数据单元进行人工分析。ASN.1消息数据单元包含两种形式,即常量的定义和其它类型的定义。例如,常量的定义的格式如下:
maxAC INTEGER::=16
其它类型的定义主要有″BOOLEAN″、″INTEGER″、″BIT″、″OCTET″、″ENUMERATED″、″SEQUENCE″、″SEQUENCE OF″、″CHOICE″、″OBJECT″等形式。其中,前四种属于简单形式,后五种属于复杂形式。举例如下:
InterRATReportingQuantity::=SEQUENCE{
utran-EstimatedQuality BOOLEAN,
ratSpecificInfo CHOICE{
gsm SEQUENCE{
--dummy and dummy2 are not used in this version of the specification
--and when received they should be ignored.
dummy BOOLEAN,
dummy2 BOOLEAN,
gsm-Carrier-RSSI BOOLEAN
}
}
}
上面的例子包含了ASN.1定义的消息数据单元的基本形式。可以看到,要想在这样的文件中正确提取特征信息,必须首先根据注释的标记过滤掉注释,然后再根据ASN.1所包含的关键字和ASN.1消息数据单元的具体描述形式(定义关键字如下“NULL”、“BOOLEAN”、”INTEGER”、“ENUMERATED”、“BIT”、“OCTET”、“SEQUENCE”、″OF″、″CHOICE″、″OBJECT″、″OPEN″、″STRING″、″SIZE″、″OPTIONAL″、″DEFAULT″、″::=″,″{″,″}″,″(″,″)″,″..″,″,″)来获得ASN.1定义的消息数据单元的特征信息。
S104,建立用于存储至少一个消息数据单元的特征信息的数据结构。
具体地,定义存放ASN.1定义的消息数据单元的特征信息的数据结构。这些数据结构共有四种定义,分别为getBoot_T、getMid_T、getMidEnum_T、getBootCons_T。其中,getBoot_T是描述协议相关信息和消息的根结构定义;getMid_T是消息内部成员的结构信息定义;getMidEnum_T是枚举成员的结构定义;getBootCons_T是常量的结构定义。这些数据结构用于存放ASN.1定义的消息数据单元的特征信息。为了便于实现对ASN.1定义的消息数据单元的特征信息的数据结构的查询、管理等功能,定义了两个结构T_DataMng和T_StrMng;定义T_DataMng结构的三个实例,分别管理getBoot_T结构链表、getMid_T结构成员链表、getBootCons_T常量链表。定义T_StrMng的两个实例,分别管理getMidEnum_T枚举成员结构链表和字符串链表。数据结构举例如下:
typedef struct{
BYTE *pbName; /*协议名字*/
BYTE *pbNewName; /*消息结构名字*/
BYTE bType; /*类型*/
BYTE bExtFg; /*扩展标记位,1表示存在扩展*/
BYTE *pbTypeName;/*成员类型名字,仅当bType未知时使用*/
BYTE *pLb; /*下限*/
BYTE *pUb; /*上限*/
WORD wSubNum; /*枚举类型个数、Sequence成员个数*/
VOID *pSubHd; /*枚举类型成员首地址、Sequence成员首地址*/
}getBoot_T;
/***************************************************************/
typedef struct{
BYTE *pVarName; /*成员名字*/
BYTE *pNewVarName; /*调整后的成员名字*/
BYTE *pTypeName; /*类型名字*/
BYTE bTType; /*增加的自定义类型,用于嵌套的复杂类型*/
BYTE bOptionalFg; /*可选标志位,1表示可选*/
BYTE bDefaultFg; /*缺省标志位,1表示缺省*/
BYTE bExtFg; /*扩展标记位,1表示在扩展外*/
BYTE *pLb;/*下限, 仅INTEGER、BIT STRING、OBJECT
STRING时存在*/
BYTE *pUb;/*上限,仅INTEGER、BIT STRING、OBJECT
STRING时存在*/
}getMid_T;
/***************************************************************/
typedef struct{
BYTE *pSName; /*调整后的枚举成员名字*/
BYTE *pName; /*枚举成员名字}/
}getMidEnum_T;
/***************************************************************/
typedef struct{
BYTE *pSName; /*调整后的常量名字*/
BYTE *pName; /*常量名字*/
BYTE *pNum; /*常量值*/
}getBootCons_T;
/*******************************************************************/
typedef struct{
DWORD dwFreeH; /*空闲链表首地址*/
DWORD dwUsedH; /*忙链表首地址*/
DWORD dwHPtr; /*管理内存起始地址*/
DWORD dwStep; /*节点数据块长度,包含前后指针*/
DWORD dwUsedNum;/*使用节点个数*/
}T_DataMng;
typedef struct{
DWORD dwStrH; /*字符串内存起始地址*/
DWORD dwStrCur; /*字符串内存当前地址*/
}T_StrMng;
/*******************************************************************/
DWORD dwStrCur; /*字符串内存当前地址*/
}T_StrMng;
/*******************************************************************/
S106,对至少一个消息数据单元进行预处理,并利用扫描关键字找出经过预处理的至少一个消息数据单元中的特征信息,并将特征信息存储到数据结构中,以对至少一个消息数据单元进行分析。
具体地,根据步骤S102中的处理去掉注释等无用内容,并根据所定义的关键字对ASN.1定义的消息数据文件中的ASN.1定义的消息数据单元进行扫描过滤。具体做法是,以关键字为扫描识别的标志,按照ASN.1具体定义规则进行顺序扫描。
对于常量定义,将其特征信息加入到getBootCons_T结构链表中即可;对于简单形式消息数据单元,只需将其特征信息加入到getBoot_T结构中并把这个结构链入到相应的管理链表中;对于ENUMERATED枚举类型,需将枚举成员的信息添加到getMidEnum_T结构中并把这个结构链入到相应的管理链表中。
对其他形式的复杂形式的消息数据单元,需进行嵌套处理;具体处理方法是先把复杂形式的消息数据单元作为一个整体,把它的特征信息放到getBoot_T结构中并把这个结构链入到相应的管理链表中;然后依次识别复杂形式的消息数据单元中的各个成员,并把每个成员的特征信息存放入getMid_T结构中,并把这个结构链入到相应的管理链表中,如果成员也是一个复杂形式的消息数据单元,那么需要重复上面的步骤;这就是嵌套处理的含意。
另外,需要说明的是,对于非ASN.1抽象数据类型定义的消息成员,即表明是引用的其它已定义的消息数据单元。并将引用的消息数据单元的结构名记录在getMid_T结构变量中。
通过扫描就可以将ASN.1定义的消息数据文件中的ASN.1定义的消息数据单元的各种结构组成信息记录到所定义的数据结构中。这样就完成了对ASN.1定义的消息数据单元自动读取和分析。
具体地,定义扫描关键字的步骤可以具体包括:S1022,对至少一个消息数据单元中的消息数据进行归纳;S1024,找出至少一个消息数据单元包含的关键字;以及S1026,根据所找出的关键字和至少一个消息数据单元的具体描述形式定义扫描关键字。
本发明可以避免把ASN.1消息数据单元文件人工转换成可编译文件的巨大工作量,并且可以使后续计算机生成ASN.1消息数据单元的编解码代码变得更加简便。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (7)
1.一种消息数据单元的分析方法,其特征在于,包括以下步骤:
确定至少一个消息数据单元的扫描关键字,其中,所述消息数据单元是基于ASN.1定义的消息数据单元;
建立用于存储所述至少一个消息数据单元的特征信息的数据结构;以及
对所述至少一个消息数据单元进行预处理,并利用所述扫描关键字找出经过预处理的至少一个消息数据单元中的特征信息,并将所述特征信息存储到所述数据结构中,以对所述至少一个消息数据单元进行分析。
2.根据权利要求1所述的分析方法,其特征在于,定义所述扫描关键字的步骤具体包括:
对所述至少一个消息数据单元中的消息数据进行归纳;
找出所述至少一个消息数据单元包含的关键字;以及
根据所找出的关键字和所述至少一个消息数据单元的具体描述形式定义所述扫描关键字。
3.根据权利要求1或2所述的分析方法,其特征在于,对所述至少一个消息数据单元进行的预处理是去除所述至少一个消息数据单元中的冗余信息。
4.根据权利要求3所述的分析方法,其特征在于,所述冗余信息包括注释信息和无用信息。
5.根据权利要求4所述的分析方法,其特征在于,所述消息数据单元包括以下定义中的至少一种:常量的定义、以及其他类型的定义。
6.根据权利要求5所述的分析方法,其特征在于,所述数据结构包括以下定义中的至少一种:描述协议相关信息和消息的根结构定义、消息内部成员的结构信息定义、枚举成员的结构定义、以及常量的结构定义。
7.根据权利要求6所述的分析方法,其特征在于,根据所述注释信息的标记去除所述注释信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710163140A CN101141438B (zh) | 2007-10-10 | 2007-10-10 | 消息数据单元的分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710163140A CN101141438B (zh) | 2007-10-10 | 2007-10-10 | 消息数据单元的分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101141438A CN101141438A (zh) | 2008-03-12 |
CN101141438B true CN101141438B (zh) | 2012-09-05 |
Family
ID=39193184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710163140A Active CN101141438B (zh) | 2007-10-10 | 2007-10-10 | 消息数据单元的分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101141438B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332018B (zh) * | 2011-09-21 | 2013-10-23 | 西安理工大学 | 一种Asn.1编码的快速读码方法 |
CN103246671A (zh) * | 2012-02-09 | 2013-08-14 | 中兴通讯股份有限公司 | 抽象语法标记文件的处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2730078A1 (fr) * | 1995-01-31 | 1996-08-02 | Joubert Anne | Installation de numerisation, d'indexation et d'archivage electronique de donnees pour la constitution d'un serveur documentaire medicale |
JP2002251403A (ja) * | 2001-02-26 | 2002-09-06 | Ricoh Co Ltd | 文書蓄積・検索システム |
CN1508721A (zh) * | 2002-12-20 | 2004-06-30 | 中国科学院计算技术研究所 | 快速内容分析的多关键词匹配方法 |
CN1540504A (zh) * | 2003-04-26 | 2004-10-27 | 徐砚星 | 流式分类统计方法 |
-
2007
- 2007-10-10 CN CN200710163140A patent/CN101141438B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2730078A1 (fr) * | 1995-01-31 | 1996-08-02 | Joubert Anne | Installation de numerisation, d'indexation et d'archivage electronique de donnees pour la constitution d'un serveur documentaire medicale |
JP2002251403A (ja) * | 2001-02-26 | 2002-09-06 | Ricoh Co Ltd | 文書蓄積・検索システム |
CN1508721A (zh) * | 2002-12-20 | 2004-06-30 | 中国科学院计算技术研究所 | 快速内容分析的多关键词匹配方法 |
CN1540504A (zh) * | 2003-04-26 | 2004-10-27 | 徐砚星 | 流式分类统计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101141438A (zh) | 2008-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101841515B (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
CN106599104A (zh) | 一种基于redis集群的海量数据关联方法 | |
JP2000148461A (ja) | ソフトウェアモデル及び既存のソ―スコ―ドを同期化させる方法及びその装置 | |
CN101145157B (zh) | 一种xml格式嵌入式设备特征信息解析方法 | |
CN107329765B (zh) | 程序文件处理方法及装置 | |
CN102195895A (zh) | 一种消息发送、接收处理的方法及其装置 | |
CN101202736B (zh) | 一种基于抽象语法标记实现编解码的方法 | |
CN103345501A (zh) | 数据库更新方法和装置 | |
CN110191156B (zh) | 一种基于区块链的数据处理方法及装置 | |
CN101141438B (zh) | 消息数据单元的分析方法 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN113254026B (zh) | 低代码开发方法及装置 | |
CN103646015B (zh) | 发送、接收以及传输xml报文的方法和系统 | |
CN111552839B (zh) | 一种基于xml模板的对象转换方法 | |
CN111414339B (zh) | 一种文件的处理方法、系统、装置、设备及介质 | |
CN108090034B (zh) | 基于集群的单证代码统一编码生成方法和系统 | |
CN113741864B (zh) | 基于自然语言处理的语义化服务接口自动设计方法与系统 | |
CN102446164A (zh) | 一种报表公式的解析方法、装置及业务系统 | |
CN115967604A (zh) | 报文传输方法、装置、电子设备及计算机可读存储介质 | |
CN108073709A (zh) | 一种数据记录的操作方法、装置、设备和存储介质 | |
CN103716127A (zh) | 一种基于ttcn-3的压缩编解码的方法和系统 | |
CN114968917A (zh) | 一种文件数据快速导入方法及装置 | |
CN103246671A (zh) | 抽象语法标记文件的处理方法及装置 | |
CN100562008C (zh) | 消息处理系统及其处理方法 | |
CN114817124A (zh) | 多核微控制器间映射方法、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |