CN102647414B - 协议解析方法、设备及系统 - Google Patents

协议解析方法、设备及系统 Download PDF

Info

Publication number
CN102647414B
CN102647414B CN201210090341.3A CN201210090341A CN102647414B CN 102647414 B CN102647414 B CN 102647414B CN 201210090341 A CN201210090341 A CN 201210090341A CN 102647414 B CN102647414 B CN 102647414B
Authority
CN
China
Prior art keywords
node
instruction
packet
command status
status machine
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.)
Expired - Fee Related
Application number
CN201210090341.3A
Other languages
English (en)
Other versions
CN102647414A (zh
Inventor
郭智
曾佳
迪帕克
耿玉磊
田聃
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210090341.3A priority Critical patent/CN102647414B/zh
Publication of CN102647414A publication Critical patent/CN102647414A/zh
Application granted granted Critical
Publication of CN102647414B publication Critical patent/CN102647414B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

本发明提供一种协议解析方法、设备及系统。该方法包括:获取待解析的数据包,以及指令状态机的当前节点的数据表项,其中,所述指令状态机包括匹配节点和指令节点;若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理。该方法、设备及系统能够实现硬件结构与解析流程解耦。

Description

协议解析方法、设备及系统
技术领域
本发明涉及报文解析技术,尤其涉及一种协议解析方法、设备及系统。
背景技术
随着互联网业务的爆炸性发展及宽带业务的迅猛增长,运营商在业务的动态感知、策略控制、业务质量(Quality of Service,QoS)保障以及网络与业务的安全保障等领域面临巨大挑战,促使了深度包检测(DeepPacket Inspection,DPI)、入侵检测系统(Intrusion Detection System,IDS)等网络安全管理技术的快速发展。协议解析是实现这些网络安全管理技术的基础和关键。协议解析是从网络通信协议特有的规则性出发,对数据包的数据和结构进行解码分析的过程,通过协议解析可获得数据包中深层次的数据,从而为分析数据包提供精确、详细的信息。例如,在DPI技术中,通过对网络数据包的应用层进行协议解析,可精确、快速的识别所承载的协议及所关心的特定报文内容;在IDS中,通过对数据包进行协议解析来有效识别利用协议的攻击行为,克服了传统的采用端口或特征字段来识别攻击行为的缺陷,提高了误报率。
图1为现有的协议解析方法的一种流程示意图。如图1所示,执行协议解析方法包括:步骤S101,通过采用状态机查找协议字符流中的关键字;步骤S102,判断字符流中的字符与状态机中的状态是否匹配,若不匹配,则执行步骤S103,若匹配,则执行步骤S104;S103,从该不匹配的字符开始查找回车换行符,即“/r/n”字符,然后跳转到该回车换行符的下一字符开始,采用状态机继续查找该协议字符流中的关键字;步骤S104,字符流中若干连续字符与状态机某一分支完全匹配时,判定该连续字符为关键字;步骤S105,从关键字开始查找“\r\n”字符,则该关键字至“\r\n”之间部分为协议单元内容;步骤S106,判断是否查找完所有关键字及其对应协议内容,若否,则重复执行上述步骤;若是,则完成协议解析。
当基于硬件实施上述协议解析方法时,状态机仅完成匹配工作,具体的解析过程均需由设备硬件来实现,所以当解析的协议内容或类型发生变化时,需对硬件进行较大改动才能完成解析升级。
发明内容
本发明实施例提供一种协议解析方法、设备及系统,用以一定程度上实现硬件结构与协议解析流程的解耦。
根据本发明实施例的一方面,提供一种协议解析方法,包括:
获取待解析的数据包,以及指令状态机的当前节点的数据表项,其中,所述指令状态机包括匹配节点和指令节点;
若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;
若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包的当前字符进行操作处理。
根据本发明实施例的另一方面,提供一种协议解析设备,包括解析引擎和指令执行引擎,其中:
所述解析引擎用于获取待解析的数据包,及指令状态机的当前节点的数据表项,其中,所述指令状态机包括匹配节点和指令节点;若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动所述指令执行引擎执行处理;
所述指令执行引擎用于响应所述解析引擎的驱动,对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理。
根据本发明实施例的又一方面,还提供一种协议解析系统,包括指令状态机编译器和本发明实施提供的协议解析设备,其中:
所述指令状态机编译器用于向所述协议解析设备提供指令状态机的数据表项。
根据本发明实施例的协议解析方法、设备及系统,通过根据待解析的协议标准生成包括匹配节点和指令节点的指令状态机数据表项并根据指令状态机数据表项的匹配节点和指令节点对待解析报文中的字符进行匹配处理或执行与指令节点对应的操作处理,即:通过指令状态机数据表项来描述协议解析的全过程,并由硬件结构实现协议解析架构。因此,在硬件上基于指令状态机数据表项对报文进行解析时,硬件结构只需按照指令状态机数据表项的结构执行匹配操作和/或与指令节点对应的具体操作,例如计算和判断等与具体的协议无关,实现了硬件结构与协议的解耦。从而,当解析的协议需要长级、扩展或维护时,只需更新指令状态机数据表项即可,而无需对硬件部分进行改动,实现了硬件热升级,提升了灵活性、可升级性和可维护性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有的协议解析方法的一种流程示意图;
图2A为本发明实施例的协议解析设备的一种结构示意图;
图2B为本发明实施例的协议解析设备的另一种结构示意图;
图3为本发明实施例的一种协议解析系统的架构示意图;
图4为本发明实施例的协议解析方法的流程示意图;
图5为本发明实施例的一种基于指令状态机数据表项执行协议解析的流程示意图;
图6为本发明实施例的指令状态机数据表项生成的流程示意图;
图7为本发明实施例的一种并列结构的状态机的示意图;
图8为本发明实施例的一种判断结构的状态机的示意图;
图9为本发明实施例的一种指令状态机示例的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图2A,图2A为本发明实施例的协议解析设备的一种结构示意图。如图2A所示,该协议解析设备包括解析引擎21和指令执行引擎22,其中:
所述解析引擎21用于获取待解析的数据包,及指令状态机的当前节点的数据表项,其中,所述指令状态机包括匹配节点和指令节点;若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动所述指令执行引擎22执行处理;
所述指令执行引擎用于响应所述解析引擎的驱动,对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理。
根据上述实施例的协议解析设备,由于不同的解析操作对应不同的指令节点,通过指令状态机数据表项即可描述协议解析的全过程,根据指令状态机数据表项触发硬件结构实现协议解析操作,使得执行解析操作的硬件结构与具体的协议无关,实现了硬件与协议的解耦。此外,当解析需要升级主、扩展或维护时,只需要对软件实现的指令状态机数据表项进行更新即可,提升了灵活性、可升级性和可维护性。
而且,解析引擎对于报文和指令的并行处理提高了解析速度,通过单独的指令执行引擎执行解析操作,还可支持多种协议格式,例如包括基于文本的协议和二进制编码协议等,提高了应用的广泛性。
进一步地,在上述实施例的协议解析设备中,所述指令节点所对应的指令类型包括提取指令、计算指令、转换指令和判断指令中的一个或多个;
相应地,所述指令执行引擎具体用于根据所述提取指令,从所述待解析的数据包中提取自当前字符开始的一个或多个字符;和/或根据所述计算指令,按照预设规则对所述待解析的数据包进行计算操作;和/或根据所述转换指令,对所述待解析的数据包进行格式转换操作;和/或根据所述判断指令,对所述待解析的数据包进行判断操作并生成判断结果。
根据上述实施例的协议解析设备,由于指令执行引擎可根据指令类型执行提取操作、计算操作、转换操作和/或判断操作等,实现了灵活的、多元化的协议解析。
进一步地,如果所述待解析的数据包与上一个关联数据包为跨包报文相关的数据包,所述解析引擎具体用于获取上一个关联数据包结束时所在的指令状态机的数据表项地址、跨包报文长度信息以及对上一个关联数据包进行协议解析的操作处理的结果;若所述待解析的数据包的当前字符是所述待解析的数据包的第一个字符,则根据所述数据表项地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;若所述待解析的数据包的当前字符不是所述待解析的数据包的第一个字符,则根据指令状态机的上一个节点的数据表项中的跳转节点地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;若所述数据表项所表示的指令状态机的当前节点为匹配节点,根据所述匹配节点和所述跨包报文长度信息,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动所述指令执行引擎执行处理;
相应地,所述指令执行引擎具体用于响应所述解析引擎的驱动,根据所述指令类型和所述对上一个关联数据包进行协议解析的操作处理的结果,对所述待解析的数据包进行操作处理。
进一步地,在上述实施例的协议解析设备中,如果所述待解析的数据包为跨包报文相关的数据包,则所述解析引擎还用于对所述操作处理的结果进行存储,并存储所述数据包结束时所在的指令状态机的数据表项地址和跨包报文长度信息。
根据上述实施例的协议解析设备,实现了对跨包报文的有效解析。
请参阅图2B,图2B为本发明实施例的协议解析设备的另一种结构示意图。如图2B所示,该协议解析设备除包括解析引擎21和指令执行引擎22之外,还包括:
结果上报模块23,用于对从所述解析引擎21或所述指令执行引擎22接收的操作处理的结果按照预定格式上报;
相应地,所述指令执行引擎22还用于将所述操作处理的结果发送至所述结果上报模块23或所述解析引擎21,并由所述解析引擎21将所述操作处理的结果发送至所述结果上报模块23。
根据上述实施例的协议解析设备,提供了不同的结果上报机制,并且,由于操作处理的结果可经由解析引擎发送至结果上报模块,因此可根据需要由解析引擎对操作处理的结果进行排序等处理后,按照预设规则上报结果。
进一步地,在上述实施例的协议解析设备中,还包括:
状态机表项管理模块24,用于所述指令状态机数据表项载入存储区,和/或用于对存储的所述指令状态机数据表项进行更新。
根据上述实施例的协议解析设备,实现了对指令状态机数据表项的统一管理及更新。
进一步地,在上述实施例的协议解析设备中,还包括:
存储区,所述存储区包括主存储区和备存储区;
相应地,所述状态机表项管理模块还用于对所述存储区存储的所述指令状态机数据表项进行更新,具体用于将更新的指令状态机数据表项载入到所述备存储区,并将所述备存储区与所述主存储区切换,以由所述备存储区将所述更新的指令状态机数据表项加载至所述解析引擎。
根据上述实施例的协议解析设备,由于存储区包括主存储区和备存储区,一方面,提高了存储区的可靠性,另一方面,通过首先将更新的指令状态机数据表项载入到所述备存储区,并将所述备存储区与所述主存储区切换来完成数据表项的更新,使得在数据表项的更新过程中,可不间断协议解析,避免了因对单存储区的指令状态机数据表项进行数据更新过程中导致协议解析设备不可用。
图3为本发明实施例的一种协议解析系统的架构示意图。如图3所示,该协议解析系统包括指令状态机编译器31和本发明实施例提供的任一协议解析设备32,其中,指令状态机编译器31用于向所述协议解析设备32提供指令状态机的数据表项。
进一步地,所述指令状态机编译器31具体用于读入并解析协议描述文件,所述协议描述文件包括流程结构、匹配特征和操作特征;根据所述流程结构,将所述匹配特征编译为所述匹配节点,将所述操作特征编译为所述指令节点,形成指令状态机并转换为所述指令状态机的数据表项;将所述指令状态机的数据表项载入到存储区。
根据本发明实施例的协议解析系统,由于不同的解析操作对应不同的指令节点,通过指令状态机数据表项即可描述协议解析的全过程,根据指令状态机数据表项触发硬件结构实现协议解析操作,使得执行解析操作的硬件结构与具体的协议无关,实现了硬件与协议的解耦。此外,当解析需要升级主、扩展或维护时,只需要对软件实现的指令状态机数据表项进行更新即可,提升了灵活性、可升级性和可维护性。
图4为本发明实施例的协议解析方法的流程示意图。如图4所示,该协议解析方法包括以下步骤:
步骤S401,获取待解析的数据包,以及指令状态机的当前节点的数据表项,其中,所述指令状态机包括匹配节点和指令节点;
步骤S402,若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;
步骤S403,若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理。
具体地,图5为本发明实施例的一种基于指令状态机数据表项执行协议解析的流程示意图。如图5所示,包括以下步骤:
步骤S501,接收输入的待解析报文;
步骤S502,读入指令状态机数据表项;解析开始时,读入指令状态机数据表项的根节点;
步骤S503,判断当前节点类型,若为匹配节点则执行步骤S504,若为指令结点则执行步骤S505,若为结束节点则解析结束;
步骤S504,对待解析报文的当前字符进行匹配处理,即将待解析报文的当前字符与当前匹配节点的匹配字符进行比较,如果匹配成功,则从指令状态机数据表项中读取匹配成功时跳转节点地址,跳转到相应节点,并执行步骤S506;如果匹配失败,则从指令状态机数据表项中读取匹配失败时跳转节点地址,跳转到相应节点,并执行步骤S506;
步骤S505,将指令节点和待解析报文的当前字符传入指令执行引擎,以由指令执行引擎对待解析报文的当前字符执行解析操作,并执行步骤S506;其中,指令执行引擎例如包括输入单元和指令解析及执行单元,输入单元用于接收解析引擎传入的指令节点和传入的报文数据;指令解析及执行单元用于解析指令节点数据,获得该指令是执行哪种操作的信息,将报文数据传入与执行操作相应的处理单元,进行提取、计算、转换或判断等操作,并在操作完成后将结果返回给解析引擎;
步骤S506,判断待解析报文是否结束,若是,则解析结束,若否,则返回执行步骤S502。
根据上述实施例的协议解析方法,由于不同的解析操作对应不同的指令节点,通过指令状态机数据表项即可描述协议解析的全过程,根据指令状态机数据表项触发硬件结构实现协议解析操作,使得执行解析操作的硬件结构与具体的协议无关,实现了硬件与协议的解耦。此外,当解析需要升级主、扩展或维护时,只需要对软件实现的指令状态机数据表项进行更新即可,提升了灵活性、可升级性和可维护性。
而且,解析引擎对于报文和指令的并行处理提高了解析速度,通过单独的指令执行引擎执行解析操作,还可支持多种协议格式,例如包括基于文本的协议和二进制编码协议等,提高了应用的广泛性。
进一步地,在上述实施例的协议解析方法中,还包括:
读入并解析协议描述文件,所述协议描述文件包括流程结构、匹配特征和操作特征;
根据所述流程结构,将所述匹配特征编译为所述匹配节点,将所述操作特征编译为所述指令节点,形成指令状态机并转换为所述指令状态机的数据表项;
将所述指令状态机的数据表项载入到第一存储区。
图6为本发明实施例的指令状态机数据表项生成的流程示意图。如图6所示,指令状态机编译器通过对协议标准进行协议分析(步骤S601),提取匹配特征(步骤S602)及操作特征(步骤S603)并以特征语句表示,以结构语句表示解析流程,解析协议描述文件(步骤S604),根据协议描述文件生成指令状态机(步骤S605),并输出数据表项(步骤S606)。
其中,匹配特征是指协议中能够标识协议单元的字符串或二进制编码,通过匹配特征能唯一确定协议的特征单元。匹配特征根据是否编码可分两种形式:一种是基于文本的特征,即协议中定义的协议单元名即为特征内容,例如:HTTP协议中的头域名“HOST”,在报文中即为“HOST”的ASCII码值;另一种是基于二进制编码的特征,即协议中的协议单元名在报文封装时经过编码操作,例如:MMS协议中的头域名“Bcc”编码为0x01,则报文中其值为0x01。
采用特征语句来表示匹配特征,其形式为:
匹配特征语句=匹配特征标识符+匹配字符串+是否大小写敏感。
一种实现形式例如为:match(“abc”,insense),其中,match为匹配特征标识符,“abc”为匹配字符串,insense表示大小写不敏感。此外,以上各部分可根据系统需求采用多种其他表现形式。在匹配过程中,忽略协议规定的不相关或无意义字符。
操作特征例如分为以下四种类型:一、提取:有两种提取方式,一是提取报文中的内容直到结束符,结束符根据协议单元的定义设定,可以为一个或多字符;另一种是提取一定长度的报文内容,长度则由计算操作获得;二、计算:对协议单元内容按协议规定进行计算;三、转换:将协议单元内容进行格式转换,包括整型、浮点型、字符型、枚举型及各种数制的格式的转换,如将表示十进制数的ASCII转换为二进制,将表示十六进制的ASCII转换为二进制;四、判断:将协议单元的内容与给定数值、字符或范围进行比较获得比较结果。
采用特征语句来表示操作特征,其形式为:
操作特征语句=操作标识符([*(操作参数)])
其中,操作标识符表明了哪种操作,操作参数可由0个、1个或多个组成。例如:EXTRACT(\x20),其中,EXTRACT表示操作类型为提取操作,\x20表示提取的内容为从当前字符到\x20为止。
结构语句例如包括并列结构语句、顺序结构语句和判断结构语句,相应地,解析流程可分为并列结构、顺序结构及判断结构。具体地,图7为本发明实施例的一种并列结构的状态机的示意图。如图7所示,并列结构指协议单元不存在前后关系,解析时将这种协议单元放在一个并列结构中,以不同的分支(如图7中所示的分支1和分支2)表示不同的协议单元;根据结束符判断是否结束此并列结构,如果匹配结束符则跳出,进行后续解析,否则跳回结构的起点,继续进行解析。并列结构语句可表示为:
块名(结束符)
具体示例如下,用于表示协议单元host与协议单元date是一个并列结构,当遇到\x0D\x0A时跳出此结构:
顺序结构是解析过程的默认结构,不需特殊标识,按语句或块的先后顺序进行解析。图8为本发明实施例的一种判断结构的状态机的示意图。如图8所示,对于需要根据某些协议内容的判断来决定解析操作的情况,采用判断结构,根据判断的结果进行分支处理,例如当判断结果为是时,执行分支1,当判断结果为否时,执行分支2。
判断结构语句可表示为:
具体示例如下,其中TESTFLAG(CHUNKED)为表示判断的指令,用于表示根据指令执行的结果跳到不同的分支:
按照上述方式生成描述文件后,指令状态机根据描述文件的流程结构,将匹配特征编译为匹配节点,将操作特征编译为指令节点,生成指令状态机,并转换为表项数据结构。更为具体地,生成指令状态机包括以下流程:
步骤1:读入解析描述文件;
步骤2:如果解析描述文件为空或内容已读完,结束生成过程;否则,读入一条描述语句,转步骤3;
步骤3:如果解析语句为结构语句,则生成相应的顺序、并列、分支结构,转步骤2;否则转步骤4;
步骤4:如果语句为匹配特征语句,转步骤5;如果语句为操作特征语句,转步骤7;
步骤5:如果匹配特征语句中字符串为空或已处理完所有字符串,转步骤2;否则,读入一个字符,转步骤6;
步骤6:对于当前字符,如果已经有从当前匹配节点相同的跳转,转步骤5;否则,对当前字符建立新的匹配节点;转步骤5;
步骤7:根据操作特征语句生成指令节点,转步骤2。
例如,对于如下协议描述文件,按照上述流程生成的指令状态机例如图8所示。
图9为本发明实施例的一种指令状态机示例的示意图。其中,标记0-10均为描述文件中的节点,以实现表示的节点(节点0、1、2、3、5、6、7、8和10)为匹配节点,以虚线表示的节点(节点4和9)为指令节点。
生成指令状态机后,将指令状态机中的每个节点按照节点类型转换为表项结构,并根据节点间的关系填充相应的地址。更为具体地,匹配节点的结构例如表1所示,其中地址1为匹配成功时跳转节点地址,地址2为匹配失败时跳转节点地址:
表1
  节点地址   节点标识   节点属性   匹配字符   地址1   地址2
指令节点的结构例如表2所示:
表2
  节点地址   节点标志   指令类型   指令操作参数   跳转节点地址
此外,根据不同的实现方式,可将生成的指令状态机数据表项转换成不同的存储格式。例如若使用现场可编程门阵列(Field-Programmable GateArray,FPGA),则可以根据FPGA的特点转换成特定格式存储;若使用专用标准产品(Application Specific Standard Parts,ASSP)或专用集成电路(Application Specific Integrated Circuit,ASIC),则可以转换成芯片能识别的指令进行存储。
通过采用上述数据格式,可将匹配的中间状态进行记录,从而支持跨包的协议解析。
进一步地,上述生成的指令状态机数据表项例如通过协议解析设备的状态机表项管理模块(图2B中示出)加载,并提供给解析引擎。具体地,状态机表项模块例如将指令状态机编译器生成的指令状态机数据表项加载到指定的内存区域,此内存区域可以为芯片的内部存储区域或外部存储区域。
以基于图9所示的指令状态机进行协议解析为例,对解析引擎执行协议解析的具体流程进行详细说明,例如将节点4的指令设置为提取当前位置到\x0D\x0A之间字符,将节点9的指令设置为丢弃当前位置到\x0D\x0A之间字符,报文为:
host:abc\x0D\x0Acookie:def\x0D\x0Adate:Tue,15Nov 199408:12:31
GMT\x0D\x0A\x0D\x0A
其中,以\xXX表示的字符表示以十六进制表示字符。解析过程如下:
S1:读入报文字符“h”和指令状态机根节点,即节点0,进行匹配,并读取当前节点所指向的下一节点,从节点0跳到节点1;
S2:读入报文字符“o”,进行匹配,从节点1跳到节点2;
S3:读入报文字符“s”,进行匹配,从节点2跳到节点3;
S4:读入报文字符“t”,进行匹配,“host”匹配成功,跳到节点4;
S5:将指令节点4送入指令执行引擎进行解析、执行,报文“:abc\x0D\x0A”部分被提取;
S6:从节点4跳到节点8,没有遇到结束符,跳到节点0;
S7:读入报文字符“c”,进行匹配,没有匹配成功,跳到节点9;
S8:将指令节点9送入指令执行引擎进行解析、执行,报文“:def\x0D\x0A”部分被丢弃;
S9:从节点9跳到节点8,没有遇到结束符,跳到节点0;
S10:引擎读入报文字符“d”,进行匹配,跳到节点5;
S11:引擎读入报文字符“a”,进行匹配,跳到节点6;
S12:引擎读入报文字符“t”,进行匹配,跳到节点7;
S13:引擎读入报文字符“e”,进行匹配,“date”匹配成功,跳到节点4;
S14:引擎将指令节点4送入指令执行引擎进行解析、执行,报文“:Tue,15 Nov 1994 08:12:31 GMT\x0D\x0A”部分被提取;
S15:从节点4跳到节点8,遇到结束符\x0D\x0A,跳到当前节点所指向的下一节点,即节点10,完成解析。
进一步地,在上述实施例的协议解析方法中,根据所述指令类型对所述待解析报文的当前字符进行操作处理之后还包括:对按照预定格式上报操作处理的结果。
具体地,协议解析设备还包括一个结果上报模块(图2B中示出)。指令执行引擎将操作处理的结果返回给结果上报模块,以由结果上报模块将操作处理的结果按照预定格式上报。此外,若需按照预定顺序上报操作处理的结果时,指令执行引擎还可将操作处理的结果返回给解析引擎,由解析引擎接收指令执行引擎返回的操作结果,对操作处理的结果按照预定顺序进行排序,并将排序后的操作处理的结果发送至结果上报模块,由结果上报模块上报。结果上报模块用于指定结果的上报格式,并按上报格式将解析结果上报。作为一种应用,可将上报格式定义为:协议单元标识码+协议单元内容,此外也可根据需要定义为任意上报格式。
进一步地,在上述实施例的协议解析方法中,如果所述待解析的数据包与上一个关联数据包为跨包报文相关的数据包,所述方法还包括:
从第二存储区中获取上一个关联数据包结束时所在的指令状态机的数据表项地址、跨包报文长度信息以及对上一个关联数据包进行协议解析的操作处理的结果;
相应地,获取指令状态机的当前节点的数据表项包括:
若所述待解析的数据包的当前字符是所述待解析的数据包的第一个字符,则根据所述数据表项地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;
若所述待解析的数据包的当前字符不是所述待解析的数据包的第一个字符,则根据指令状态机的上一个节点的数据表项中的跳转节点地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;
相应地,若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理包括:
若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点和所述跨包报文长度信息,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;
具体地,例如需对跨包报文中的某一个域中的字符进行匹配,该域的一部分包括在上一个关联数据包中,另一部分包括在当前待解析的数据包,则根据跨包报文长度信息中该域的总字符数和已解析字符数确定,在已对上一关联数据包进行部分字符进行匹配处理后,仍需对当前待解析的数据包中的前多少个字符进行匹配处理;
相应地,若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理包括:
若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎对所述指令节点进行解析以获取所述指令节点对应的指令类型,根据所述指令类型和所述对上一个关联数据包进行协议解析的操作处理的结果,对所述待解析的数据包进行操作处理。
具体地,例如对于一个判断指令,需判断该跨包报文是否为CHUNKED报文,并且不同的判断结果对应不同的后续解析流程;其中,该跨包报文的头部包括在上一个关联数据包中,对于该报文是否为CHUNKED报文的解析已在上一个关联数据包的解析过程中完成,则此时需根据存储的解析结果完成此判断,从而确定后续解析流程为数据表项中的哪一个分支。
进一步地,在上述实施例的协议解析方法中,如果所述待解析的数据包为跨包报文相关的数据包,解析引擎将指令执行引擎对数据包进行相应操作获得的操作结果作为解析的中间结果,解析引擎设置相应的寄存器或其它存储结构(即上述第二存储区),将结果存入其中,供该跨包报文的后续数据包解析使用。此外,解析引擎还存储所述数据包结束时所在的指令状态机的数据表项地址和跨包报文长度信息,其中该跨包报文长度信息例如包括跨包报文的总长度和已完成解析的长度。
根据上述实施例的协议解析方法能够支持跨包解析。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (18)

1.一种协议解析方法,其特征在于,包括:
获取待解析的数据包,以及指令状态机的当前节点的数据表项,其中,所述指令状态机包括匹配节点和指令节点;
若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;
若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎模块对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理;
所述指令节点所对应的指令类型包括提取指令、计算指令、转换指令和判断指令中的一个或多个。
2.根据权利要求1所述的协议解析方法,其特征在于,还包括:
读入并解析协议描述文件,所述协议描述文件包括流程结构、匹配特征和操作特征;
根据所述流程结构,将所述匹配特征编译为所述匹配节点,将所述操作特征编译为所述指令节点,形成指令状态机并转换为所述指令状态机的数据表项;
将所述指令状态机的数据表项载入到第一存储区。
3.根据权利要求1或2所述的协议解析方法,其特征在于,所述根据所述指令类型对所述待解析的数据包进行操作处理包括:
根据所述提取指令,从所述待解析的数据包中提取自当前字符开始的一个或多个字符;和/或
根据所述计算指令,按照预设规则对所述待解析的数据包进行计算操作;和/或
根据所述转换指令,对所述待解析的数据包进行格式转换操作;和/或
根据所述判断指令,对所述待解析的数据包进行判断操作并生成判断结果。
4.根据权利要求2所述的协议解析方法,其特征在于,所述流程结构包括并列结构、顺序结构和判断结构。
5.根据权利要求1或2所述的协议解析方法,其特征在于,所述指令状态机的匹配节点的数据表项包括:所述匹配节点的节点地址、节点标志、节点属性、匹配字符、匹配成功时跳转节点地址以及匹配失败时跳转节点地址。
6.根据权利要求1或2所述的协议解析方法,其特征在于,所述指令状态机的指令节点的数据表项包括:所述指令节点的节点地址、节点标志、指令类型、指令操作参数以及跳转节点地址。
7.根据权利要求1或2所述的协议解析方法,其特征在于,根据所述指令类型对所述待解析的数据包进行操作处理之后还包括:按照预定格式上报操作处理结果。
8.根据权利要求1或2所述的协议解析方法,其特征在于,如果所述待解析的数据包与上一个关联数据包为跨包报文相关的数据包,所述方法还包括:从第二存储区中获取上一个关联数据包结束时所在的指令状态机的数据表项地址、跨包报文长度信息以及对上一个关联数据包进行协议解析的操作处理的结果;
相应地,获取指令状态机的当前节点的数据表项包括:
若所述待解析的数据包的当前字符是所述待解析的数据包的第一个字符,则根据所述数据表项地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;
若所述待解析的数据包的当前字符不是所述待解析的数据包的第一个字符,则根据指令状态机的上一个节点的数据表项中的跳转节点地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;
相应地,若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理包括:
若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点和所述跨包报文长度信息,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;
相应地,若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎模块对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理包括:
若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动指令执行引擎模块对所述指令节点进行解析以获取所述指令节点对应的指令类型,根据所述指令类型和所述对上一个关联数据包进行协议解析的操作处理的结果,对所述待解析的数据包进行操作处理。
9.根据权利要求8所述的协议解析方法,其特征在于,如果所述待解析的数据包为跨包报文相关的数据包,还包括:
将所述操作处理的结果存储于所述第二存储区,并存储所述数据包结束时所在的指令状态机的数据表项地址和跨包报文长度信息于所述第二存储区。
10.一种协议解析设备,其特征在于,包括解析引擎模块和指令执行引擎模块,其中:
所述解析引擎模块用于获取待解析的数据包,及指令状态机的当前节点的数据表项,其中,所述指令状态机包括匹配节点和指令节点;若所述数据表项所表示的指令状态机的当前节点为匹配节点,则根据所述匹配节点,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动所述指令执行引擎模块执行处理;
所述指令执行引擎模块用于响应所述解析引擎模块的驱动,对所述指令节点进行解析以获取所述指令节点对应的指令类型,并根据所述指令类型对所述待解析的数据包进行操作处理;
所述指令节点所对应的指令类型包括提取指令、计算指令、转换指令和判断指令中的一个或多个。
11.根据权利要求10所述的协议解析设备,其特征在于,所述指令执行引擎模块具体用于根据所述提取指令,从所述待解析的数据包中提取自当前字符开始的一个或多个字符;和/或根据所述计算指令,按照预设规则对所述待解析的数据包进行计算操作;和/或根据所述转换指令,对所述待解析的数据包进行格式转换操作;和/或根据所述判断指令,对所述待解析的数据包进行判断操作并生成判断结果。
12.根据权利要求10或11所述的协议解析设备,其特征在于,还包括:
结果上报模块,用于对从所述解析引擎模块或所述指令执行引擎模块接收的操作处理的结果按照预定格式上报;
相应地,所述指令执行引擎模块还用于将所述操作处理的结果发送至所述结果上报模块或所述解析引擎模块,并由所述解析引擎模块将所述操作处理的结果发送至所述结果上报模块。
13.根据权利要求10或11所述的协议解析设备,其特征在于,如果所述待解析的数据包与上一个关联数据包为跨包报文相关的数据包,所述解析引擎模块具体用于获取上一个关联数据包结束时所在的指令状态机的数据表项地址、跨包报文长度信息以及对上一个关联数据包进行协议解析的操作处理的结果;若所述待解析的数据包的当前字符是所述待解析的数据包的第一个字符,则根据所述数据表项地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;若所述待解析的数据包的当前字符不是所述待解析的数据包的第一个字符,则根据指令状态机的上一个节点的数据表项中的跳转节点地址对应的数据表项,确定所述指令状态机的当前节点的数据表项;若所述数据表项所表示的指令状态机的当前节点为匹配节点,根据所述匹配节点和所述跨包报文长度信息,对所述待解析的数据包的当前字符与匹配字符进行匹配处理;若所述数据表项所表示的指令状态机的当前节点为指令节点,则驱动所述指令执行引擎模块执行处理;
相应地,所述指令执行引擎模块具体用于响应所述解析引擎模块的驱动,根据所述指令类型和所述对上一个关联数据包进行协议解析的操作处理的结果,对所述待解析的数据包进行操作处理。
14.根据权利要求13所述的协议解析设备,其特征在于,如果所述待解析的数据包为跨包报文相关的数据包,则所述解析引擎模块还用于对所述操作处理的结果进行存储,并存储所述数据包结束时所在的指令状态机的数据表项地址和跨包报文长度信息。
15.根据权利要求10或11所述的协议解析设备,其特征在于,还包括:
状态机表项管理模块,用于所述指令状态机数据表项载入存储区,和/或用于对存储的所述指令状态机数据表项进行更新。
16.根据权利要求15所述的协议解析设备,其特征在于,还包括:
存储区,所述存储区包括主存储区和备存储区;
相应地,所述状态机表项管理模块还用于对所述存储区存储的所述指令状态机数据表项进行更新,具体用于将更新的指令状态机数据表项载入到所述备存储区,并将所述备存储区与所述主存储区切换,以由所述备存储区将所述更新的指令状态机数据表项加载至所述解析引擎模块。
17.一种协议解析系统,其特征在于,包括指令状态机编译器和权利要求10-16任一所述的协议解析设备,其中:
所述指令状态机编译器用于向所述协议解析设备提供指令状态机的数据表项。
18.根据权利要求17所述的协议解析系统,其特征在于,所述指令状态机编译器具体用于读入并解析协议描述文件,所述协议描述文件包括流程结构、匹配特征和操作特征;根据所述流程结构,将所述匹配特征编译为所述匹配节点,将所述操作特征编译为所述指令节点,形成指令状态机并转换为所述指令状态机的数据表项;将所述指令状态机的数据表项载入到存储区。
CN201210090341.3A 2012-03-30 2012-03-30 协议解析方法、设备及系统 Expired - Fee Related CN102647414B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210090341.3A CN102647414B (zh) 2012-03-30 2012-03-30 协议解析方法、设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210090341.3A CN102647414B (zh) 2012-03-30 2012-03-30 协议解析方法、设备及系统

Publications (2)

Publication Number Publication Date
CN102647414A CN102647414A (zh) 2012-08-22
CN102647414B true CN102647414B (zh) 2014-12-24

Family

ID=46659989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210090341.3A Expired - Fee Related CN102647414B (zh) 2012-03-30 2012-03-30 协议解析方法、设备及系统

Country Status (1)

Country Link
CN (1) CN102647414B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102916967B (zh) * 2012-10-29 2015-11-25 华为技术有限公司 协议解析的方法和装置
CN103324573A (zh) * 2013-07-02 2013-09-25 北京邮电大学 一种基于GUI协议状态机建模的Peach平台扩展方法
CN103780624B (zh) * 2014-01-26 2017-10-17 北京仿真中心 一种面向复杂系统的通用应用层网络通信协议应用方法
CN105812365B (zh) * 2016-03-12 2018-09-28 武汉芯泰科技有限公司 一种可编程可重构的帧处理器
CN108076017B (zh) * 2016-11-16 2021-09-17 腾讯科技(深圳)有限公司 一种数据包的协议解析方法及装置
CN106817372A (zh) * 2017-01-21 2017-06-09 厦门天锐科技股份有限公司 一种基于多状态机的协议解析系统及方法
CN108920186A (zh) * 2018-06-25 2018-11-30 杭州电子科技大学 一种运动指令解析方法及装置
CN111556067B (zh) * 2020-05-09 2022-05-20 中国航空无线电电子研究所 基于有穷状态机的网络数据协议描述结构及解析方法
CN112818087B (zh) * 2021-02-04 2024-05-28 北京数衍科技有限公司 打印机指令头尾解析方法和装置、设备及存储介质
CN113254025B (zh) * 2021-06-28 2021-09-28 中南大学湘雅医院 基于原语状态机的关键字特征集合编译方法、装置及设备
CN113434437B (zh) * 2021-08-26 2022-04-12 北京全路通信信号研究设计院集团有限公司 一种接口协议数据解析方法及系统
CN114070761B (zh) * 2021-11-11 2023-09-26 北京轨道交通路网管理有限公司 协议报文检测方法、其装置及电子设备
CN116847004B (zh) * 2023-08-30 2023-11-17 江铃汽车股份有限公司 一种汽车can信号的解析方法、系统及计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1788490A1 (en) * 1999-06-30 2007-05-23 Apptitude, Inc. Method and apparatus for monitoring traffic in a network
CN102082762A (zh) * 2009-11-30 2011-06-01 华为技术有限公司 一种协议识别方法、设备及系统
CN102143148A (zh) * 2010-11-29 2011-08-03 华为技术有限公司 用于通用协议解析的参数获取和通用协议解析方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963913B2 (en) * 2001-06-11 2005-11-08 Bluefire Security Technologies, Inc. Packet filtering system and methods

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1788490A1 (en) * 1999-06-30 2007-05-23 Apptitude, Inc. Method and apparatus for monitoring traffic in a network
CN102082762A (zh) * 2009-11-30 2011-06-01 华为技术有限公司 一种协议识别方法、设备及系统
CN102143148A (zh) * 2010-11-29 2011-08-03 华为技术有限公司 用于通用协议解析的参数获取和通用协议解析方法及装置

Also Published As

Publication number Publication date
CN102647414A (zh) 2012-08-22

Similar Documents

Publication Publication Date Title
CN102647414B (zh) 协议解析方法、设备及系统
US10237295B2 (en) Automated event ID field analysis on heterogeneous logs
US9990583B2 (en) Match engine for detection of multi-pattern rules
EP2901643B1 (en) An apparatus for, a method of, and a network server for detecting data patterns in a data stream
CN107341399B (zh) 评估代码文件安全性的方法及装置
US20210081437A1 (en) Systems and methods for trie-based automated discovery of patterns in computer logs
CN101950312B (zh) 一种互联网网页内容解析方法
CN101286988B (zh) 一种并行多模式匹配的方法及系统
CN106897072A (zh) 业务工程调用方法、装置及电子设备
CN106970820A (zh) 代码存储方法及代码存储装置
CN109144964A (zh) 基于机器学习的日志解析方法和装置
CN108289093A (zh) App应用特征码库的构建方法及构建系统
CN107169092A (zh) 交互过程中智能识别并处理敏感内容的方法及系统
CN102916967B (zh) 协议解析的方法和装置
CN109889471B (zh) 结构化查询语句sql注入检测方法和系统
CN104079450B (zh) 特征模式集生成方法及装置
CN113849820A (zh) 一种漏洞检测方法及装置
CN101388044A (zh) 匹配规则包含或运算符的并行多模式匹配的方法及系统
CN101377816A (zh) 匹配规则包含位移指示符的并行多模式匹配的方法及系统
CN101304565B (zh) 移动终端识别方法和单元以及增值服务提供方法和系统
CN108572948B (zh) 门牌信息的处理方法及装置
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
CN114900492A (zh) 异常邮件检测方法、装置、系统与计算机可读存储介质
CN113641523A (zh) 一种日志处理方法及装置
CN113055760A (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170602

Address after: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee after: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Liu Yuemei

Inventor before: Guo Zhi

Inventor before: Zeng Jia

Inventor before: Di Pake

Inventor before: Geng Yulei

Inventor before: Tian Dan

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170912

Address after: 421800, room 3, building 203, west gate, Bridge Road, Leiyang, Hunan, Hengyang

Patentee after: Liu Yuemei

Address before: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee before: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 541199 Lingui County, Guilin, Lingui County, Lingui Town, Xinglin Road, No. 1, unit 202, Room 202

Patentee after: Liu Yuemei

Address before: 421800, room 3, building 203, west gate, Bridge Road, Leiyang, Hunan, Hengyang

Patentee before: Liu Yuemei

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141224

Termination date: 20180330