CN115150483B - 一种网络数据包解析方法、系统及可读存储介质 - Google Patents

一种网络数据包解析方法、系统及可读存储介质 Download PDF

Info

Publication number
CN115150483B
CN115150483B CN202210538942.XA CN202210538942A CN115150483B CN 115150483 B CN115150483 B CN 115150483B CN 202210538942 A CN202210538942 A CN 202210538942A CN 115150483 B CN115150483 B CN 115150483B
Authority
CN
China
Prior art keywords
protocol
data packet
field
network data
programming language
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
CN202210538942.XA
Other languages
English (en)
Other versions
CN115150483A (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.)
Zhejiang Mulian Internet Of Things Technology Co ltd
Original Assignee
Zhejiang Mulian Internet Of Things Technology 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 Zhejiang Mulian Internet Of Things Technology Co ltd filed Critical Zhejiang Mulian Internet Of Things Technology Co ltd
Priority to CN202210538942.XA priority Critical patent/CN115150483B/zh
Publication of CN115150483A publication Critical patent/CN115150483A/zh
Application granted granted Critical
Publication of CN115150483B publication Critical patent/CN115150483B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请实施例提供的一种网络数据包解析方法、系统及可读存储介质,该方法包括构建声明式编程语言,并基于声明式编程语言定义网络通讯协议;通过预设的编译器将已定义的网络通讯协议,解释为Rust协议解析器源代码;在确定获取到网络数据包时,触发协议解析引擎基于调用的Rust协议解析器源代码,将网络数据包解析为引擎内部数据结构。该方法的实施能够降低开发和维护成本。

Description

一种网络数据包解析方法、系统及可读存储介质
技术领域
本申请涉及数据解析技术领域,具体而言,涉及一种网络数据包解析方法、系统及可读存储介质。
背景技术
网络通讯协议,在电信领域中指的是,在任何物理介质中允许两个或多个在传输系统中的终端之间传播信息的系统标准,也是指计算机通信或网络设备的共同语言。解析器是一种软件组件,它获取输入数据(通常是文本或字节流),检查输入正确性,并将其解释成输出所需的数据结构(通常是解析树、抽象语法树AST或其它层次结构体),即转换输入数据流为某种特定数据结构。目前,在传统网络通讯协议解析器的研发流程中,开发者需要根据各类协议的格式,单独撰写其解析代码。然而,随着协议复杂程度的提升,所需撰写的代码量也随之呈指数型增长,这将造成定位解析错误、清晰表示复杂的字段间关系、后期修改部分逻辑等工作难以完成,存在开发和维护成本过高的问题。
发明内容
本申请实施例的目的在基于提供一种网络数据包解析方法、系统及可读存储介质,可以降低开发和维护成本。
本申请实施例还提供了一种网络数据包解析方法,包括以下步骤:
构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议;
通过预设的编译器将已定义的网络通讯协议,解释为Rust协议解析器源代码;
在确定获取到网络数据包时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构。
第二方面,本申请实施例还提供了一种网络数据包解析系统,所述系统包括协议定义模块、编译模块以及解析模块,其中:
所述协议定义模块,用于构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议;
所述编译模块,用于通过预设的编译器将已定义的网络通讯协议,解释为Rust协议解析器源代码;
所述解析模块,用于在获取到网络数据包字节流时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包字节流解析为引擎内部数据结构。
第三方面,本申请实施例还提供了一种可读存储介质,所述可读存储介质中包括网络数据包解析方法程序,所述网络数据包解析方法程序被处理器执行时,实现如上述任一项所述的一种网络数据包解析方法的步骤。
由上可知,本申请实施例提供的一种网络数据包解析方法、系统及可读存储介质,通过构建的声明式编程语言定义网络通讯协议,在更贴近于编程语言的设计思路的情况下,能够有效描述协议字段间复杂多样的关联关系,提高设备处理效率。由预设的编译器将定义的网络通讯协议解析为Rust协议解析器源代码,由于编译器自主可控,所以不需要依赖任何第三方工具,即可完成各种编译需求,提高了编译效率。将编译目标代码定为Rust语言,可以保证协议解析器程序类型安全、内存安全以及运行效率高,能够有效的降低开发和维护成本。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种网络数据包解析方法的流程图;
图2为本申请实施例提供的编写网络通讯协议定义文件的流程图;
图3为本申请实施例提供的一种网络数据包解析方法的整体实施流程图;
图4为本申请实施例提供的一种网络数据包解析系统的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1是本申请一些实施例中的一种网络数据包解析方法的流程图。以该方法应用于计算机设备(该计算机设备具体可以是终端或服务器,终端具体可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群)为例进行说明,包括以下步骤:
步骤S100,构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议。
其中,网络通讯协议在电信领域中指的是:在任何物理介质中允许两个或多个在传输系统中的终端之间传播信息的系统标准,也是指计算机通信或网络设备的共同语言,需要说明的是,通信协议在硬件、软件或两者之间皆可实现。编程语言指的是用来定义计算机程序的形式语言,它是一种被标准化的交流技巧,用来向计算机发出指令,一种能够让程序员准确地定义计算机所需要使用数据的计算机语言,并精确地定义在不同情况下所应当采取的行动。当前实施例中,采用的声明式编程语言属于编程语言的一个分支,它采用声明式编程范式,即仅描述目标的性质,而非定义运行流程。
当前实施例中,请参考图2,计算机设备首先将基于上述提到的声明式编程语言,编写网络通讯协议定义文件。其中,计算机设备基于网络通讯协议定义文件来替代现有的协议模板文件,以此完成对网络通讯协议的描述,由于其更贴近于编程语言的设计思路,将有足够能力描述协议字段间复杂多样的关联关系。
在其中一个实施例中,该声明式编程语言、以及后续所需用到的编译器,均在解释型语言Typescript的基础上创建而成,即通过Typescript实现该声明式编程语言及其编译器。当前实施例中,由于Typescript语言的特性,实现对该声明式编程语言的轻量化处理,使得源码简洁易读。
步骤S101,通过预设的编译器将已定义的网络通讯协议,解释为Rust协议解析器源代码。
具体的,请参考图2,经由步骤S100得到的协议定义文件,将进一步通过预设的编译器对其进行处理,得到对应的协议解析器源代码,其中,该协议解析器源代码由Rust语言编写而成,即为上述提及的Rust协议解析器源代码。当前实施例中,将该声明式编程语言的“编译目标代码”设定为Rust语言,可以保证协议解析器类型安全、内存安全以及运行效率高,提高解析效率。
需要说明的是,编译器是一种计算机程序,它会将某种编程语言写成的源代码(即原始语言)转换成另一种编程语言(即目标语言)。可以理解的是,当前实施例中,计算机设备通过编译器将由声明式编程语言定义的源代码,转换成Rust语言的编译目标代码。其中,Rust语言是由Mozilla主导开发的通用、编译型编程语言,其设计准则为“安全、并发、实用”,且支持函数式、并发式、过程式以及面向对象的编程风格。
在其中一个实施例中,编译器的主要工作流程包括获取源代码,通过预处理器对源代码进行预处理,之后再通过编译器将预处理后的源代码转换为目标代码。
步骤S102,在确定获取到网络数据包时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构。
其中,协议解析引擎可以简单理解为解析器,需要说明的是,解析器是一种软件组件,它将获取的输入数据(通常是文本或字节流)解释成输出所需的数据结构(通常是解析树、抽象语法树AST或其它层次结构体),即转换输入数据流为某种特定的数据结构。在一个实施例中,解析器可以是手动编程,或者由解析器生成器自动或半自动化生成。
具体的,计算机设备在获取到网络数据包字节流时,将触发预设的解析器或其它协议解析程序,调用基于步骤S101所获得的Rust协议解析器源代码,并通过该Rust协议解析器源代码将网络数据包字节流,解析成为解析程序内部的数据结构。
由上可知,本申请实施例提供的一种网络数据包解析方法,通过构建的声明式编程语言定义网络通讯协议,在更贴近于编程语言的设计思路的情况下,能够有效描述协议字段间复杂多样的关联关系,提高设备处理效率。由预设的编译器将定义的网络通讯协议解析为Rust协议解析器源代码,由于编译器自主可控,所以不需要依赖任何第三方工具,即可完成各种编译需求,提高了编译效率。将编译目标代码定为Rust语言,可以保证协议解析器程序类型安全、内存安全以及运行效率高,能够有效的降低开发和维护成本。
在其中一个实施例中,步骤S100中,所述构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议,包括:
步骤S1000,通过Typescript解释型语言构建基于声明式编程范式的声明式编程语言。
其中,TypeScript是一种开源的编程语言,该语言项目由微软进行维护和管理。需要说明的是,TypeScript语言不仅包含JavaScript语言的语法,而且器还提供了静态类型检查、以及使用看起来像基于类的面向对象编程语法操作。
具体的,请参考图3,所述声明式编程语言的领域特定语言基础语法,基于巴科斯范式描述形成,其中,描述范围包括:结构体类型、枚举类型及其各类分支类型、选择类型、数字类型、序列类型以及协议相关类型。
在其中一个实施例中,以结构体类型、数字类型和序列类型为例,基于巴科斯范式描述形成的领域特定语言基础语法的具体形式,包括:
(1)结构体类型:
STRUCT::=
"new""Struct""("<name>","
<fields>","
[extra_input]")";
(2)数字类型:
NUMERIC::=
"new""NumericType""("("u8"|"u16"|"u32"|"u64"|"f32"|"f64")","
<numeric_func>","
<bit_length>")";
(3)序列类型:
SLICE::=
"new""SliceType""("<name>","
("u4_4"|"u4_6"|"u8_2"|"u8_3"|"u8_4"|"u8_5")")"。
步骤S1001,基于构建的声明式编程语言进行协议字段类型的创建,其中,所述协议字段类型包括枚举字段、结构体字段、地址字段、字节字段、数字字段、可选字段以及向量字段中的至少一种类型。
具体的,请参考图3,计算机设备通过已构建的声明式编程语言,创建协议字段(field)类型。在一个实施例中,计算机设备以巴科斯范式描述基于该声明式编程语言实现的协议字段类型,以枚举字段、结构体字段和地址字段为例,创建的协议字段类型的具体形式,包括:
(1)枚举字段:
ENUM_FIELD::="new""EnumField""("<enum>","[field_name]")";
(2)结构体字段:
STRUCT_FIELD::="new""StructField""("<struct>","[field_name]")";
STRUCT_MEM_FIELD::="new""StructMemberField""("<struct>","
<match_field_name>","[field_name]")";
(3)地址字段:
MAC_ADDRESS_FIELD::="new""MacAddress""("<name>")";
IPV4_ADDRESS_FIELD::="new""Ipv4Address""("<name>")";
IPV6_ADDRESS_FIELD::="new""Ipv6Address""("<name>")"。
步骤S1002,基于构建的声明式编程语言以及创建的协议字段类型,定义所需的网络通讯协议。
上述实施例中,在解释型语言TypeScript的基础上,创建声明式编程语言,基于TypeScript语言的特性,能实现对该声明式编程语言的轻量化处理,使得源码简洁易读。另外,基于该声明式编程语言来替代传统的协议模板文件描述网络通讯协议,使得更贴近于编程语言的设计思路,能够更加有效的描述协议字段间复杂多样的关联关系,提高处理效率。
在其中一个实施例中,步骤S102中,所述在确定获取到网络数据包时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构,包括:
步骤S1020,在确定获取到经由目标客户端发送的网络数据包时,对所述网络数据包进行解析,得到所述网络数据包中协议有效长度字段。
步骤S1021,将所述网络数据包的实际长度与解析得到的有效长度进行比较,得到相应的比较结果。
步骤S1022,验证所述协议有效长度字段的有效性,在确定所述协议有效长度字段有效时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构。
步骤S1023,在确定所述协议有效长度字段无效时,设置用于表征重新发送数据包的应答报文,并将设置好的应答报文反馈给目标客户端,以让目标客户端重新发送网络数据包。
在其中一个实施例中,该方法还包括:基于获取到的网络数据包,确定目标客户端的身份验证信息,所述身份验证信息包括用于进行身份标识的标识信息,所述标识信息包括设备编号、设备名称、以及通讯连接端口中的至少一种;根据预先设定的身份认证规则,验证所述身份验证信息是否合法,得到相应的验证结果,其中,所述身份认证规则包括基于预先存储的合法验证信息所设定的信息匹配规则;根据所述验证结果,在确定客户端不具备合法身份时,则拒绝目标客户端的接入,并对当前的非法请求接入行为进行记录。
请参照图4所示,本申请实施例还提供了一种网络数据包解析系统400,该系统400包括协议定义模块401、编译模块402以及解析模块403,其中:
所述协议定义模块401,用于构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议。
所述编译模块402,用于通过预设的编译器将已定义的网络通讯协议,解释为Rust协议解析器源代码。
所述解析模块403,用于在获取到网络数据包字节流时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包字节流解析为引擎内部数据结构。
在其中一个实施例中,协议定义模块401还用于通过Typescript解释型语言构建基于声明式编程范式的声明式编程语言;基于构建的声明式编程语言进行协议字段类型的创建,其中,所述协议字段类型包括枚举字段、结构体字段、地址字段、字节字段、数字字段、可选字段以及向量字段中的至少一种类型;基于构建的声明式编程语言以及创建的协议字段类型,定义所需的网络通讯协议。
在其中一个实施例中,解析模块403还用于在确定获取到经由目标客户端发送的网络数据包时,对所述网络数据包进行解析,得到所述网络数据包中协议有效长度字段;验证所述协议有效长度字段的有效性,在确定所述协议有效长度字段有效时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构;在确定所述协议有效长度字段无效时,设置用于表征重新发送数据包的应答报文,并将设置好的应答报文反馈给目标客户端,以让目标客户端重新发送网络数据包。
在其中一个实施例中,该系统400还包括身份验证模块,其中:身份验证模块,用于基于获取到的网络数据包,确定目标客户端的身份验证信息,所述身份验证信息包括用于进行身份标识的标识信息,所述标识信息包括设备编号、设备名称、以及通讯连接端口中的至少一种;根据预先设定的身份认证规则,验证所述身份验证信息是否合法,得到相应的验证结果,其中,所述身份认证规则包括基于预先存储的合法验证信息所设定的信息匹配规则;根据所述验证结果,在确定客户端不具备合法身份时,则拒绝目标客户端的接入,并对当前的非法请求接入行为进行记录。
上述的网络数据包解析系统,通过构建的声明式编程语言定义网络通讯协议,在更贴近于编程语言的设计思路的情况下,能够有效描述协议字段间复杂多样的关联关系,提高设备处理效率。由预设的编译器将定义的网络通讯协议解析为Rust协议解析器源代码,由于编译器自主可控,所以不需要依赖任何第三方工具,即可完成各种编译需求,提高了编译效率。将编译目标代码定为Rust语言,可以保证协议解析器程序类型安全、内存安全以及运行效率高,能够有效的降低开发和维护成本。
本申请实施例提供的一种存储介质,所述计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法。其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random AccessMemory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
上述的存储介质,通过构建的声明式编程语言定义网络通讯协议,在更贴近于编程语言的设计思路的情况下,能够有效描述协议字段间复杂多样的关联关系,提高设备处理效率。由预设的编译器将定义的网络通讯协议解析为Rust协议解析器源代码,由于编译器自主可控,所以不需要依赖任何第三方工具,即可完成各种编译需求,提高了编译效率。将编译目标代码定为Rust语言,可以保证协议解析器程序类型安全、内存安全以及运行效率高,能够有效的降低开发和维护成本。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种网络数据包解析方法,其特征在于,包括以下步骤:
构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议;
通过预设的编译器将已定义的网络通讯协议,解释为Rust协议解析器源代码;
在确定获取到网络数据包时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构。
2.根据权利要求1所述的方法,其特征在于,所述构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议,包括:
通过Typescript解释型语言构建基于声明式编程范式的声明式编程语言;
基于构建的声明式编程语言进行协议字段类型的创建,其中,所述协议字段类型包括枚举字段、结构体字段、地址字段、字节字段、数字字段、可选字段以及向量字段中的至少一种类型;
基于构建的声明式编程语言以及创建的协议字段类型,定义所需的网络通讯协议。
3.根据权利要求1所述的方法,其特征在于,所述声明式编程语言的领域特定语言基础语法,基于巴科斯范式描述形成,其中,描述范围包括:结构体类型、枚举类型及其各类分支类型、选择类型、数字类型、序列类型以及协议相关类型。
4.根据权利要求1所述的方法,其特征在于,所述在确定获取到网络数据包时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构,包括:
在确定获取到经由目标客户端发送的网络数据包时,对所述网络数据包进行解析,得到所述网络数据包中协议有效长度字段;
验证所述协议有效长度字段的有效性,在确定所述协议有效长度字段有效时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构;
在确定所述协议有效长度字段无效时,设置用于表征重新发送数据包的应答报文,并将设置好的应答报文反馈给目标客户端,以让目标客户端重新发送网络数据包。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
基于获取到的网络数据包,确定目标客户端的身份验证信息,所述身份验证信息包括用于进行身份标识的标识信息,所述标识信息包括设备编号、设备名称、以及通讯连接端口中的至少一种;
根据预先设定的身份认证规则,验证所述身份验证信息是否合法,得到相应的验证结果,其中,所述身份认证规则包括基于预先存储的合法验证信息所设定的信息匹配规则;
根据所述验证结果,在确定客户端不具备合法身份时,则拒绝目标客户端的接入,并对当前的非法请求接入行为进行记录。
6.一种网络数据包解析系统,其特征在于,所述系统包括协议定义模块、编译模块以及解析模块,其中:
所述协议定义模块,用于构建声明式编程语言,并基于所述声明式编程语言定义网络通讯协议;
所述编译模块,用于通过预设的编译器将已定义的网络通讯协议,解释为Rust协议解析器源代码;
所述解析模块,用于在获取到网络数据包字节流时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包字节流解析为引擎内部数据结构。
7.根据权利要求6所述的系统,其特征在于,所述协议定义模块还用于通过Typescript解释型语言构建基于声明式编程范式的声明式编程语言;基于构建的声明式编程语言进行协议字段类型的创建,其中,所述协议字段类型包括枚举字段、结构体字段、地址字段、字节字段、数字字段、可选字段以及向量字段中的至少一种类型;基于构建的声明式编程语言以及创建的协议字段类型,定义所需的网络通讯协议。
8.根据权利要求6所述的系统,其特征在于,所述解析模块还用于在确定获取到经由目标客户端发送的网络数据包时,对所述网络数据包进行解析,得到所述网络数据包中协议有效长度字段;验证所述协议有效长度字段的有效性,在确定所述协议有效长度字段有效时,触发协议解析引擎基于调用的Rust协议解析器源代码,将所述网络数据包解析为引擎内部数据结构;在确定所述协议有效长度字段无效时,设置用于表征重新发送数据包的应答报文,并将设置好的应答报文反馈给目标客户端,以让目标客户端重新发送网络数据包。
9.一种可读存储介质,其特征在于,所述可读存储介质中包括网络数据包解析方法程序,所述网络数据包解析方法程序被处理器执行时,实现如权利要求1至5中任一项所述的方法的步骤。
CN202210538942.XA 2022-05-17 2022-05-17 一种网络数据包解析方法、系统及可读存储介质 Active CN115150483B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210538942.XA CN115150483B (zh) 2022-05-17 2022-05-17 一种网络数据包解析方法、系统及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210538942.XA CN115150483B (zh) 2022-05-17 2022-05-17 一种网络数据包解析方法、系统及可读存储介质

Publications (2)

Publication Number Publication Date
CN115150483A CN115150483A (zh) 2022-10-04
CN115150483B true CN115150483B (zh) 2023-08-29

Family

ID=83406629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210538942.XA Active CN115150483B (zh) 2022-05-17 2022-05-17 一种网络数据包解析方法、系统及可读存储介质

Country Status (1)

Country Link
CN (1) CN115150483B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116431117B (zh) * 2023-04-18 2023-12-29 南京朗立微集成电路有限公司 使用结构化数据与嵌入式主机通信的方法和系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065153A (ja) * 2006-09-08 2008-03-21 Fujifilm Corp 楽曲構造解析方法、プログラムおよび装置
US7401326B1 (en) * 2001-10-24 2008-07-15 Finisar Corporation Compiling protocol analysis code using protocol database
CN103001971A (zh) * 2012-12-25 2013-03-27 成都科来软件有限公司 一种网络数据包解析方法
CN107908394A (zh) * 2017-11-21 2018-04-13 中国电子科技集团公司第五十四研究所 一种数据交换格式化源代码生成方法及工具
CN109144673A (zh) * 2018-09-21 2019-01-04 上海飞旗网络技术有限公司 一种nfv快速开发方法
CN110377289A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种数据解析方法、装置、介质和电子设备
CN112713969A (zh) * 2020-12-30 2021-04-27 北京字跳网络技术有限公司 数据传输方法和使用该方法的装置、系统
CN113448851A (zh) * 2021-06-29 2021-09-28 中国工商银行股份有限公司 一种rust编程语言编译器的自动化测试方法及系统
CN114153451A (zh) * 2021-10-15 2022-03-08 上海那一科技有限公司 一种利用数据流分析算法分析c代码中的内存安全的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543271B2 (en) * 2003-09-08 2009-06-02 Microsoft Corporation Compiling source code using generic classes
US10303467B2 (en) * 2015-04-13 2019-05-28 Oracle International Corporation Target typing-dependent combinatorial code analysis
US20180060584A1 (en) * 2016-09-01 2018-03-01 Sunny Ahuwanya Securing Code Execution in a Network Environment

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401326B1 (en) * 2001-10-24 2008-07-15 Finisar Corporation Compiling protocol analysis code using protocol database
JP2008065153A (ja) * 2006-09-08 2008-03-21 Fujifilm Corp 楽曲構造解析方法、プログラムおよび装置
CN103001971A (zh) * 2012-12-25 2013-03-27 成都科来软件有限公司 一种网络数据包解析方法
CN107908394A (zh) * 2017-11-21 2018-04-13 中国电子科技集团公司第五十四研究所 一种数据交换格式化源代码生成方法及工具
CN109144673A (zh) * 2018-09-21 2019-01-04 上海飞旗网络技术有限公司 一种nfv快速开发方法
CN110377289A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种数据解析方法、装置、介质和电子设备
CN112713969A (zh) * 2020-12-30 2021-04-27 北京字跳网络技术有限公司 数据传输方法和使用该方法的装置、系统
CN113448851A (zh) * 2021-06-29 2021-09-28 中国工商银行股份有限公司 一种rust编程语言编译器的自动化测试方法及系统
CN114153451A (zh) * 2021-10-15 2022-03-08 上海那一科技有限公司 一种利用数据流分析算法分析c代码中的内存安全的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于区块链的微电网调度模型研究;吉睿迪;万方知识服务平台;全文 *

Also Published As

Publication number Publication date
CN115150483A (zh) 2022-10-04

Similar Documents

Publication Publication Date Title
Ramananandro et al. {EverParse}: Verified secure {Zero-Copy} parsers for authenticated message formats
CN108885632B (zh) 用于实时数据流编程的高效状态机
US10025688B2 (en) System and method for detecting data extrusion in software applications
US8402547B2 (en) Apparatus and method for detecting, prioritizing and fixing security defects and compliance violations in SAP® ABAP™ code
DK2778914T3 (en) PROCEDURE AND SYSTEM FOR GENERATING A PARSER AND PARISING COMPLEX DATA
CN112015396B (zh) 基于dsl的智能合约代码生成方法、装置、设备及存储介质
US20180121320A1 (en) Analysis to check web api code usage and specification
US9697058B2 (en) Method, computer program and apparatus for controlling access to a computer resource and obtaining a baseline therefor
Delaware et al. Narcissus: correct-by-construction derivation of decoders and encoders from binary formats
Huang et al. Protocol reverse-engineering methods and tools: A survey
CN112015752A (zh) 一种数据动态查询的方法、装置、电子设备和存储介质
Li et al. Stan: Towards describing bytecodes of smart contract
CN115150483B (zh) 一种网络数据包解析方法、系统及可读存储介质
CN115913655B (zh) 一种基于流量分析和语义分析的Shell命令注入检测方法
US9405652B2 (en) Regular expression support in instrumentation languages using kernel-mode executable code
CN110278272B (zh) 模拟Socket请求的通用方法
WO2007076676A1 (fr) Procede pour la production automatique de code de codage/decodage des unites de donnees de protocole (pdu) base sur une definition de notation de syntaxe abstraite numero 1 (asn.1)
CN118283148B (zh) 一种跨平台应用层协议解析器自动生成方法及装置
EP3841545A2 (en) Object oriented smart contracts for utxo-based blockchains
CN113885876A (zh) 一种参数校验方法、装置、存储介质及计算机系统
CN113760291A (zh) 日志输出的方法和装置
US7089559B2 (en) Method, apparatus, and program for chaining server applications
US7155606B1 (en) Method and system for accepting preverified information
Li et al. COBRA: Interaction-Aware Bytecode-Level Vulnerability Detector for Smart Contracts
CN111580799A (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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Li Yifan

Inventor after: Chen Chao

Inventor after: Zhu Jiaqi

Inventor after: Wen Yubo

Inventor after: He Weidong

Inventor after: Zhang Ruoqi

Inventor after: Lei Dongqi

Inventor after: Ye Peiwei

Inventor before: Li Yifan

Inventor before: Chen Chao

Inventor before: Zhu Jiaqi

Inventor before: Wen Yubo

Inventor before: He Weidong

Inventor before: Zhang Ruoqi

Inventor before: Lei Dongqi

Inventor before: Ye Peiwei