CN113132309B - 数据包头部信息的获取方法、装置、设备和介质 - Google Patents
数据包头部信息的获取方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN113132309B CN113132309B CN201911409956.6A CN201911409956A CN113132309B CN 113132309 B CN113132309 B CN 113132309B CN 201911409956 A CN201911409956 A CN 201911409956A CN 113132309 B CN113132309 B CN 113132309B
- Authority
- CN
- China
- Prior art keywords
- protocol
- target
- data packet
- index
- header
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000004590 computer program Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
-
- 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/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明实施例提供了一种数据包头部信息的获取方法、装置、设备和介质。该方法包括:接收目标数据包;根据目标数据包的第一协议索引,在查询链表数组中确定目标数据包的当前链表;通过目标数据包的当前链表的表头项记载的第一协议索引,确定表头项记载的第一协议索引对应的目标第一协议的头部信息;将表头项记载的第一协议索引对应的目标第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息。根据本发明实施例提供的数据包头部信息的获取方法、装置、设备和介质,能够提高数据包数据头部信息的获取效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据包头部信息的获取方法、装置、设备和介质。
背景技术
随着互联网技术的快速发展,现代社会已经成为基于因特网的网络社会。而传输控制协议(Transmission Control Protocol,TCP)/网际互连协议(Internet Protocol,IP)协议栈是因特网的基础技术,从而导致该技术被广泛的实现在众多连接入因特网的设备中。
TCP/IP协议栈中,数据包的转发是十分关键的一项功能,因为技术的快速发展,需求不断变更,对数据包的转发处理必须满足灵活性。目前,在对数据包进行转发处理时,需要把首先获取到协议的头部信息才可以进行数据的转发。
但是,目前协议的头部信息的获取方式是通过协议栈中针对每个协议的固化的代码,利用代码实现对协议头部的获取。然而,这一方式是固化的,不能在软硬件运行时动态修改的。即,如果需要新增协议时,就需要通过新增代码来实现对新增协议头部获取的支持,操作繁琐,效率较低。
发明内容
本发明实施例提供了一种数据头部信息的获取方法、装置、设备和介质,能够提高数据包数据头部信息的获取效率。
第一方面,提供一种数据头部信息的获取方法,该方法包括:
接收目标数据包;
根据目标数据包的第一协议索引,在查询链表数组中确定目标数据包的当前链表,其中,查询链表数组中的链表包括第一协议的第一协议索引和第一协议承载的多个第二协议的第二协议索引;
通过目标数据包的当前链表的表头项记载的第一协议索引,确定表头项记载的第一协议索引对应的第一协议的头部信息;
将表头项记载的第一协议索引对应的第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息。
作为第一方面的一些可实现方式,通过目标数据包的当前链表的表头项记载的第一协议索引,确定表头项记载的第一协议索引对应的第一协议的头部信息,包括:
通过目标数据包的当前链表的表头项记载的第一协议索引,在第一数据库中确定表头项记载的第一协议索引对应的第一协议的头部信息,其中,第一数据库包括第一协议索引及其对应的第一协议的头部信息。
作为第一方面的一些可实现方式,得到目标数据包的头部信息之后,还包括:
确定当前链表中的目标第二协议索引;
若目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式与第二数据库中目标第二协议的类型字段的预设比较方式一致,则将目标数据包的当前链表更新为查询链表数组中目标第二协议作为第一协议时对应的链表;
其中,第二数据库包括:第一协议的第一协议索引、第二协议的第二协议索引、第二协议的类型字段信息以及第二协议的类型字段的比较方式。
作为第一方面的一些可实现方式,还包括:
若目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式与第二数据库中目标第二协议的类型字段的预设比较方式不一致,则将当前链表中目标第二协议索引的下一个第二协议索引作为目标第二协议索引。
作为第一方面的一些可实现方式,确定当前链表中的目标第二协议索引之前,还包括:
基于查询链表数组,判断在目标第二协议索引对应的目标第二协议作为第一协议的情况下,目标第二协议是否承载协议信息;
在目标第二协议承载协议信息的情况下,判断目标数据包中目标第二协议索引对应的第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式是否与第二数据库中目标第二协议的类型字段的预设比较方式一致。
作为第一方面的一些可实现方式,还包括:
在目标第二协议未承载协议信息的情况下,输出目标数据包的头部信息记录链表。
第二方面,提供一种数据包头部信息的获取装置,该装置包括:
接收模块,用于接收目标数据包;
第一确定模块,用于根据目标数据包的第一协议索引,在查询链表数组中确定目标数据包的当前链表,其中,查询链表数组中的链表包括第一协议的第一协议索引和第一协议承载的多个第二协议的第二协议索引;
第二确定模块,用于通过目标数据包的当前链表的表头项记载的第一协议索引,确定表头项记载的第一协议索引对应的第一协议的头部信息;
记录模块,用于将表头项记载的第一协议索引对应的第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息。
作为第二方面的一些可实现方式,第二确定模块具体用于:
通过目标数据包的当前链表的表头项记载的第一协议索引,在第一数据库中确定表头项记载的第一协议索引对应的第一协议的头部信息,其中,第一数据库包括第一协议索引及其对应的第一协议的头部信息。
作为第二方面的一些可实现方式,数据包头部信息获取的装置还包括:
第三确定模块,用于在得到目标数据包的头部信息之后,确定当前链表中的目标第二协议索引;
第一更新模块,用于若目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式与第二数据库中目标第二协议的类型字段的预设比较方式一致,则将目标数据包的当前链表更新为查询链表数组中目标第二协议作为第一协议时对应的链表;
其中,第二数据库包括:第一协议的第一协议索引、第二协议的第二协议索引、第二协议的类型字段信息以及第二协议的类型字段的比较方式。
作为第二方面的一些可实现方式,第三确定模块还用于:
若目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式与第二数据库中目标第二协议的类型字段的预设比较方式不一致,则将当前链表中目标第二协议索引的下一个第二协议索引作为目标第二协议索引。
作为第二方面的一些可实现方式,数据包头部信息获取的装置还包括:
第一判断模块,用于在确定当前链表中的目标第二协议索引之前,基于查询链表数组,判断在目标第二协议索引对应的目标第二协议作为第一协议的情况下,目标第二协议是否承载协议信息;
第二判断模块,用于在目标第二协议承载协议信息的情况下,判断目标数据包中目标第二协议索引对应的第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式是否与第二数据库中目标第二协议的类型字段的预设比较方式一致。
作为第二方面的一些可实现方式,数据包头部信息获取的装置还包括:
输出模块,用于在目标第二协议未承载协议信息的情况下,输出目标数据包的头部信息记录链表。
第三方面,提供一种数据包头部信息的获取设备,该设备包括:
处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现如上述本发明实施例提供的数据包头部信息的获取方法。
根据本发明实施例的另一方面,提供一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如上述本发明实施例提供的数据包头部信息的获取方法。
本发明实施例提供的数据包头部信息的获取方法、装置、设备和介质,通过确定目标数据包的第一协议索引,即可在查询链表中确定目标数据包的当前链表,进而通过目标数据包的当前链表的表头项记载的第一协议索引,即可将目标数据包的当前链表的表头项记载的第一协议索引对应的第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息,进而提高数据包头部信息的获取效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的TCP/IP协议栈的结构示意图;
图2为本发明一实施例提供的数据包头部信息的获取方法的流程图;
图3为本发明的一个实施例提供的查询链表数组的示意图;
图4为本发明的一个实施例提供的协议编码规则数据库的示意图;
图5为本发明的一个实施例提供的第二数据库的示意图;
图6为本发明另一个实施例提供的数据包头部信息的获取方法的流程图;
图7为本发明一实施例提供的数据包头部信息的获取装置的结构示意图;
图8示出本发明一实施例提供的计算设备的示例性硬件架构的结构图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
TCP/IP协议栈中,数据包的转发是十分关键的一项功能,因为技术的快速发展,需求不断变更,对数据包的转发处理算法就满足灵活性。
数据包转发处理算法的灵活性要求在网络出现新增协议或新的需求时,能够尽量不改变软硬件的代码,而只通过数据配置实现数据包的转发。从而规避软硬件升级带来的业务中断及巨大的维护工作量。因为每个协议的处理基本上就是对协议头部的处理,数据包转发处理算法的灵活性首先就必须能够实现数据包头部信息的获取不需要通过新增代码来实现对新增协议头部获取的支持。
如图1所示,图1为本发明一实施例提供的TCP/IP协议栈的结构示意图。由图1可知,最底层为链路层协议包括以太网协议报文,向上依次是IP协议报文,TCP协议报文,应用层协议报文,用户数据。
用户数据从上到下依次添加:应用层协议报文头,TCP协议报文头,IP协议报文头,以太网协议报文头及报文尾。
其中,以太网协议承载着所有上层协议。IP协议、TCP协议和应用层协议既被下层协议承载,又承载着上一层协议。例如,IP协议被以太网协议所承载,又承载着TCP协议以及应用层协议。
在转发处理时,主要就是对协议头部进行处理。对于一个数据包的协议头部获取就是把每个协议头部信息提取出来,直到用户数据为止。
目前,在利用Linux操作系统进行协议提取时,需要每新增一个协议,都需要新增代码来完成一系列的协议头部信息的辨识及获取,要支持新协议,必须新开发软件及升级软件,用户必须为之付出开发成本,升级成本,并冒着业务中断带来的客户流失风险。
其次,Linux操作系统在进行头部信息的提取时,会带来协议处理的流水线化,上层协议必须等待下层协议处理完毕后才能进行处理,不能充分利用中央处理器(CPU)多核多线程带来的多协议并发处理的能力。数据包处理时延加大,无法满足一些对时延要求苛刻的业务需求。
此外,利用Linux操作系统提取头部信息的方式还导致对某些协议的头部信息的需求必须要完整的逐级执行完下层协议,无法针对一些轻量级的应用对某些底层协议处理进行旁路,导致算力被浪费。
因此,为了避免如果新增协议时,需要通过新增代码来实现对新增协议头部获取的支持,对TCP/IP协议栈进行分析,得到各协议在协议头部信息获取方法中的共性,得到如下特点:
(1)、链路层协议一般与物理端口相捆绑,其基础协议的头部长度是固定的。
(2)、链路层以上协议,有些协议头部的长度是固定的,有些协议头部的长度是可变长度的,对于可变长度的协议,协议头部会有标识协议头部长度的字段,此字段相对于协议头部的偏移量是固定的,字段长度不定。
因此,基于对TCP/IP协议栈特点的分析,本发明实施例提供了一种数据包头部信息的获取方法、装置、设备和介质,能够提高数据包数据头部信息的获取效率。
下面结合附图,描述根据本发明实施例提供的数据包头部信息的获取方法、装置、设备和介质。应注意,这些实施例并不是用来限制本发明公开的范围。
为了更好的理解本发明得技术方案,下面结合图2对本发明一实施例的数据包头部信息的获取方法进行详细说明,图2为本发明一实施例提供的数据包头部信息的获取方法的流程图。
如图2所示,本发明实施例中的数据包头部信息的获取方法包括以下步骤:
S201,接收目标数据包。
S202,根据目标数据包的第一协议索引,在查询链表数组中确定目标数据包的当前链表。
其中,查询链表数组中的链表包括第一协议的第一协议索引和第一协议承载的多个第二协议索引。
可选的,在本发明的一些实施例中,可继续参见图1,第一协议可以是以太网协议,此时,以太网协议承载的IP协议报文、TCP协议报文和应用层协议报文均属于第一协议承载的第二协议,其中,由于IP协议后面也会承载有TCP协议和应用层协议,故IP协议对于其承载的TCP协议和应用层协议可以称为第一协议,其承载的TCP协议和应用层协议称为第二协议。
可选的,在本发明的一些实施例中,查询链表数组的示意图,可以如图3所示,图3为本发明的一个实施例提供的查询链表数组的示意图。由图3可知,查询链表数组中的数组索引与协议编码规则数据库中的表项索引相一致。查询链表数组中的每一个链表头由协议编码规则数据库中的表项组成。
由于查询链表数组中的链表包括有第一协议的第一协议索引,则根据目标数据包中的目标第一协议即可在查询链表中确定出目标数据包当前的第一协议索引对应的当前链表。
S203,通过目标数据包的当前链表的表头项记载的第一协议索引,确定表头项记载的第一协议索引对应的第一协议的头部信息。
可选的,在本发明的一些实施例中,首先需要将物理端口配置为默认的链路层协议索引,并将此索引设置为该物理端口的当前协议索引。
其次,根据物理端口的当前协议索引从查询链表数组中确定协议链表的表头,并设置为物理端口的当前协议链表。
接下来,当物理接口接收到数据包时,将数据包的当前协议索引设置为物理端口的当前协议索引。通过上述的配置,即可在物理接口接收到目标数据后,即可以得到目标数据包的第一协议索引。
可选的,在本发明的一些实施例中,可以预先创建第一数据库,其中,第一数据库也可以称为协议编码规则数据库。例如,如图4所示,图4为本发明的一个实施例提供的协议编码规则数据库的示意图。
由图4可知,协议编码规则数据库中表项各元素统一使用网络字节序存储。
协议编码规则数据库包括有:协议编码规则库索引,协议头部长度存在(协议头部长度是否由协议报文确定),协议头部长度字段匹配位图,协议头部长度字段单位(如果长度固定,则为协议头部长度,否则是长度单位,例如如果单位为4,则头部长度为4*头部字段的取值),协议名称。
其中,协议编码规则库索引为主键,该协议编码规则数据库由配置生成,协议头部长度字段匹配位图为一个字节数组,其长度与协议头部长度相同,协议头部长度字段所在的位会被置1,取长度字段的时候利用此位图与协议头部字节串通过“位与”计算得出。
可选的,在本发明的一些实施例中,可以通过目标数据包的当前链表的表头项记载的第一协议索引,在第一数据库中确定表头项记载的第一协议索引对应的第一协议的头部信息。
其中,可以是基于第一数据库中的各个表项信息,在目标数据包中确定第一协议对应的头部信息。
例如,基于第一数据库中目标数据包的第一协议索引对应的协议头部长度字段匹配位图,将目标数据包中的当前协议报文头部的长度作为目标数据包的第一协议的头部长度,并更新当前协议报文头偏移量。
S204,将表头项记载的第一协议索引对应的目标第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息。
可选的,在本发明的一些实施例中,可以通过数据包当前协议索引、数据包当前协议链表以及数据包当前协议报文头偏移量,创建目标数据包的协议头部信息记录链表。
接下来,创建数据包协议头部信息记录表项,链入数据包协议头部信息记录链表表尾,根据第一数据库中第一协议索引对应的表项信息赋值数据包协议头部信息记录单表项。
可选的,在本发明的一些实施例中,可以通过目标数据包的当前链表的表头项记载的第一协议索引,通过第一数据库确定表头项记载的第一协议索引对应的第一协议的头部信息。
例如,将以下内容记录至协议头部信息记录表中:将协议编码规则库索引赋值为数据包当前协议索引,并将协议头部距离数据包头部的偏移量赋值为数据包当前协议报文头部偏移量,接下来,根据第一数据库中的协议头部长度字段匹配位图从目标数据包中取出当前协议报文头部长度,并赋值到协议头部信息记录表中的协议头部长度。将协议头部信息记录表中的当前协议报文头部偏移量更新为当前协议报文头部偏移量加上协议报文头长度。
通过本发明实施例提供的数据包头部信息的获取方法,可以使得数据包头部信息的提取与协议处理代码相对独立,使得数据包头部信息的提取可以完全通过数据配置的形式完成,对于新增的协议,只需要新增配置数据即可实现对新增协议的头部信息的获取,从而提高了数据包头部信息的获取效率。
可选的,在本发明的一些实施例中,还可以构建第二数据库。其中,第二数据库也可称为承载协议辨识规则数据库。如图5所示,图5为本发明的一个实施例提供的第二数据库的示意图。
由图5可知,第二数据库中表项各元素统一用网络字节序存储,具体包括:承载辨识库索引号,承载者协议编码规则索引号,被承载者协议编码规则库索引号,协议类型辨识字段位图,被承载者协议辨识字段编码,被承载者协议辨识字段掩码,每一个被承载者协议辨识字段对应的比较方式分别为:等于(可以通过0表示),不等于(可以通过1表示),小于(可以通过2表示)。该第二数据库由配置生成。
其中,对于图5中未示出的其他被承载协议对应的比较方式还可以包括:大于(可以通过3表示),小于或等于(可以通过4表示),大于或等于(可以通过5表示),掩码判别(可以通过6表示)。
其中,协议类型辨识字段位图为一个字节数组,其中协议类型辨识字段所在的位会被置1,取字段的时候利用此位图与协议头部字节串通过“位与”计算得出。
可选的,在本发明的一个实施例中,若第一协议为“ethernetll”,则其承载的第二协议分别为:“802.1q”、“802.3”、“ipv4”、“arp”以及“ipv6”。而在“802.3”也承载了“802.3raw”和“802.3snap”。由此可知,在介绍“802.3”承载“802.3raw”和“802.3snap”的情况下,“802.3”为第一协议,“802.3raw”和“802.3snap”为第一协议“802.3”承载的第二协议。
接下来,若目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式与第二数据库中目标第二协议的类型字段的预设比较方式一致,则将目标数据包的当前链表更新为查询链表数组中目标第二协议作为第一协议时对应的链表。
在更新当前链表之后,就会根据更新后的链表的表头项记载的第一协议索引,重新确定表头项记载的第一协议索引对应的目标第一协议的头部信息,并将表头项记载的第一协议索引对应的目标第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息。
其中,协议类型字段信息包括:头部字符串信息和协议类型辨识字段位图。
例如,若第一协议为“ethernetII”,目标第二协议为“ipv4”,数据包以太网头部字符串为:0x00 0x02 0x03 0x03 0x04 0x05 0x00 0x11 0x22 0x33 0x04 0x05 0x08 0x00,目标第二协议“ipv4”对应的协议类型辨识字段位图为:0x00 0x00 0x00 0x00 0x00 0x000x00 0x00 0x00 0x00 0x00 0x00 0xff 0xff。则将数据包以太网头部字符串和协议类型辨识字段位图通过“位于”计算,得到位于结果为:0x00 0x00 0x00 0x00 0x00 0x00 0x000x00 0x00 0x00 0x00 0x00 0x08 0x00。
其次,将第二数据库中记载的被承载者协议辨识字段编码:0x00 0x00 0x00 0x000x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x08 0x00和得到的位于结果:0x00 0x000x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x08 0x00进行比较,得到的比较方式为:等于(可以通过0表示),与第二数据库中预设的第二数据库中记载的被承载者协议辨识字段编码与位于结果之间的比较方式一致,则将目标数据包的当前链表更新为查询链表数组中目标第二协议作为第一协议时对应的链表。
接下来,在更新当前链表之后,就会根据更新后的链表的表头项记载的第一协议索引,重新确定表头项记载的第一协议索引对应的目标第一协议的头部信息,并将表头项记载的第一协议索引对应的目标第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息。
可选的,如图6所示,图6为本发明另一个实施例提供的数据包头部信息的获取方法的流程图。
图6所示的数据包头部信息的获取方法包括:
S601,配置物理接口的默认链路层协议索引,并将物理接口的当前协议索引设置为物理接口的默认链路层协议索引。
S602,根据物理接口当前协议索引从协议从查询链表数组中确认链表头,并将链表头对应的当前链表设置为物理接口当前协议链表。
S603,物理接口接收数据报文,设置目标数据包当前协议索引为物理接口的当前协议索引,目标数据包当前协议链表为物理接口的当前协议链表,目标数据包当前协议报文头偏移量为0,创建目标数据包协议头部信息记录链表。
S604,从目标数据包当前链表取出表头项,作为数据包当前协议表项。
S605,创建目标数据包协议头部信息记录表项,链入目标数据包协议头部信息记录链表表尾,根据目标数据包当前协议头部信息赋值目标数据包协议头部信息,将以下相关内容记录单表项
1.协议编码库索引赋值为数据包当前协议索引;
2.协议头部距离数据包头的偏移量赋值为数据包当前协议报文头偏移量;
3.根据当前协议头部长度字段位图从数据包中取出当前协议报文头长度,赋值到协议头部长度;
4.更新当前协议报文头偏移量为当前协议报文头偏移量加上协议报文头长度;
5.完成协议头部记录信息的复制。
S606,取出当前链表中第一个承载协议辨识表项。
S607,判断承载协议辨识表项是否存在?若存在,则执行S608,若不存在,则执行S612。
S608,根据数据包当前协议报文头偏移量及承载协议辨识表项的信息从数据包中取出承载协议辨识字段与承载协议辨识表项的承载协议辨识字段编码进行比较。
S609,判断比较方式是否一致。若一致,则执行S610,若不一致,则执行S611。
S610,从承载协议辨识表项中取得承载协议索引。设置此索引为目标数据包的当前协议索引,根据当前协议索引从查询链表数组中找到链表头设置为目标数据包的当前链表。返回S605,重新开始记录承载的下一个协议的头部信息。
S611,从目标数据包的当前链表中取出下一个承载协议辨识表项,返回至S607。
S612,返回协议记录链表,目标数据包头部信息获取完成。
通过本发明实施例提供的数据包头部信息的获取方法,可以使得数据包头部信息的提取与协议处理代码相对独立,使得数据包头部信息的提取可以完全通过数据配置的形式完成,对于新增的协议,只需要新增配置数据即可实现对新增协议的头部信息的获取,从而提高了数据包头部信息的获取效率。
可选的,在本发明的一些实施例中,可以利用JSON(JavaScript ObjectNotation)文件实现协议类型的定义:
用如下JSON文件实现承载协议辨识规则数据库定义
程序会按照方法中的流程读入这两个配置文件并建立相应的查询链表数组。并对由以太网端口进入的数据包按照流程做协议头部解析并完成协议记录。
例如,如果一个STP报文进入系统后,会首先与索引号为0的承载协议辨识表项匹配,判断为“802.3”的协议包。然后直到与索引号为7的承载协议辨识表项匹配,判断为“802.3LLC”的协议包。并完成相关的协议头部记录。
下面通过图7详细介绍根据本发明实施例的数据包头部信息的获取装置,数据包头部信息的获取装置与数据包头部信息的获取方法相对应。
图7为本发明一实施例提供的数据包头部信息的获取装置的结构示意图。
如图7所示,数据包头部信息的获取装置包括:
接收模块710,用于接收目标数据包;
第一确定模块720,用于根据目标数据包的第一协议索引,在查询链表数组中确定目标数据包的当前链表,其中,查询链表数组中的链表包括第一协议的第一协议索引和第一协议承载的多个第二协议的第二协议索引;
第二确定模块730,用于通过目标数据包的当前链表的表头项记载的第一协议索引,确定表头项记载的第一协议索引对应的目标第一协议的头部信息;
记录模块740,用于将表头项记载的第一协议索引对应的目标第一协议的头部信息记录至目标数据的头部信息记录链表,得到目标数据包的头部信息。
可选的,在本发明的一些实施例中,第二确定模块730具体用于:
基于目标数据包的当前链表的表头项记载的第一协议索引,通过第一数据库中确定表头项记载的第一协议索引对应的第一协议的头部信息,其中,第一数据库包括第一协议索引及其对应的第一协议的头部信息。
可选的,在本发明的一些实施例中,数据包头部信息的获取装置,还包括:
第三确定模块,用于确定当前链表中的目标第二协议索引;
第一更新模块,用于若目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式与第二数据库中目标第二协议的类型字段的预设比较方式一致,则将目标数据包的当前链表更新为查询链表数组中目标第二协议作为第一协议时对应的链表;
其中,第二数据库包括:第一协议的第一协议索引、第二协议的第二协议索引、第二协议的类型字段信息以及第二协议的类型字段的比较方式。
可选的,在本发明的一些实施例中,若目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式与第二数据库中目标第二协议的类型字段的预设比较方式不一致,则将当前链表中目标第二协议索引的下一个第二协议索引作为目标第二协议索引。
可选的,在本发明的一些实施例中,数据包头部信息获取的装置,还包括:
第一判断模块,用于基于查询链表数组,判断在目标第二协议索引对应的目标第二协议作为第一协议的情况下,是否承载协议信息;
第一判断模块,用于在目标第二协议承载协议信息的情况下,判断目标数据包中目标第二协议索引对应的第二协议的协议类型字段信息与第二数据库中目标第二协议的类型字段信息之间的比较方式是否与第二数据库中目标第二协议的类型字段的预设比较方式一致。
可选的,在本发明的一些实施例中,数据包头部信息获取的装置,还包括:
输出模块,用于在目标第二协议未承载协议信息的情况下,输出目标数据包的头部信息记录链表。
本发明实施例提供的数据包头部信息的获取装置的各个模块具有实现图2所示实施例的数据包头部信息的获取方法/步骤的功能,且能达到与图2所示实施例相应的技术效果,为简洁描述,在此不再赘述。
图8为本发明实施例提供的计算设备的示例性硬件架构的结构图。
如图8所示,计算设备800包括输入设备801、输入接口802、中央处理器803、存储器804、输出接口805、以及输出设备806。其中,输入接口802、中央处理器803、存储器804、以及输出接口805通过总线810相互连接,输入设备801和输出设备806分别通过输入接口802和输出接口805与总线810连接,进而与计算设备800的其他组件连接。
具体地,输入设备801接收来自外部的输入信息,并通过输入接口802将输入信息传送到中央处理器803;中央处理器803基于存储器804中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器804中,然后通过输出接口805将输出信息传送到输出设备806;输出设备806将输出信息输出到计算设备800的外部供用户使用。
也就是说,图8所示的计算设备也可以被实现数据包头部信息的获取的设备,该数据包头部信息的获取的设备可以包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图2描述的数据包头部信息的获取的方法。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本发明实施例提供的数据包头部信息的获取方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
本发明可以以其他的具体形式实现,而不脱离其精神和本质特征。例如,特定实施例中所描述的算法可以被修改,而设备体系结构并不脱离本发明的基本精神。因此,当前的实施例在所有方面都被看作是示例性的而非限定性的,本发明的范围由所附权利要求而非上述描述定义,并且,落入权利要求的含义和等同物的范围内的全部改变从而都被包括在本发明的范围之中。
Claims (11)
1.一种数据包头部信息的获取方法,其特征在于,包括:
接收目标数据包;
根据所述目标数据包的第一协议索引,在查询链表数组中确定所述目标数据包的当前链表,其中,所述查询链表数组中的链表包括第一协议的第一协议索引和所述第一协议承载的多个第二协议的第二协议索引;
通过所述目标数据包的当前链表的表头项记载的第一协议索引,确定所述表头项记载的第一协议索引对应的目标第一协议的头部信息;
将所述表头项记载的第一协议索引对应的目标第一协议的头部信息记录至所述目标数据包的头部信息记录链表,得到所述目标数据包的头部信息;
所述通过所述目标数据包的当前链表的表头项记载的第一协议索引,确定所述表头项记载的第一协议索引对应的目标第一协议的头部信息,包括:
通过所述目标数据包的当前链表的表头项记载的第一协议索引,在第一数据库中确定所述表头项记载的第一协议索引对应的目标第一协议的头部信息,所述第一数据库包括第一协议索引及其对应的第一协议的头部信息,所述第一数据库为预先创建的协议编码规则数据库,所述协议编码规则数据库包括协议编码规则库索引、协议头部长度、协议头部长度字段匹配位图、协议头部长度字段单位中的至少一项;
所述通过所述目标数据包的当前链表的表头项记载的第一协议索引,在第一数据库中确定所述表头项记载的第一协议索引对应的目标第一协议的头部信息,包括:
基于所述第一数据库中的各个表项信息,在所述目标数据包中确定第一协议对应的头部信息;
所述基于所述第一数据库中的各个表项信息,在所述目标数据包中确定第一协议对应的头部信息,包括:
基于所述第一数据库中所述目标数据包的第一协议索引对应的协议头部长度字段匹配位图,将所述目标数据包中的当前协议报文头部的长度作为所述目标数据包的第一协议的头部长度,并更新当前协议报文头偏移量。
2.根据权利要求1所述的方法,其特征在于,所述得到所述目标数据包的头部信息之后,还包括:
确定所述当前链表中的目标第二协议索引;
若所述目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中所述目标第二协议的类型字段信息之间的比较方式与所述第二数据库中所述目标第二协议的类型字段的预设比较方式一致,则将所述目标数据包的当前链表更新为所述查询链表数组中所述目标第二协议作为第一协议时对应的链表;
其中,所述第二数据库包括:第一协议的第一协议索引、所述第二协议的第二协议索引、所述第二协议的类型字段信息以及所述第二协议的类型字段的比较方式。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与所述第二数据库中所述目标第二协议的类型字段信息之间的比较方式与所述第二数据库中所述目标第二协议的类型字段的预设比较方式不一致,则将所述当前链表中所述目标第二协议索引的下一个第二协议索引作为所述目标第二协议索引。
4.根据权利要求2所述的方法,其特征在于,所述确定所述当前链表中的目标第二协议索引之前,还包括:
基于所述查询链表数组,判断在所述目标第二协议索引对应的目标第二协议作为第一协议的情况下,所述目标第二协议是否承载协议信息;
在所述目标第二协议承载协议信息的情况下,判断所述目标数据包中目标第二协议索引对应的第二协议的协议类型字段信息与所述第二数据库中所述目标第二协议的类型字段信息之间的比较方式是否与所述第二数据库中所述目标第二协议的类型字段的预设比较方式一致。
5.根据权利要求4所述的方法,其特征在于,还包括:
在所述目标第二协议未承载协议信息的情况下,输出所述目标数据包的头部信息记录链表。
6.一种数据包头部信息的获取装置,其特征在于,包括:
接收模块,用于接收目标数据包;
第一确定模块,用于根据所述目标数据包的第一协议索引,在查询链表数组中确定所述目标数据包的当前链表,其中,所述查询链表数组中的链表包括第一协议的第一协议索引和所述第一协议承载的多个第二协议的第二协议索引;
第二确定模块,用于通过所述目标数据包的当前链表的表头项记载的第一协议索引,确定所述表头项记载的第一协议索引对应的第一协议的头部信息;
记录模块,用于将所述表头项记载的第一协议索引对应的第一协议的头部信息记录至所述目标数据包的头部信息记录链表,得到所述目标数据包的头部信息;
所述第二确定模块具体用于:
通过所述目标数据包的当前链表的表头项记载的第一协议索引,在第一数据库中确定所述表头项记载的第一协议索引对应的目标第一协议的头部信息,所述第一数据库包括第一协议索引及其对应的第一协议的头部信息,所述第一数据库为预先创建的协议编码规则数据库,所述协议编码规则数据库包括协议编码规则库索引、协议头部长度、协议头部长度字段匹配位图、协议头部长度字段单位中的至少一项;
基于所述第一数据库中的各个表项信息,在所述目标数据包中确定第一协议对应的头部信息;
基于所述第一数据库中所述目标数据包的第一协议索引对应的协议头部长度字段匹配位图,将所述目标数据包中的当前协议报文头部的长度作为所述目标数据包的第一协议的头部长度,并更新当前协议报文头偏移量。
7.根据权利要求6所述的装置,其特征在于,还包括:
第三确定模块,用于在得到所述目标数据包的头部信息之后,确定所述当前链表中的目标第二协议索引;
第一更新模块,用于若所述目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与第二数据库中所述目标第二协议的类型字段信息之间的比较方式与所述第二数据库中所述目标第二协议的类型字段的预设比较方式一致,则将所述目标数据包的当前链表更新为所述查询链表数组中所述目标第二协议作为第一协议时对应的链表;
其中,所述第二数据库包括:第一协议的第一协议索引、所述第二协议的第二协议索引、所述第二协议的类型字段信息以及所述第二协议的类型字段的比较方式。
8.根据权利要求7所述的装置,其特征在于,第三确定模块还用于:
若所述目标数据包中目标第二协议索引对应的目标第二协议的协议类型字段信息与所述第二数据库中所述目标第二协议的类型字段信息之间的比较方式与所述第二数据库中所述目标第二协议的类型字段的预设比较方式不一致,则将所述当前链表中所述目标第二协议索引的下一个第二协议索引作为所述目标第二协议索引。
9.根据权利要求8所述的装置,其特征在于,还包括:
第一判断模块,用于在确定所述当前链表中的目标第二协议索引之前,基于所述查询链表数组,判断在所述目标第二协议索引对应的目标第二协议作为第一协议的情况下,是否承载协议信息;
第二判断模块,用于在所述目标第二协议承载协议信息的情况下,判断所述目标数据包中目标第二协议索引对应的第二协议的协议类型字段信息与所述第二数据库中所述目标第二协议的类型字段信息之间的比较方式是否与所述第二数据库中所述目标第二协议的类型字段的预设比较方式一致。
10.一种数据包头部信息的获取设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-5任意一项所述数据包头部信息的获取方法。
11.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-5任意一项所述数据包头部信息的获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911409956.6A CN113132309B (zh) | 2019-12-31 | 2019-12-31 | 数据包头部信息的获取方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911409956.6A CN113132309B (zh) | 2019-12-31 | 2019-12-31 | 数据包头部信息的获取方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113132309A CN113132309A (zh) | 2021-07-16 |
CN113132309B true CN113132309B (zh) | 2023-04-14 |
Family
ID=76769988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911409956.6A Active CN113132309B (zh) | 2019-12-31 | 2019-12-31 | 数据包头部信息的获取方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113132309B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102480462A (zh) * | 2010-11-23 | 2012-05-30 | 中国电信股份有限公司 | 通用协议适配方法及装置 |
CN104702600A (zh) * | 2015-03-02 | 2015-06-10 | 国家计算机网络与信息安全管理中心 | 网络数据报文解析方法及装置 |
CN105515917A (zh) * | 2015-12-31 | 2016-04-20 | 中国人民解放军国防科学技术大学 | 基于索引分簇的网络协议特征匹配方法 |
CN109450922A (zh) * | 2018-11-29 | 2019-03-08 | 厦门科灿信息技术有限公司 | 一种通信数据解析方法、装置及相关设备 |
CN109743340A (zh) * | 2019-04-04 | 2019-05-10 | 华为技术有限公司 | 报文处理的方法和网络装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10701190B2 (en) * | 2018-01-10 | 2020-06-30 | Mellanox Technologies Tlv Ltd. | Efficient parsing of optional header fields |
-
2019
- 2019-12-31 CN CN201911409956.6A patent/CN113132309B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102480462A (zh) * | 2010-11-23 | 2012-05-30 | 中国电信股份有限公司 | 通用协议适配方法及装置 |
CN104702600A (zh) * | 2015-03-02 | 2015-06-10 | 国家计算机网络与信息安全管理中心 | 网络数据报文解析方法及装置 |
CN105515917A (zh) * | 2015-12-31 | 2016-04-20 | 中国人民解放军国防科学技术大学 | 基于索引分簇的网络协议特征匹配方法 |
CN109450922A (zh) * | 2018-11-29 | 2019-03-08 | 厦门科灿信息技术有限公司 | 一种通信数据解析方法、装置及相关设备 |
CN109743340A (zh) * | 2019-04-04 | 2019-05-10 | 华为技术有限公司 | 报文处理的方法和网络装置 |
Non-Patent Citations (2)
Title |
---|
Fractal: a mobile code based framework for dynamic application protocol adaptation in pervasive computing;H.Lufei;《19th IEEE International Parallel and Distributed Processing Symposium》;20050418;全文 * |
基于应用层协议标志的一种数据还原重组算法;李磊等;《科学技术与工程》;20080701(第13期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113132309A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113691486B (zh) | 报文修改的方法、装置、设备及存储介质 | |
CN101246486B (zh) | 用于改进的表达式处理的方法和装置 | |
US11797759B2 (en) | Size-optimized data interchange method and system | |
CN109992766B (zh) | 提取目标词的方法和装置 | |
CN114186100B (zh) | 数据存储及查询方法、装置及数据库系统 | |
KR20150016207A (ko) | 서비스 프로세스 제어 방법 및 네트워크 장치 | |
CN108491715B (zh) | 终端指纹库的生成方法、装置和服务器 | |
CN110768899B (zh) | 最短路径的确定方法、装置、存储介质及电子装置 | |
CN111475562B (zh) | 应用于业务处理系统的数据格式优化方法及业务服务器 | |
CN114785685A (zh) | 软件差分升级方法、装置、电子设备及可读存储介质 | |
CN115484322A (zh) | 数据包解封装卸载方法、装置、电子设备及存储介质 | |
CN113132309B (zh) | 数据包头部信息的获取方法、装置、设备和介质 | |
US8886913B2 (en) | Apparatus and method for identifier management | |
CN113688289B (zh) | 数据包关键字段匹配方法、装置、设备及存储介质 | |
CN115967575A (zh) | Http请求夹带检测方法、装置、电子设备及存储介质 | |
CN112633094B (zh) | 同构图识别方法、装置、设备和介质 | |
CN112468480B (zh) | 数据关联的方法、装置、设备及计算机存储介质 | |
CN112003736B (zh) | 一种多节点配置信息确定方法、装置及存储介质 | |
US20040139082A1 (en) | Method for minimizing a set of UDDI change records | |
CN113691639B (zh) | 端口标识解析的方法、装置、设备及存储介质 | |
CN114900519B (zh) | 能力调用方法、能力调用装置、存储介质及电子设备 | |
CN112866140B (zh) | 业务匹配方法、网关管理平台、网关设备和服务器 | |
CN110929500B (zh) | 文件比较方法及相关装置 | |
US20210240665A1 (en) | Lossless conversion of expressive metadata | |
CN107704606B (zh) | 基于自定义标签语言的即时聊天协议要素通用抽取方法 |
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 |