CN111107042A - 报文解析方法、装置、计算机设备和存储介质 - Google Patents
报文解析方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111107042A CN111107042A CN201811260221.7A CN201811260221A CN111107042A CN 111107042 A CN111107042 A CN 111107042A CN 201811260221 A CN201811260221 A CN 201811260221A CN 111107042 A CN111107042 A CN 111107042A
- Authority
- CN
- China
- Prior art keywords
- message
- value
- key
- current
- current 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种报文解析方法、装置、计算机设备和存储介质,计算机设备根据当前报文的属性特征,获取当前报文的键,并根据键和当前报文的身份标识的低N位,生成所述当前报文的散列值,然后根据当前报文的散列值查询散列表,在散列表中获取当前报文的定义值,最后根据所述当前报文的定义值解析所述当前报文。由于本实施例中的散列值采用的是报文ID的固定位数,例如CAN报文ID的低8位,使得在散列表所占用的内存空间和查表效率之间可以取得一个比较好的平衡,在报文数量比较多的时候,缩短查找的时间,从而以较小的内存开销获取较高的查表效率。
Description
技术领域
本申请涉及报文解析技术领域,特别是涉及一种报文解析方法、装置、计算机设备和存储介质。
背景技术
控制器局域网络(Controller Area Network,简称CAN)总线以报文为单位进行数据传送,在CAN总线报文进行分析的时候,通常需要将其数据段解析成信号,然后对信号进行分析。
报文解析一般先根据数据库文件中每条报文的定义生成用于查找报文定义的表,然后根据报文特性生成用于查表的键,再根据键查找表中的值,最后根据查到的值对报文进行解析。其中,目前的查找方法是以CAN报文ID作为键进行顺序查找,每查找一条报文需要查找长度平均为(n+1)/2,其中n为数据库中有定义的报文条数。
上述的查找方法报文数量比较多的时候,需要查找的时间较长,导致查表效率较低。
发明内容
基于此,有必要针对上述查找方法报文数量比较多的时候,需要查找的时间较长,导致查表效率较低的技术问题,提供报文解析方法、装置、计算机设备和存储介质。
第一方面,本发明的实施例提供一种报文解析方法,所述方法包括:
根据当前报文的属性特征,获取当前报文的键;
根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
根据所述当前报文的定义值解析所述当前报文。
在其中一个实施例中,所述根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值,包括:
根据所述当前报文的散列值查询散列表,确定所述散列值对应的键值数量;
根据所述键值数量和预设的第一索引值,确定所述当前报文的定义值。
在其中一个实施例中,所述根据所述键值数量和预设的第一索引值,确定所述当前报文的定义值,包括:
若所述第一索引值小于所述键值数量,则判断所述第一索引值对应的键与所述当前报文的键是否相同,得到判断结果;
根据所述判断结果确定所述当前报文的定义值。
在其中一个实施例中,所述根据所述判断结果确定所述当前报文的定义值,包括:
若所述判断结果为所述第一索引值对应的键与所述当前报文的键相同,则确定所述第一索引值对应的键指向的值为所述当前报文的定义值;
若所述判断结果为所述第一索引值对应的键与所述当前报文的键不相同,则将所述第一索引值加1,得到第二索引值,并根据所述键值数量和所述第二索引值,确定所述当前报文的定义值。
在其中一个实施例中,所述方法还包括:
从数据库文件中获取所有报文的信息;所述报文的信息包括报文的属性特征和报文的解析信息;
根据各所述报文的属性特征生成所述散列表的键;
根据各所述报文的解析信息,生成所述散列表的每个键指向的定义值;
根据所述散列表的键和所述每个键指向的定义值生成所述散列表。
在其中一个实施例中,所述方法还包括:
按照预设的规则对所述散列表中的键值进行排列,所述预设的规则包括报文类型规则和/或报文周期规则。
在其中一个实施例中,所述报文的属性特征包括:数据长度码DLC、扩展帧标志位、控制器局域网络CAN通道、CAN报文身份标识ID。
第二方面,本发明的实施例提供一种报文解析装置,所述装置包括:
第一获取模块,用于根据当前报文的属性特征,获取当前报文的键;
生成模块,用于根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
第二获取模块,用于根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
解析模块,用于根据所述当前报文的定义值解析所述当前报文。
第三方面,本发明的实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
根据当前报文的属性特征,获取当前报文的键;
根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
根据所述当前报文的定义值解析所述当前报文。
第四方面,本发明的实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
根据当前报文的属性特征,获取当前报文的键;
根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
根据所述当前报文的定义值解析所述当前报文。
本申请提供的一种报文解析方法、装置、计算机设备和存储介质,计算机设备根据当前报文的属性特征,获取当前报文的键,并根据键和当前报文的身份标识的低N位,生成所述当前报文的散列值,然后根据当前报文的散列值查询散列表,在散列表中获取当前报文的定义值,最后根据所述当前报文的定义值解析所述当前报文。由于本实施例中的散列值采用的是报文ID的固定位数,例如CAN报文ID的低8位,使得在散列表所占用的内存空间和查表效率之间可以取得一个比较好的平衡,在报文数量比较多的时候,缩短查找的时间,从而以较小的内存开销获取较高的查表效率。
附图说明
图1为一个实施例中一种报文解析方法的应用环境图;
图2为一个实施例提供的一种报文解析方法的流程示意图;
图3为一个实施例提供的一种报文解析方法的流程示意图;
图4为一个实施例提供的一种报文解析方法的流程示意图;
图5为一个实施例提供的一种报文解析方法的流程示意图;
图5.1为一个实施例提供的查找当前报文的定义值的流程示意图;
图6为一个实施例提供的一种报文解析方法的流程示意图;
图6.1为一个实施例提供的生成散列表的流程示意图;
图7为一个实施例提供的一种报文解析装置的结构框图;
图8为一个实施例提供的一种报文解析装置的结构框图;
图9为一个实施例提供的一种报文解析装置的结构框图;
图10为一个实施例提供的一种报文解析装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种报文解析方法,可以应用于如图1所示的计算机设备,该计算机设备可以是服务器,其内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储一种报文解析方法的数据。
下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
需要说明的是,本发明实施例提供的报文解析方法,其执行主体为计算机设备,其中,该执行主体还可以是报文解析装置,该装置可以通过软件、硬件或者软硬件结合的方式实现成为数据分析终端的部分或者全部。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在一个实施例中,图2提供了一种报文解析方法,本实施例涉及的是计算机设备根据由当前报文的属性特征生成的散列值,获取所述当前报文的定义值,并解析当前报文的具体过程。如图2所示,该方法包括:
S101,根据当前报文的属性特征,获取当前报文的键。
其中,报文可以是控制器局域网络(Controller Area Network,简称CAN)总线报文,也可以是其他数据类型的报文,本实施例对此不做限定。其中当前报文不是特指固定的报文,该当前报文可以是所有需要解析的报文中的任何一条报文。其中,报文的属性特性表示报文中一些固有的信息,例如以CAN报文为例,该报文的属性特性可以是报文中的数据长度码(Data Length Code,简称DLC,)、扩展帧标志位、CAN通道、CAN报文ID等信息,本实施例对该报文的属性特征不做限定。
示例地,以CAN报文为例,计算机设备根据当前CAN报文的属性特征信息生成当前报文的键,其生成方式可以是将该CAN报文的属性特征进行罗列组合成当前报文的键,也可以是将该CAN报文的属性特征进行一定的处理形成当前报文的键,其中对于生成当前报文的键使用的CAN报文的属性特征不做具体限定,例如可以是将DLC、扩展帧标志位、CAN通道、CAN报文ID一起生成,也可以是其中的部分生成,本实施例对此不做限定。需要说明的是,本申请的实施例中对报文解析使用的表均为散列表,相应的该键表示的是散列表的键,计算机设备根据当前CAN报文的属性特征生成键的方法,可以是计算机设备使用编程语言生成,其生成的元素即为报文的属性特征,示例地,如下表1所示,计算机设备根据参报文的DLC、扩展帧标志位、CAN通道、CAN报文ID使用编程语言生成的散列表的键为一个64位的无符号整型数,键的一种结构如表1所示:
表1
位 | 63-43 | 42-39 | 38 | 37-32 | 31-0 |
字段 | 保留位 | DLC | 扩展帧标志位 | CAN通道 | 报文ID |
S102,根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值。
基于上述S101步骤中,计算机设备根据当前报文的属性特征生成的键,和该当前报文身份标识(例如CAN报文ID)的低N位,生成所述当前报文的散列值。由于生成的报文的键中和当前报文的属性特征中均包含有报文的ID,因此,在使用该报文ID时可以是从报文的键中获取,也可以是从当前报文的属性特征中获取,本实施例对此不做限定。其中,该报文ID的低N位可以表示该报文ID的最后N位,其具体可以是根据用户实际需求设定的数量,例如:报文ID的低8位,本实施例对此不做限定。需要说明的是,本实施例中所述的报文身份标识的低N位只是一种可实现方式,如果在本实施例的基础上采用报文ID的其他位数字生成散列值,也属于本申请的保护范围之内。在本实施例中,由于CAN报文ID的高位通常表示报文的用途,例如,ID高三位为7的报文(如0x7DF)通常表示诊断报文,这些报文在实际应用中的发送频率非常低。而CAN总线上实际高频发送的报文(相应的查表频率也更高)通常只有应用报文,因为应用报文类的高位通常变化不大,而主要是低8位不同,示例地,以CAN报文ID的低8位为例,计算机设备基于上述生成的键,和该CAN报文ID的低8位,生成当前报文对应的散列值,其中该散列值表示用于索引散列表的值,在本实施例中由报文的键和报文ID生成。其中,计算机设备生成散列值的方法可以是将该当前报文的键与当前报文身份标识的低8位组合而成,其组合方式可以是以该低8位作为当前报文键的右下脚标,也可是将当前的报文的身份标识的低8位由二进制准换为十进制的表示方式,然后将其与键进行普通罗列组合,还可以是其他方式生成该散列值,本实施例对此不做限定。其中计算机设备实现该生成方法可以使用C语言实现,也可以是以其他方式实现,本实施对此不做限定。
S103,根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系。
其中,散列表是一个由散列表元素构成的指针数组,其中散列表元素表示散列表的存储单元,该散列表元素通常包含散列表的键和值,在本实施例中,散列表的键指向的散列表的值即为报文的定义值,本申请提供的实施例中使用的散列表即由报文的键和报文的定义值构成,对于该散列表的生成方法,可以是将以上根据报文的属性特征生成的键和值一一对应形成数组结构,然后将该数组结构与其对应的散列值一一对应以链表的形式罗列,其中该散列值和散列表的键值之间的一一对应关系为预设的散列函数,根据该散列函数,计算机设备可以通过散列值定位到其在散列表中的数组。
示例地,如下表2所示,该散列表的大小为256,散列表的一种构成形式如下:
表2
具体地,基于上述S103步骤中,计算机设备生成的散列值,通过该散列值,计算机设备在散列表中查找该当前报文的键指向的定义值,其中计算机设备在散列表中查找键指向的定义值的方法,可以使用预设的散列函数查找,例如直接定址法、除留余数法、数字分析法、平方取中法等,本实施例对此不做限定。
S104,根据所述当前报文的定义值解析所述当前报文。
基于上述S103步骤,计算机设备在散列表中查找该当前报文的键指向的定义值,使用该当前报文对应的定义值对该当前报文进行解析,例如:CAN总线报文的解析主要就是查找到报文数据段里面的信号定义,并根据定义计算出信号的原始值和物理值,其中物理值是由原始值乘以系数再加上偏移计算得出。其中信号值的计算是通过信号的定义,包括信号的起始位、长度、字节顺序从报文数据段中提取出信号的原始值,然后再根据信号的偏移和系数由原始值计算出物理值。其中,信号值计算方法的实现过程例如可以使用C语言实现,本实施例对此不做限定。这样根据报文数据段、DLC以及信号定义获取信号的原始值和物理值即根据当前的报文的定义值解析当前报文的过程。
本实施例提供的一种报文解析方法,计算机设备根据当前报文的属性特征,获取当前报文的键,并根据键和当前报文的身份标识的低N位,生成所述当前报文的散列值,然后根据当前报文的散列值查询散列表,在散列表中获取当前报文的定义值,最后根据所述当前报文的定义值解析所述当前报文。由于本实施例中的散列值采用的是报文ID的低N位,例如CAN报文ID的低8位,使得在散列表所占用的内存空间和查表效率之间可以取得一个比较好的平衡,在报文数量比较多的时候,缩短查找的时间,从而以较小的内存开销获取较高的查表效率。
在一个实施例中,图3提供了一种报文解析方法,本实施例涉及的是计算机设备根据当前报文散列值,在散列表中获取所述当前报文的定义值的具体过程。如图3所示,上述S103包括:
S201,根据所述当前报文的散列值查询散列表,确定所述散列值对应的键值数量。
本实施例中,基于上述S102步骤确定的当前报文的散列值,计算机设备根据该当前报文的散列值查询散列表,确定该散列表中当前报文的散列值对应的键值数量,示例地,以上述S103步骤中表2的散列表为例,假设当前报文的散列值为1,则计算机设备在该散列表中查询散列值为1对应的键值数量为3。
S202,根据所述键值数量和预设的第一索引值,确定所述当前报文的定义值。
其中,第一索引值表示在确定了当前报文的散列值对应的键值数组后,计算机设备在该键值数组中查找某个键值的顺序,例如,在表2的散列表中,散列值1对应的键值数组包括键值数量为3对应的键值数组中的所有键值,则该第一索引值即为计算机设备在该键值数量3对应的键值数组中查找键值的顺序。其中,该第一索引值不是一个固定值,随着计算机设备的查找顺序变化的,一般地,该第一索引值预设从0开始取值。具体地,基于上述S201步骤中确定的键值数量,计算机设备根据该预设的第一索引值在散列表中确定当前报文的散列值对应的键所指向的定义值。其中计算机设备根据键值数量和预设的第一索引值确定定义值的方法,例如:可以是比较该键值数量的预设第一索引值的大小,若该键值数量大于第一索引值,则表示当前报文的定义值可以在该键值数量对应的键值的数组中确定,若该键值数量小于第一索引值,则该当前报文的定义值不在该键值数量对应的键值数组中。本实施例对于计算机设备根据键值数量和预设的第一索引值,确定所述当前报文的定义值的具体方法不做限定。
本实施例提供的一种报文解析方法,计算机设备根据当前报文的散列值查询散列表,确定该散列值对应的键值数量,并根据键值数量和预设的第一索引值,确定当前报文的定义值,由于通过当前报文的散列值确定到散列表中对应的键值数量,从而确定该当前报文的散列值在散列表中需要查找的键值数组,然后根据预设的第一索引值在该键值数组中一一查找,使得在报文数量比较多的时候,也可以大大缩短查找的时间,从而获得了较高的查表效率。
在一个实施例中,图4提供了一种报文解析方法,本实施例涉及的是计算机设备根据第一索引值和键值数量的比较结果,确定当前报文的定义值的具体过程。如图4所示,上述S202包括:
S301,若所述第一索引值小于所述键值数量,则判断所述第一索引值对应的键与所述当前报文的键是否相同,得到判断结果。
基于上述S201步骤中确定的当前报文的散列值对应的键值数量,计算机设备比较该第一索引值与该键值数量的大小,由于该第一索引值是预设从0开始,所以若该第一索引值大于等于键值数量,则表示该键值数量为0,则该键值数量对应的键值数组中不存在定义值;所以只有在第一索引值小于键值数量时,计算机设备可以从该键值数量对应的键值数组中依次查找该当前报文的散列值对应的定义值,每查找一个,计算设备判断该第一索引值对应的键与当前报文的键是否相同,得到判断结果。计算机设备查找时以第一索引值所表示的顺序开始,若第一索引值为0,则从该键值数组中的第0位开始查找,依次类推。
S302,根据所述判断结果确定所述当前报文的定义值。
基于上述S301步骤中,计算机设备判断第一索引值对应的键与当前报文的键是否相同的结果,若结果相同则表示查找到了该当前报文的定义值,若不相同则表示没有查找到,则计算设备依照第一索引值的变化顺序依次往下查找。
可选地,如图5所示,S302步骤的一种可实现方式包括:
S401,若所述判断结果为所述第一索引值对应的键与所述当前报文的键相同,则确定所述第一索引值对应的键指向的值为所述当前报文的定义值。
在本实施例中,若第一索引值对应的键与当前报文的键相同,则该第一索引值对应的键指向的值即为该当前报文的定义值,例如,以S103步骤中的表2为例,该当前报文的散列值为1,其对应的键为该当前报文的属性特性构成的64位无符号整型数,设定该第一索引值为1,则散列值为1对应的键值数量3的键值数组中,计算机设备判断第1位键是否与当前报文的键相同,若相同则该当前报文的定义值即为第1位键指向的第一位值。
S402,若所述判断结果为所述第一索引值对应的键与所述当前报文的键不相同,则将所述第一索引值加1,得到第二索引值,并根据所述键值数量和所述第二索引值,确定所述当前报文的定义值。
本步骤中,若第一索引值对应的键与当前报文的键不相同,则将第一索引值加1,得到第二索引值,即在该当前报文的散列值对应的键值数量对应的键值数组中判断下一个键是否与当前报文的键相同,计算机设备按照第二索引值查找该当前报文的定义值的过程与按照第一索引值查找当前报文的定义值的过程相同,本实施例在此不再赘述。
示例地,如图5.1所示,该图为本实施例提供的计算机设备根据第一索引值和键值数量的比较结果,确定当前报文的定义值的示意过程,该图中,预设当前报文的键为K,散列值为i,第一索引值为j,则计算机设备先根据该键K生成的散列值i,定位到该散列表中i对应的键值数组中,然后将第一索引值预设为0开始查找,若该第一索引值j小于散列值i定位的键值数组中的键值数量,则继续判断该第一索引值j对应的键与该当前报文的键k是否相同,若相同则表示该键k指向的值为当前报文的定义值,若不相同,则对该第一索引值j加1生成第二索引值,继续执行上述判断过程,直到查找到该当前报文的定义值或者把该散列表查询完毕。
本实施例提供的一种报文解析方法,若第一索引值小于所述键值数量,计算机设备判断第一索引值对应的键与当前报文的键是否相同,得到判断结果,并根据判断结果确定当前报文的定义值,由于本实施例中计算机设备在查找当前报文的定义值时是先定位到当前报文对应的键值数组中,并在该键值数组中一一查找当前报文定义值,这样,可以使得查找范围变小,大大缩短查找过程的时间,从而获的了较高的查表效率。
在一个实施例中,图6提供了一种报文解析方法,本实施例涉及的是计算机设备根据数据库文件生成散列表的具体过程。如图6所示,该方法还包括:
S501,从数据库文件中获取所有报文的信息;所述报文的信息包括报文的属性特征和报文的解析信息。
本实施例中,计算机设备从该数据库文件中获取所有报文的信息,其中数据库文件表示的是用户根据所有的报文的信息制定的数据库,该数据库中包含所有报文的信息,报文的信息包括报文的属性特征和报文的解析信息,例如:CAN报文的:DLC、扩展帧标志位、CAN通道、CAN报文ID、报文的信号定义、报文的类型、报文的名称、报文的通道等等,本实施例对此不做限定。其中,计算机设备从该数据库文件中获取所有报文的信息的获取方法,可以是计算机设备发送指令到存储该数据库文件的设备中,也可以是用户根据需求在计算机设备中输入该数据库文件,还可以是其他方式,本实施例对此不做限定。
S502,根据各所述报文的属性特征生成所述散列表的键。
基于上述S501步骤中,计算机设备获取的数据库文件中所有报文的信息,由于该报文的信息中了包括报文的属性特征和报文的解析信息,计算机设备根据该所有报文的属性特征生成散列表的键。其中,该计算设备生成散列表的键可以是将该CAN报文的属性特征进行罗列组合成当前报文的键,也可以是将该CAN报文的属性特征进行一定的处理形成当前报文的键,其中对于生成当前报文的键使用的CAN报文的属性特征不做具体限定,例如可以是将DLC、扩展帧标志位、CAN通道、CAN报文ID一起生成,也可以是其中的部分生成,本实施例对此不做限定。可选地,所述报文的属性特征包括:DLC、扩展帧标志位、CAN通道、CAN报文ID。根据该属性特征,计算机设备生成的散列表的键例如S101步骤中表1所示的64位无符号整型数。
S503,根据各所述报文的解析信息,生成所述散列表的每个键指向的定义值。
其中,解析信息表示例如该报文的信号定义,通过该解析信息可以对该报文进行解析,具体地,计算机设备基于上述S502步骤中获取的报文的解析信息,计算机设备根据该所有报文的解析信息生成该散列表的每个键指向的定义值,这样通过该定义值就可以对每条报文进行解析。其中,计算机设备生成散列表定义值的可以是将该所有报文的解析信息直接罗列,其中每条报文的键与每条报文的定义值互相对应,对于计算机设备生成散列表的定义值的具体方法,本实施例不做限定。
S504,根据所述散列表的键和所述每个键指向的定义值生成所述散列表。
上述S502和S503步骤中,计算机设备已经分别生成了散列表的键和每个键指向的定义值(即散列表的值),基于此,计算机设备将该键和定义值以链表的形式生成散列表,其生成方式可以是将以上根据报文的属性特征生成的键和值一一对应形成数组结构,然后将该数组结构与其对应的散列值一一对应以链表的形式罗列,其中该散列值和散列表的键值之间的一一对应关系为预设的散列函数,根据该散列函数,计算机设备可以通过散列值定位到其在散列表中的数组,该散列表的生成结果可以如上述S103步骤中的表2所示。该散列表表示了各报文的散列值与定义值之间的对应关系,通过散列值可以在该散列表查询到当前报文的定义值。
考虑到在根据报文的散列值查询散列表中定义值是根据先查找的都是经常需要解析的报文的定义值,而经常需要解析的报文即为使用时发送频率较高的报文,可选地,该方法还包括:按照预设的规则对所述散列表中的键值进行排列,所述预设的规则包括报文类型规则和/或报文周期规则。其中,在对散列表中定义值进行排序时,对于散列值相同的定义值以数组形式进行排列,其在数组中的排列顺序按照先周期型报文,后事件型报文的顺序排列,然后在周期型报文中按照周期由小到大的顺序排列。
示例地,如图6.1所示,该图表示的是计算机设备根据数据库文件中的所有报文信息生成散列表的过程,其中计算机设备在读取数据库文件中的所有报文信息后,对该报文按照报文类型和报文周期分别进行排序,以便生成的散列表中的键值是依照此顺序进行排列的,然后,计算机设备先判断该当前读取的报文的信息是否已经存储完毕,若存储完毕将由报文信息形成的临时散列表转换为散列表,则表示当前读取的报文已生成散列表中的对应位置中,若当前读取的报文的信息是否已经没有存储完,则计算机设备先生成该当前读取的报文键,然后生成该键对应的散列值,并将该键和散列值以及报文的其他信息存储在临时散列表中。其中临时散列表与散列表之间的区别只在于显示形式不同,其包含的信息内容相同。
本实施例提供的一种报文解析方法,计算机设备从数据库文件中获取包括报文的属性特征和报文的解析信息的所有报文的信息,根据各报文的属性特征生成散列表的键,根据各报文的解析信息生成散列表的每个键指向的定义值,然后根据该散列表的键和每个键指向的定义值生成散列表,这样,本实施例根据数据库文件中所有报文的信息生成散列表,可以使对报文进行解析是从该散列表中得到定义值,并使用该值对该报文进行解析,又由于该散列表中的定义值是根据报文类型和报文周期对散列值相同的键值进行排序,能够使得发送频率高的报文排得更加靠前,从而减少比对次数,提升查表效率。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种报文解析装置,包括:第一获取模块10、第一生成模块11、第二获取模块12和解析模块13,其中:
第一获取模块10,用于根据当前报文的属性特征,获取当前报文的键;
第一生成模块11,用于根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
第二获取模块12,用于根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
解析模块13,用于根据所述当前报文的定义值解析所述当前报文。
上述实施例提供的一种报文解析装置,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,如图8所示,提供了一种报文解析装置,上述第二获取模块12包括:第一确定单元121和第二确定单元122,其中:
第一确定单元121,用于根据所述当前报文的散列值查询散列表,确定所述散列值对应的键值数量;
第二确定单元122,用于根据所述键值数量和预设的第一索引值,确定所述当前报文的定义值。
上述实施例提供的一种报文解析装置,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,如图9所示,提供了一种报文解析装置,上述第二确定单元122包括:判断子单元1221和确定子单元1222,其中:
判断子单元1221,用于若所述第一索引值小于所述键值数量,则判断所述第一索引值对应的键与所述当前报文的键是否相同,得到判断结果;
确定子单元1222,用于根据所述判断结果确定所述当前报文的定义值。
上述实施例提供的一种报文解析装置,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在其中一个实施例中,上述确定子单元1222具体用于若所述判断结果为所述第一索引值对应的键与所述当前报文的键相同,则确定所述第一索引值对应的键指向的值为所述当前报文的定义值;若所述判断结果为所述第一索引值对应的键与所述当前报文的键不相同,则将所述第一索引值加1,得到第二索引值,并根据所述键值数量和所述第二索引值,确定所述当前报文的定义值。
上述实施例提供的一种报文解析装置,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,如图10所示,提供了一种报文解析装置,该装置还包括:第三获取模块14、第二生成模块15、第三生成模块16和第四生成模块17,其中:
第三获取模14,用于从数据库文件中获取所有报文的信息;所述报文的信息包括报文的属性特征和报文的解析信息。
第二生成模块,用于根据各所述报文的属性特征生成所述散列表的键;
第三生成模块,用于根据各所述报文的解析信息,生成所述散列表的每个键指向的定义值;
第四生成模块,用于根据所述散列表的键和所述每个键指向的定义值生成所述散列表。
上述实施例提供的一种报文解析装置,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在其中一个实施例中,该装置还包括排列模块,用于按照预设的规则对所述散列表中的键值进行排列,所述预设的规则包括报文类型规则和/或报文周期规则。
在其中一个实施例中,所述报文的属性特征包括:DLC、扩展帧标志位、CAN通道、CAN报文ID。
上述实施例提供的一种报文解析装置,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
关于报文解析装置的具体限定可以参见上文中对于报文解析方法的限定,在此不再赘述。上述报文解析装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种报文解析方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
根据当前报文的属性特征,获取当前报文的键;
根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
根据所述当前报文的定义值解析所述当前报文。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
根据当前报文的属性特征,获取当前报文的键;
根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
根据所述当前报文的定义值解析所述当前报文。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种报文解析方法,其特征在于,所述方法包括:
根据当前报文的属性特征,获取当前报文的键;
根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
根据所述当前报文的定义值解析所述当前报文。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值,包括:
根据所述当前报文的散列值查询散列表,确定所述散列值对应的键值数量;
根据所述键值数量和预设的第一索引值,确定所述当前报文的定义值。
3.根据权利要求2所述的方法,其特征在于,所述根据所述键值数量和预设的第一索引值,确定所述当前报文的定义值,包括:
若所述第一索引值小于所述键值数量,则判断所述第一索引值对应的键与所述当前报文的键是否相同,得到判断结果;
根据所述判断结果确定所述当前报文的定义值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述判断结果确定所述当前报文的定义值,包括:
若所述判断结果为所述第一索引值对应的键与所述当前报文的键相同,则确定所述第一索引值对应的键指向的值为所述当前报文的定义值;
若所述判断结果为所述第一索引值对应的键与所述当前报文的键不相同,则将所述第一索引值加1,得到第二索引值,并根据所述键值数量和所述第二索引值,确定所述当前报文的定义值。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从数据库文件中获取所有报文的信息;所述报文的信息包括报文的属性特征和报文的解析信息;
根据各所述报文的属性特征生成所述散列表的键;
根据各所述报文的解析信息,生成所述散列表的每个键指向的定义值;
根据所述散列表的键和所述每个键指向的定义值生成所述散列表。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
按照预设的规则对所述散列表中的键值进行排列,所述预设的规则包括报文类型规则和/或报文周期规则。
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述报文的属性特征包括:数据长度码DLC、扩展帧标志位、控制器局域网络CAN通道、CAN报文身份标识ID。
8.一种报文解析装置,其特征在于,所述装置包括:
第一获取模块,用于根据当前报文的属性特征,获取当前报文的键;
生成模块,用于根据所述键和所述当前报文的身份标识的低N位,生成所述当前报文的散列值;
第二获取模块,用于根据所述当前报文的散列值查询散列表,获取所述当前报文的定义值;所述散列表用于表示各报文的散列值与定义值之间的对应关系;
解析模块,用于根据所述当前报文的定义值解析所述当前报文。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811260221.7A CN111107042B (zh) | 2018-10-26 | 2018-10-26 | 报文解析方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811260221.7A CN111107042B (zh) | 2018-10-26 | 2018-10-26 | 报文解析方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111107042A true CN111107042A (zh) | 2020-05-05 |
CN111107042B CN111107042B (zh) | 2021-03-09 |
Family
ID=70419071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811260221.7A Active CN111107042B (zh) | 2018-10-26 | 2018-10-26 | 报文解析方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111107042B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797098A (zh) * | 2020-06-30 | 2020-10-20 | 北京经纬恒润科技有限公司 | 一种报文解析方法、装置及车载终端 |
CN112291131A (zh) * | 2020-12-28 | 2021-01-29 | 知行汽车科技(苏州)有限公司 | Can信号自动解析装置及设备 |
CN112511441A (zh) * | 2020-11-18 | 2021-03-16 | 潍柴动力股份有限公司 | 报文的处理方法及装置 |
CN112685612A (zh) * | 2020-12-31 | 2021-04-20 | 武汉思普崚技术有限公司 | 一种特征码查找和匹配方法、设备及存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040125799A1 (en) * | 2002-12-31 | 2004-07-01 | Buer Mark L. | Data processing hash algorithm and policy management |
CN1937574A (zh) * | 2005-09-19 | 2007-03-28 | 北京大学 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
CN101217493A (zh) * | 2008-01-08 | 2008-07-09 | 北京大学 | 一种tcp数据包的传输方法 |
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
CN101296228A (zh) * | 2008-06-19 | 2008-10-29 | 上海交通大学 | 基于流量分析的ssl vpn协议检测方法 |
CN101483605A (zh) * | 2009-02-25 | 2009-07-15 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN104702588A (zh) * | 2013-12-04 | 2015-06-10 | 联发科技股份有限公司 | 解析器、分组处理装置以及相关方法 |
CN105376159A (zh) * | 2014-08-25 | 2016-03-02 | 深圳市中兴微电子技术有限公司 | 报文处理转发装置及方法 |
CN105681194A (zh) * | 2016-03-14 | 2016-06-15 | 上海市共进通信技术有限公司 | 实现网关设备二层数据包快速转发的方法 |
CN106209840A (zh) * | 2016-07-12 | 2016-12-07 | 中国银联股份有限公司 | 一种网络包去重方法及装置 |
CN106790206A (zh) * | 2017-01-05 | 2017-05-31 | 厦门中控生物识别信息技术有限公司 | 业务系统的协议解析方法及装置 |
CN107769992A (zh) * | 2017-09-15 | 2018-03-06 | 通鼎互联信息股份有限公司 | 一种报文解析分流方法及装置 |
CN109684607A (zh) * | 2017-10-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Json数据解析方法、装置、计算机设备和存储介质 |
-
2018
- 2018-10-26 CN CN201811260221.7A patent/CN111107042B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040125799A1 (en) * | 2002-12-31 | 2004-07-01 | Buer Mark L. | Data processing hash algorithm and policy management |
CN1937574A (zh) * | 2005-09-19 | 2007-03-28 | 北京大学 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
CN101217493A (zh) * | 2008-01-08 | 2008-07-09 | 北京大学 | 一种tcp数据包的传输方法 |
CN101296228A (zh) * | 2008-06-19 | 2008-10-29 | 上海交通大学 | 基于流量分析的ssl vpn协议检测方法 |
CN101483605A (zh) * | 2009-02-25 | 2009-07-15 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN104702588A (zh) * | 2013-12-04 | 2015-06-10 | 联发科技股份有限公司 | 解析器、分组处理装置以及相关方法 |
CN105376159A (zh) * | 2014-08-25 | 2016-03-02 | 深圳市中兴微电子技术有限公司 | 报文处理转发装置及方法 |
CN105681194A (zh) * | 2016-03-14 | 2016-06-15 | 上海市共进通信技术有限公司 | 实现网关设备二层数据包快速转发的方法 |
CN106209840A (zh) * | 2016-07-12 | 2016-12-07 | 中国银联股份有限公司 | 一种网络包去重方法及装置 |
CN106790206A (zh) * | 2017-01-05 | 2017-05-31 | 厦门中控生物识别信息技术有限公司 | 业务系统的协议解析方法及装置 |
CN107769992A (zh) * | 2017-09-15 | 2018-03-06 | 通鼎互联信息股份有限公司 | 一种报文解析分流方法及装置 |
CN109684607A (zh) * | 2017-10-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Json数据解析方法、装置、计算机设备和存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797098A (zh) * | 2020-06-30 | 2020-10-20 | 北京经纬恒润科技有限公司 | 一种报文解析方法、装置及车载终端 |
CN111797098B (zh) * | 2020-06-30 | 2024-01-19 | 北京经纬恒润科技股份有限公司 | 一种报文解析方法、装置及车载终端 |
CN112511441A (zh) * | 2020-11-18 | 2021-03-16 | 潍柴动力股份有限公司 | 报文的处理方法及装置 |
CN112291131A (zh) * | 2020-12-28 | 2021-01-29 | 知行汽车科技(苏州)有限公司 | Can信号自动解析装置及设备 |
CN112291131B (zh) * | 2020-12-28 | 2021-03-30 | 知行汽车科技(苏州)有限公司 | Can信号自动解析装置及设备 |
CN112685612A (zh) * | 2020-12-31 | 2021-04-20 | 武汉思普崚技术有限公司 | 一种特征码查找和匹配方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111107042B (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111107042B (zh) | 报文解析方法、装置、计算机设备和存储介质 | |
CN109344197B (zh) | 基于大数据的分页下载方法和装置 | |
CN111290916B (zh) | 大数据监控方法、装置、设备及计算机可读存储介质 | |
CN113177225B (zh) | 基于区块链的数据存储证明方法、装置、设备和存储介质 | |
CN110321480B (zh) | 推荐信息的推送方法、装置、计算机设备和存储介质 | |
CN111580965A (zh) | 数据请求的处理方法及系统 | |
CN109542962B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112000903A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN109614399B (zh) | 位图数据查询方法、装置、计算机设备和存储介质 | |
CN108389124B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114238334A (zh) | 异构数据编码、解码方法和装置、计算机设备和存储介质 | |
CN108460116B (zh) | 搜索方法、装置、计算机设备、存储介质及搜索系统 | |
CN113434122A (zh) | 多角色页面创建方法、装置、服务器及可读存储介质 | |
CN117453784A (zh) | 配置文件转换方法、装置、设备及存储介质 | |
CN111901383A (zh) | 数据请求处理方法、装置、计算机设备和存储介质 | |
CN109460500B (zh) | 热点事件发现方法、装置、计算机设备和存储介质 | |
CN110704437A (zh) | 数据库查询语句的修改方法、装置、设备和存储介质 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN111177155B (zh) | 消息过滤方法、系统和计算机设备 | |
CN106156169B (zh) | 离散数据的处理方法和装置 | |
CN114020772A (zh) | 查询条件配置方法、系统、电子设备及存储介质 | |
CN109840080B (zh) | 字符属性比较方法、装置、存储介质及电子设备 | |
CN113064898A (zh) | 一种基于链上合约微型索引的检索方法、装置和电子设备 | |
CN113190554A (zh) | 一种生成主键的方法和分布式系统 | |
CN113157212A (zh) | Flash存储方法、装置、智能穿戴设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |