CN103188267B - 一种基于dfa的协议解析方法 - Google Patents

一种基于dfa的协议解析方法 Download PDF

Info

Publication number
CN103188267B
CN103188267B CN201310102083.0A CN201310102083A CN103188267B CN 103188267 B CN103188267 B CN 103188267B CN 201310102083 A CN201310102083 A CN 201310102083A CN 103188267 B CN103188267 B CN 103188267B
Authority
CN
China
Prior art keywords
dfa
node
search tree
protocol
resolved
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
Application number
CN201310102083.0A
Other languages
English (en)
Other versions
CN103188267A (zh
Inventor
倪宏
李军
陈君
李明哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Xinrand Network Technology Co ltd
Institute of Acoustics CAS
Original Assignee
Beijing Zhongke Huaying Media Technology Co ltd
Institute of Acoustics CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Huaying Media Technology Co ltd, Institute of Acoustics CAS filed Critical Beijing Zhongke Huaying Media Technology Co ltd
Priority to CN201310102083.0A priority Critical patent/CN103188267B/zh
Publication of CN103188267A publication Critical patent/CN103188267A/zh
Application granted granted Critical
Publication of CN103188267B publication Critical patent/CN103188267B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种基于DFA的协议解析方法,包括:获取待解析协议内容中的字段名称和字段分割符;将所述字段名称和所述字段分割符作为模式串,根据所述模式串构建模式查找树;将所述模式查找树和待解析协议内容作为确定有限状态自动机DFA的输入,利用所述DFA在待解析协议中对所述模式串进行匹配;以及根据匹配结果将待解析协议内容中的协议字段值提取出来。本发明一方面使用字符串多模式匹配构建模式查找树,另一方面使用DFA引擎,构建的模式查找树中的各个节点作为DFA中的各个状态,通过DFA引擎实现了字符串的快速匹配,大大提高了协议解析速度。

Description

一种基于DFA的协议解析方法
技术领域
本发明涉及协议解析,尤其涉及一种基于DFA的协议解析方法。
背景技术
协议是各种计算机应用中及应用间通信的方式,而协议解析成为一种特别是在网络应用中不可或缺的技术。通讯双方将通信内容封装在协议中,再将协议字符串传递给对方。进一步,从协议字符串中解析出协议内容的速度,直接影响系统的性能。
协议解析,其本质为字符串中协议字段的查找。目前主要的方法有纯软件的协议解析、基于字符串匹配算法的协议解析和基于硬件的协议解析等。纯软件的解析方法使用操作系统中的字符串查找和比较函数,其性能非常有限。基于字符串匹配算法的协议解析虽然比使用操作系统的字符串函数快很多,但还是受服务器芯片性能限制而越来越无法满足高并发、大数据量的网络应用需求。随着网络应用的快速发展,出现了基于硬件的协议解析方法,这种解析方法的性能较高。然而,基于硬件的协议解析方法存在扩展性差的缺陷,只能适用于一些预设的固定场景。
发明内容
本发明的目的是提供一种能够克服上述缺陷的基于DFA引擎的协议解析方法。
本发明提供了一种基于DFA的协议解析方法,包括:获取待解析协议内容中的字段名称和字段分割符;将所述字段名称和所述字段分割符作为模式串,根据所述模式串构建模式查找树;将所述模式查找树和待解析协议内容作为有限状态自动机的输入,利用所述DFA在待解析协议内容中对所述模式串进行匹配;以及根据匹配结果将待解析协议中的协议字段值提取出来。
优选地,所述模式查找树的根节点不包含字符,除根节点之外的其他节点至少包含一个字符,每个节点的所有子节点包含的字符都不相同。
优选地,根据所述模式串构建模式查找树的步骤包括:对所述模式查找树进行优化压缩,在优化压缩后的模式查找树中,除根节点之外的其他节点包含一个或多个字符。
优选地,所述模式串在所述查找树中是从根节点到其他任一节点的路径上的所有节点中包含的字符的顺序组合。
优选地,所述模式查找树的各个节点对应于所述DFA的各个状态,当所述匹配中出现失配时,所述DFA状态从所述模式查找树中对应DFA当前状态的节点跳转到下一节点。
优选地,所述利用所述DFA在待解析协议内容中对所述模式串进行匹配的步骤包括:通过利用DFA在待解析协议内容中匹配所述字段名称,得到所述字段名称在待解析协议内容中的字段名称位置;通过利用DFA在待解析协议内容中所述字段名称位置开始匹配所述字段分割符,得到与所述字段名称对应的字段分割符的位置;以及根据所述字段名称位置及其对应的字段分割符的位置,提取出与所述字段名称对应的协议字段值。
优选地,所述字段名称和所述字段分割符的获取是通过待解析协议的扩展巴克斯范式ABNF实现的。
优选地,所述模式串中包含一个或多个字段名称和一个字段分割符。
本发明一方面使用字符串多模式匹配构建模式查找树,另一方面使用DFA引擎,构建的模式查找树中的各个节点作为DFA中的各个状态,通过DFA引擎实现了字符串的快速匹配,大大提高了协议解析速度。
附图说明
图1是根据本发明实施例的基于DFA的协议解析方法的流程图;
图2是根据本发明实施例的模式查找树的示意图;
图3是根据本发明实施例的模式查找树在压缩后的示意图;
图4是根据本发明实施例的基于DFA的匹配示意图;以及
图5是根据本发明实施例的根据匹配位置获取字段值的示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明提出了一种使用DFA引擎的协议快速解析方法,首先根据待解析协格式中的模式串构建模式匹配查找树,将查找树的各个节点作为DFA状态机的不同状态,使用DFA引擎对原始文本进行快速匹配查找,找到协议中相应的模式串后给出协议内容的定位信息,进一步可解析得到相应的协议内容。本发明通过将多模式匹配与DFA引擎相结合,大大提高了协议解析速度。
图1是根据本发明实施例的基于DFA的协议解析方法的流程图。
在步骤101,获取待解析协议中的字段名称和字段分割符。
在接收到待解析协议内容后,可根据待解析协议的扩展巴克斯范式(AngmentedBackusNaurForm,ABNF)等格式得到待解析协议中的各个字段名称和字段分割符。
在步骤102,形成待查找模式串。
根据上面得到的待解析协议中的字段名称和字段分割符来形成待查找模式串,每个模式串中可以包含一个或多个字符。一般来说,待解析协议中可以有多个不同的字段名称,每个字段名称可以对应于形式上相同的多个字段分割符。
在步骤103,根据查找模式串构建出模式查找树。
首先构建一个空节点作为查找树的根。然后,依次遍历待查找模式串集合,其中,对每个待查找模式串,再依次遍历其中的每个字符。最后,根据每个模式串中的每个字符依次在根节点下构建新的节点,新的节点将作为子节点插入到查找树中。优选地,在查找树中插入子节点的过程遵循下面的原则。每个节点都至少包含一个字符;每个节点的所有子节点包含的字符都不相同;如果发现某个字符对应的节点已存在,则不插入子节点。
应当理解,最终形成的模式查找树应该具有这样的特征,即将从根节点到树中任一节点的路径上经过的节点上的字符连接起来,应该构成该任一节点对应的模式串。在某些特殊情况下,节点中也可以包含多余一个的字符,比如将常见的字段分割符\r\n包含在一个节点中。
在步骤104,将模式查找树和待解析的协议内容作为DFA引擎的输入。
具体而言,将查找树的各个节点作为DFA状态机的不同状态,用DFA引擎对原始文本/待解析协议内容中的字符串进行快速匹配查找。当出现失配时,DFA状态会从查找树中的一个节点跳转到下一个节点,而每次跳转都将离下一个匹配位置更近。模式查找树上各个边代表DFA中状态之间的跳变,将模式查找树与DFA引擎结合起来,可以加快匹配查找的速度。
在步骤105,通过DFA匹配得到字段名称的位置。
当通过DFA引擎在模式查找树中成功匹配到一个字段名称之后,即可得到该字段名称的位置。另外,该字段名称的匹配位置的下一个字符即为该字段名称对应的协议字段值的开始位置。
在步骤106,通过DFA引擎匹配得到步骤105中字段名称后的第一个字段分割符,从而计算出该字段分割符的位置。
本领域技术人员应当理解,在待解析协议内容中,通过一对模式串(包括字段名称和字段分割符)匹配成功,以及这一对模式串之间的协议内容的匹配不成功,可以通过简单计算并结合计数器等其他形式得到该协议字段值的起止位置。
在步骤107,根据对应的字段名称和字段分割符的位置,解析得到对应的协议字段值。
在步骤108,在得到待解析协议内容中的所有协议字段值后,完成该协议内容的解析。
通过DFA引擎对每对模式串的匹配,可以得到与各对模式串对应的协议字段在待解析协议内容的字符串中的位置。重复执行步骤105和步骤106,可以将每个协议字段解析出来,从而完成该协议内容的解析。
图2是根据本发明实施例的模式查找树的示意图。
图3是根据本发明实施例的模式查找树在压缩后的示意图。
下面,结合图2和图3对根据本发明实施例的模式查找树的创建及其形式进行详细描述。
在模式查找树的示例中,root节点为查找树的根节点,不包含任何字符,she、he、his和her为4个模式查找串。
首先,创建不包含字符的根节点root,然后遍历模式查找串。首先,遍历模式查找串she中的字符,依次在根节点下创建层级依次降低的三个子节点,该三个子节点分别包含字符s、h和e;接下来,遍历模式查找串he中的字符,依次在根节点下创建层级依次降低两个子节点,该两个子节点分别包含字符h和e;继续遍历模式查找串his中的字符,由于查找树中已经存在包含字符h的节点,因此只需在包含字符h的节点下创建两个子节点,该两个子节点分别包含字符i和s;最后遍历模式查找串her中的字符,由于查找树中已经存在包含字符h的节点及其包含字符e的子节点,因此只需在包含字符e的节点下创建一个子节点,该子节点包含字符r。至此,根据查找字符串she、he、his和her的模式查找树初步创建完毕。在模式查找树的初步创建完成之后,还可以对模式查找树进行优化压缩,将叶子路径上的各个节点合并成一个节点,如图3所示。
应当指出,图2和图3示出的模式查找树和模式查找串只是为了说明模式查找树和模式查找串在构建查找树中的关系,并不意在限制模式查找串和模式查找树的数量和形式。
应当指出,还可以对上述得到的模式书进行优化压缩,压缩后的模式树如图3所示。可见,在压缩后的模式树中,每个节点中包括一个或多个字符。
图4是根据本发明实施例的基于DFA的匹配示意图。
如图4所示,为模式查找树匹配过程示例,从根节点到树中任一节点的路径经过的节点上的字符连接起来,构成该节点对应的模式串。例如,匹配模式串she,从root开始逐层顺序匹配。在匹配到字符s后在树的下一层匹配到字符h,在匹配到字符h后在树的下一层匹配到字符e。对于字符数量超过1个的节点,在匹配到该节点上的第一个字符后,后续下一个字符与该节点的第二个字条进行匹配,依次完成该节点上所有字符的匹配后,再移动下一层节点进行匹配。可以看出,模式串she在查找树中体现为从根节点到包含字符e的节点的路径。
图5是根据本发明实施例的根据匹配位置获取字段值的示意图。
如图5所示,为一个RTSP协议内容解析结果,每个协议字段匹配位置和其后最近的字段分割符位置之间的部分为该协议字段对应的值。假设该协议内容中之前的模式串对应的协议字段值已经获取完毕,以最后的字符串User-agent:VLCmediaplayer\r\n的协议字段值的查找为例进行说明。
匹配到模式串User-agent:,其中的字符U的位置为位置1,其字段长度p(在此为11),距离该位置1最近的字段分割符\r的位置为位置1。然后,匹配到距离模式串User-agent:的下一个字段分割符\r\n,其中的\r的位置为对应的字段分割符的开始位置,令其为位置2。
在待解析协议内容中,通过一对模式串(包括字段名称和字段分割符)匹配成功,以及这一对模式串之间的协议内容的匹配不成功,可以通过简单计算并结合计数器等其他形式得到协议字段值的起止位置。进一步,以上一对模式串的位置为基础,可以得出下一对模式串的位置。
显而易见,位置1+p则应该为模式串User-agent:对应的协议字段VLCmediaplayer的开始位置;另外,位置2-(位置1+p)即为对应该模式串的协议字段值的长度。根据该协议字段的开始位置及其字段长度,可以将该协议字段值从待解析的协议内容中提取出来,从而完成该协议字段的解析。
待解析协议内容中的其他协议字段值的解析与上面举例描述的协议字段值的过程相似,因此不再赘述。
因此,通过对图5的待解析的协议内容中的每个协议字段值的依次解析,最终完成对待解析协议内容的协议解析。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种基于DFA的协议解析方法,包括:
获取待解析协议内容中的字段名称和字段分割符;
将所述字段名称和所述字段分割符作为模式串,根据所述模式串构建模式查找树;每个所述字段名称对应形式上相同的多个所述字段分割符;
将所述模式查找树和待解析协议内容作为有限状态自动机DFA的输入,利用所述DFA在待解析协议内容中对所述模式串进行匹配;以及
根据匹配结果将待解析协议内容中的协议字段值提取出来;
其中,所述根据所述模式串构建模式查找树的步骤包括:
构建一个空节点作为查找树的根;
依次遍历待查找模式串集合,其中,对每个待查找模式串,再依次遍历其中的每个字符;
根据每个模式串中的每个字符依次在根节点下构建新的节点,新的节点将作为子节点插入到查找树中;
对所述模式查找树进行优化压缩,在优化压缩后的模式查找树中,除根节点之外的其他节点包含一个或多个字符。
2.根据权利要求1所述的方法,其中,所述模式查找树的根节点不包含字符,除根节点之外的其他节点包含一个字符,每个节点的所有子节点包含的字符都不相同。
3.根据权利要求1所述的方法,其中,所述模式串在所述查找树中是从根节点到其他任一节点的路径上的所有节点中包含的字符的顺序组合。
4.根据权利要求1所述的方法,其中,所述模式查找树的各个节点对应于所述DFA的各个状态,当所述匹配中出现失配时,所述DFA状态从所述模式查找树中对应DFA当前状态的节点跳转到下一节点。
5.根据权利要求1所述的方法,其中,所述利用所述DFA在待解析协议内容中对所述模式串进行匹配的步骤包括:
通过利用DFA在待解析协议内容中匹配所述字段名称,得到所述字段名称在待解析协议内容中的字段名称位置;
通过利用DFA在待解析协议内容中从所述字段名称位置开始匹配所述字段分割符,得到与所述字段名称对应的字段分割符的位置;以及
根据所述字段名称位置及其对应的字段分割符的位置,提取出与所述字段名称对应的协议字段值。
6.根据权利要求1-5之一所述的方法,其中,所述字段名称和所述字段分割符的获取是通过待解析协议的扩展巴克斯范式ABNF实现的。
7.根据权利要求1-5之一所述的方法,其中,所述模式串中包含一个或多个字段名称和一个字段分割符。
CN201310102083.0A 2013-03-27 2013-03-27 一种基于dfa的协议解析方法 Active CN103188267B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310102083.0A CN103188267B (zh) 2013-03-27 2013-03-27 一种基于dfa的协议解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310102083.0A CN103188267B (zh) 2013-03-27 2013-03-27 一种基于dfa的协议解析方法

Publications (2)

Publication Number Publication Date
CN103188267A CN103188267A (zh) 2013-07-03
CN103188267B true CN103188267B (zh) 2015-12-09

Family

ID=48679232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310102083.0A Active CN103188267B (zh) 2013-03-27 2013-03-27 一种基于dfa的协议解析方法

Country Status (1)

Country Link
CN (1) CN103188267B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107305540A (zh) * 2016-04-20 2017-10-31 顺丰科技有限公司 地址切分识别方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038452A (zh) * 2016-01-13 2017-08-11 阿里巴巴集团控股有限公司 电话号码识别方法及装置
CN105897739A (zh) * 2016-05-23 2016-08-24 西安交大捷普网络科技有限公司 数据包深度过滤方法
CN110581823B (zh) * 2018-06-07 2020-12-22 中国科学院声学研究所 一种非公开数据库协议请求数据包的解析方法
CN110012005B (zh) * 2019-03-29 2022-05-06 新华三大数据技术有限公司 识别异常数据的方法、装置、电子设备及存储介质
CN112330379B (zh) * 2020-11-25 2023-10-31 税友软件集团股份有限公司 一种发票内容生成方法、系统、电子设备及存储介质
CN115134433B (zh) * 2022-06-24 2024-03-29 国网数字科技控股有限公司 一种工控协议的语义解析方法、系统、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102148805A (zh) * 2010-02-09 2011-08-10 华为技术有限公司 特征匹配方法和装置
CN102857493A (zh) * 2012-06-30 2013-01-02 华为技术有限公司 内容过滤方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051022B2 (en) * 2006-12-08 2011-11-01 Pandya Ashish A Embedded programmable intelligent search memory (PRISM) that simultaneously performs regular expression based search and signature pattern based search

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102148805A (zh) * 2010-02-09 2011-08-10 华为技术有限公司 特征匹配方法和装置
CN102857493A (zh) * 2012-06-30 2013-01-02 华为技术有限公司 内容过滤方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107305540A (zh) * 2016-04-20 2017-10-31 顺丰科技有限公司 地址切分识别方法

Also Published As

Publication number Publication date
CN103188267A (zh) 2013-07-03

Similar Documents

Publication Publication Date Title
CN103188267B (zh) 一种基于dfa的协议解析方法
CN101996195B (zh) 音频文件中语音信息的搜索方法、装置及设备
CN104899264B (zh) 一种多模式正则表达式匹配方法及装置
CN103092943B (zh) 一种广告调度的方法和广告调度服务器
CN102148805B (zh) 特征匹配方法和装置
US9811321B1 (en) Script compilation
CN102870116B (zh) 内容匹配方法和装置
EP1932085A1 (en) System and method for measuring svg document similarity
TWI557580B (zh) The application interface provides methods and devices
CN112286963B (zh) 一种区块链终端数据可信查询系统及其实现方法
CN103491089B (zh) 一种基于http的数据还原中的转码方法及系统
CN101950312A (zh) 一种互联网网页内容解析方法
CN104778258A (zh) 一种面向协议数据流的数据抽取方法
CN109657121A (zh) 一种基于网络爬虫的Web页面信息采集方法及装置
CN101794318A (zh) Url解析方法及设备
CN103581224A (zh) 推送信息的方法和装置
CN105426412A (zh) 多模式的串匹配方法和装置
CN105045808A (zh) 一种复合规则集匹配方法和系统
CN105718463A (zh) 关键字模糊匹配方法及装置
CN104778252A (zh) 索引的存储方法和装置
CN112069305B (zh) 数据筛选方法、装置及电子设备
WO2016177027A1 (zh) 批量数据查询方法和装置
CN103064885A (zh) 一种实现多关键词同步输入系统及方法
CN109241498A (zh) Xml文件处理方法、设备和存储介质
EP2530609A1 (en) Apparatus and method of searching for instance path based on ontology schema

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210804

Address after: 100190, No. 21 West Fourth Ring Road, Beijing, Haidian District

Patentee after: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES

Address before: 100190, No. 21 West Fourth Ring Road, Beijing, Haidian District

Patentee before: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES

Patentee before: BEIJING ZHONGKE HUAYING MEDIA TECHNOLOGY Co.,Ltd.

Effective date of registration: 20210804

Address after: Room 1601, 16th floor, East Tower, Ximei building, No. 6, Changchun Road, high tech Industrial Development Zone, Zhengzhou, Henan 450001

Patentee after: Zhengzhou xinrand Network Technology Co.,Ltd.

Address before: 100190, No. 21 West Fourth Ring Road, Beijing, Haidian District

Patentee before: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES