CN113691458A - 一种网络包的处理方法、装置、电子设备及存储介质 - Google Patents

一种网络包的处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113691458A
CN113691458A CN202110954516.XA CN202110954516A CN113691458A CN 113691458 A CN113691458 A CN 113691458A CN 202110954516 A CN202110954516 A CN 202110954516A CN 113691458 A CN113691458 A CN 113691458A
Authority
CN
China
Prior art keywords
network
network packet
filtering
rule
target
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.)
Pending
Application number
CN202110954516.XA
Other languages
English (en)
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.)
Beijing Zhizhangyi Technology Co ltd
Original Assignee
Beijing Zhizhangyi 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 Beijing Zhizhangyi Technology Co ltd filed Critical Beijing Zhizhangyi Technology Co ltd
Priority to CN202110954516.XA priority Critical patent/CN113691458A/zh
Publication of CN113691458A publication Critical patent/CN113691458A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种网络包的处理方法、装置、电子设备及存储介质。其中,该方法由内核态执行,包括:接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;根据预设的网络包处理策略,对所述目标网络包进行处理。通过用户态对内核态进行过滤规则的配置,减少对内核态的操作,上层应用无需编写内核态驱动,提高了开发效率。

Description

一种网络包的处理方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种网络包的处理方法、装置、电子设备及存储介质。
背景技术
Windows系统中网络包的处理通过内核态驱动实现,支持网络过滤的驱动类型主要有WFP(Windows Filtering Platform,Windows过滤平台)。WFP工作在内核的TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)协议栈的四层协议栈中,可以对TCP/IP协议栈进行全方位拦截和过滤。
现有技术中,WFP驱动工作在操作系统内核态,内核的驱动与应用交互困难,工作人员需要基于内核态编写网络包的过滤规则,开发调试难度大,对开发者技能要求较高。若代码编写不合规很容易引起系统崩溃,导致蓝屏,开发风险较高,严重影响网络包的处理效率。
发明内容
本发明实施例提供一种网络包的处理方法、装置、电子设备及存储介质,以提高网络包的处理效率。
第一方面,本发明实施例提供了一种网络包的处理方法,由内核态执行,该方法包括:
接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;
将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;
根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;
根据预设的网络包处理策略,对所述目标网络包进行处理。
第二方面,本发明实施例还提供了一种网络包的处理方法,由用户态执行,该方法包括:
通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,所述网络过滤规则由领域特定语言编写;
将所述网络过滤规则传递至内核态,供所述内核态根据所述网络过滤规则进行网络包的处理。
第三方面,本发明实施例还提供了一种网络包的处理装置,配置于内核态,该装置包括:
规则拆分模块,用于接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;
过滤器构建模块,用于将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;
目标包确定模块,用于根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;
目标包处理模块,用于根据预设的网络包处理策略,对所述目标网络包进行处理。
第四方面,本发明实施例还提供了一种网络包的处理装置,配置于用户态,该装置包括:
规则接收模块,用于通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,所述网络过滤规则由领域特定语言编写;
规则传递模块,用于将所述网络过滤规则传递至内核态,供所述内核态根据所述网络过滤规则进行网络包的处理。
第五方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面和第二方面实施例所述的网络包的处理方法。
第六方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明第一方面和第二方面实施例所述的网络包的处理方法。
本发明实施例通过接收用户态发送的网络过滤规则,对内核态进行网络过滤规则的配置,减少对内核驱动的编写过程,降低开发调试难度,对开发者的技能要求较低。根据网络过滤规则确定过滤子规则,将过滤子规则配置在预设的空白过滤器中,得到目标过滤器。当接收到待匹配网络包时,可以采用目标过滤器进行匹配,实现对各条过滤子规则的全面匹配。将匹配成功的网络包确定为目标网络包并对目标网络包进行处理。解决了现有技术中,需要工作人员对内核驱动进行编写的问题,实现驱动与应用的交互,避免代码编写不合规引起系统崩溃,有效提高网络包的处理效率。
附图说明
图1是本发明实施例一中的一种网络包的处理方法的流程示意图;
图2是本发明实施例二中的一种网络包的处理方法的流程示意图;
图3是本发明实施例三中的一种网络包的处理装置的结构框图;
图4是本发明实施例四中的一种网络包的处理装置的结构框图;
图5是本发明实施例五中的一种网络包的处理设备的结构示意图;
图6是本发明实施例六中的一种网络包的处理设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一所提供的一种网络包的处理方法的流程示意图,本实施例可适用于对网络包进行过滤处理的情况,该方法可以由配置于内核态的网络包的处理装置来执行。如图1所示,该方法具体包括如下步骤:
步骤110、接收用户态发送的网络过滤规则,将网络过滤规则拆分,得到网络过滤规则中的至少一条过滤子规则。
其中,用户通过上层应用对用户态进行网络过滤规则的编写,编写语言可以是DSL(Domain Specific Language,领域特定语言),DSL是为了解决某一类任务而专门设计的计算机语言。DSL支持的操作符可以包括:“==”、“!=”、“<”、“>”、“>”和“>=”等,“==”对应的含义为“等于”,“!=”对应的含义为“不等于”,“<”对应的含义为“小于”,“>”对应的含义为“大于”,“>”对应的含义为“小于等于”,“>=”对应的含义为“大于等于”。
用户态是指用户态交互层,用户态中的文件格式为“.dll”,用户态可以通过预设的策略设置接口接收用户在上层应用定义的网络过滤规则。网络过滤规则可以规定自定义的网络拦截规则,用于将操作系统中符合过滤规则的网络包转移至用户态,实现对网络包的捕获、嗅探、丢弃、过滤、修改和重新注入等。网络过滤规则中可以规定要被过滤的数据包的网络流向、地址、端口、进程ID和协议类型等。网络流向可以是指栈的操作,包括出栈和入栈,进程ID可以是指网络包的应用程序ID。具体来说,DSL中支持的过滤条件可以包括:网络流向为出栈、网络流向为入栈、是否为回环包、是否为IP分段包、进程ID(标识)、协议类型、本地地址、本地端口、远端地址和远端端口等,协议类型可以包括IP(Internet Protocol,网际互连协议)、IPv6(Internet Protocol Version6,互联网协议第6版)、ICMP(InternetControl Message Protocol,Internet控制报文协议)、TCP(Transmission ControlProtocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)等。例如,可以规定要过滤的网络包为出栈的网络包。网络过滤规则中可以包括多条过滤子规则,例如,可以规定过滤目的端口为8080,且目的地址为21.8.94的网络包。示例的,DNS的网络过滤规则可以是“outbound and protocol==udp and remotePort==53”,表明要过滤的网络包的协议为UDP,端口为53。在用户态确定网络过滤规则后,可以将网络过滤规则传递至内核态,内核态为内核网络驱动层,内核态中的文件格式为“.sys”。用户态向上与上层应用连接,向下与内核态连接,内核态向下与操作系统的WFP平台连接,操作系统可以是Windows操作系统,网络包进入Windows操作系统后再进行后续的过滤操作。
网络过滤规则可以以字符串的形式存在,用户态可以通过IRP(I/O RequestPackage,输入输出请求包)将上层应用的网络过滤规则传递至内核态,内核态在接收到网络过滤规则后,对网络过滤规则进行拆分,得到网络过滤规则中的各条过滤子规则,即得到网络过滤规则的具体内容。
步骤120、将过滤子规则配置到预设的初始过滤器中,构建目标过滤器。
其中,在得到过滤子规则后,可以将过滤子规则确定为WFP平台filter(过滤器)中的过滤条件,可以设置有多个过滤器,每个过滤器中可以配置有一个过滤条件。内核驱动中可以创建callout(呼出接口)过滤函数,与filter进行绑定,并向WFP注册并添加。当接收到WFP的网络包后,可以调用呼出接口的过滤函数,通过所绑定的过滤器进行过滤。过滤器中的数据为数组形式,在绑定过滤条件之前,初始的过滤器是数组为0的空白过滤器。将过滤子规则作为过滤条件配置到初始过滤器中,得到目标过滤器。
本实施例中,可选的,将过滤子规则配置到预设的初始过滤器中,构建目标过滤器,包括:将一条过滤子规则配置到一个预设的初始过滤器中,构建至少一个目标过滤器。
具体的,网络过滤规则中可以包括多条过滤子规则,每条过滤子规则可以对应一个初始过滤器,将一条过滤子规则配置到一个初始过滤器中。即,在初始过滤器中填写过滤子规则的数组,得到多个目标过滤器,目标过滤器的数量可以与过滤子规则的数量一致。目标过滤器可以与呼出接口绑定,一个呼出接口可以绑定有多个目标过滤器。这样设置的有益效果在于,可以通过多个目标过滤器对各条过滤子规则进行分别匹配,得到每条过滤子规则的匹配结果,避免过滤条件遗漏,提高对网络包进行过滤匹配的效率和精度,进而提高网络包的处理效率和精度。
步骤130、根据目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与过滤子规则匹配的待匹配网络包确定为目标网络包。
其中,在配置网络过滤规则和目标过滤器后,可以接收待匹配的网络包,例如,可以从WFP平台获取操作系统的待匹配网络包。确定待匹配网络包的属性信息,将待匹配网络包的属性信息与目标过滤器中配置的过滤子规则进行匹配。若待匹配网络包的属性信息与过滤子规则匹配,则将该待匹配网络包确定为目标网络包。属性信息可以包括网络流向、地址、端口、进程ID和协议类型等中的至少一种。例如,目标过滤器中配置的过滤子规则为远程端口53,若待匹配网络包的远程端口为53,则目标过滤器得到的匹配结果为“匹配成功”,该待匹配网络包为目标网络包。
本实施例中,可选的,根据目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与过滤子规则匹配的待匹配网络包确定为目标网络包,包括:通过Windows过滤平台获取操作系统的待匹配网络包,确定待匹配网络包的属性信息;其中,属性信息包括网络流向、地址、端口、进程ID和协议类型中的至少一种;将待匹配网络包的属性信息与目标过滤器中的过滤子规则进行匹配,得到目标过滤器的匹配结果;确定目标过滤器的匹配结果的交集结果,若交集结果为匹配成功,则确定待匹配网络包为目标网络包。
具体的,操作系统的待匹配网络包通过WFP平台传递给内核态,内核态获取待匹配网络包,确定待匹配网络包的属性信息。调用注册的呼出接口的过滤函数,确定呼出接口所绑定的目标过滤器,调用目标过滤器进行过滤。目标过滤器中根据过滤子规则配置有要被过滤的网络包的属性信息,将待匹配网络包的属性信息与目标过滤器中的过滤子规则进行匹配,得到目标过滤器的匹配结果。一个目标过滤器可以得到针对一条过滤子规则的匹配结果,若存在多个目标过滤器,则可以得到多个匹配结果。在得到一个或多个匹配结果后,确定匹配结果的交集,得到交集结果。例如,有两个目标过滤器,匹配结果均为匹配成功,则交集结果为匹配成功。若交集结果为匹配成功,则确定待匹配网络包匹配成功,该待匹配网络包为目标网络包。这样设置的有益效果在于,可以对各个过滤子规则分别进行匹配,并综合各个目标过滤器的匹配结果,避免过滤子规则和匹配结果遗漏,提高匹配精度和网络包的处理精度。
本实施例中,可选的,在确定目标过滤器的匹配结果的交集结果之后,还包括:若交集结果为匹配失败,则将待匹配网络包确定为合格网络包;将合格网络包通过Windows过滤平台返回至网络包的操作系统。
具体的,若多个匹配结果中存在至少一个匹配结果为匹配失败,则交集结果为匹配失败。若交集结果为匹配失败,则确定待匹配网络为合格网络包,即待匹配网络包不需要被过滤,直接对合格网络包进行放行。内核态可以将合格网络包通过WFP平台重新送回到网络包的操作系统中,对该网络包的处理过程结束。这样设置的有益效果在于,避免将合格网络包误认为目标网络包,减少对合格网络包的处理,及时将合格网络包放行,提高网络包的处理效率。
步骤140、根据预设的网络包处理策略,对目标网络包进行处理。
其中,在确定待匹配网络包为目标网络包后,可以根据预设的网络包处理策略对目标网络包进行处理。网络包处理策略可以由工作人员通过上层应用编写在网络过滤规则中,传递到用户态,再由用户态传递至内核态进行配置。例如,网络过滤规则可以包括过滤子规则和匹配后对网络包的执行操作,例如,过滤子规则可以是“outbound and protocol==udp and remotePort==53”,匹配后的执行操作可以是“block”。匹配后的执行操作可以包括block和custom等,blcok表示告知内核态直接拦截并丢弃网络包,custom表示告知内核态传递目标网络包至应用层进行处理。根据预设的网络包处理策略,可以确定对目标网络包进行丢失或上传,实现对目标网络包进行多种形式的处理。
本实施例中,可选的,对目标网络包进行处理,包括:对目标网络包进行丢弃;或者,将目标网络包上传至用户态,由用户态将目标网络包上传至上层应用,供用户在上层应用对目标网络包进行处理。
具体的,若网络包处理策略为丢弃,则直接对目标网络包进行丢弃,不需要将目标网络包上传至用户态和上层应用。网络包处理策略中的丢弃手段也可以是将网络包上传至用户态或上层应用后再丢弃,用户可以根据实际需求设定。若网络包处理策略为上传处理,则可以将目标网络包上传至用户态,再通过用户态将目标网络包上传至上层应用。用户可以在上层应用根据自身业务需求对目标网络包进行丢弃、修改或者重新注入等处理操作,并将处理后的网络包返回给用户态,用户态通过IRP方式将处理后的网络包发送至内核网络驱动层,内核网络驱动层再将该网络包发送回WFP平台,WFP平台将该网络包发送至Windows操作系统。这样设置的有益效果在于,可以对目标网络包进行灵活操作,并实现驱动与应用的交互,应用可以直接对驱动拦截的网络数据做业务逻辑处理。解决了驱动与应用交互困难的问题,上层应用无需编写内核态驱动,用户态中可直接获取到所需网络包数据并根据自身逻辑做处理,大大提高了开发效率,实现对系统网络包的灵活控制。
本实施例的技术方案,通过接收用户态发送的网络过滤规则,对内核态进行网络过滤规则的配置,减少对内核驱动的编写过程,降低开发调试难度,对开发者的技能要求较低。根据网络过滤规则确定过滤子规则,将过滤子规则配置在预设的空白过滤器中,当接收到待匹配网络包时,可以采用目标过滤器进行匹配,实现对各条过滤子规则的全面匹配。将匹配成功的网络包确定为目标网络包并对目标网络包进行处理。解决了现有技术中,需要工作人员对内核驱动进行编写的问题,实现驱动与应用的交互,避免代码编写不合规引起系统崩溃,有效提高网络包的处理效率。
实施例二
图2为本发明实施例二所提供的一种网络包的处理方法的流程示意图,本实施例可适用于对网络包进行过滤处理的情况,该方法可以由配置于用户态的网络包的处理装置来执行。如图2所示,该方法具体包括如下步骤:
步骤210、通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,网络过滤规则由领域特定语言编写。
其中,上层应用调用封装框架提供的.dll库驱动设置函数,根据场景传递DSL的网络过滤规则给用户态。在用户态配置策略设置接口,策略设置接口用于用户态与上层应用进行数据连接,可以接收用户在上层应用定义的网络过滤规则。可以采用DSL编写网络过滤规则,网络过滤规则中可以包括多条过滤子规则,例如,可以规定网络流向、地址、端口、进程ID和协议类型中的至少一种。若待匹配网络包的属性信息与规定的属性信息一致,则需要过滤该待匹配网络包。
步骤220、将网络过滤规则传递至内核态,供内核态根据网络过滤规则进行网络包的处理。
其中,用户态通过IRP请求将上层应用的网络过滤规则传递至内核网络驱动层,内核网络驱动层将网络过滤规则拆分为WFP平台filter中的多个过滤条件,并且分别绑定到需要过滤的layer(层)上的过滤点中。内核网络驱动层中创建callout过滤函数,与建立的过滤器filter进行绑定,并向WFP注册并添加呼出接口。
内核态在接收到待匹配网络包后,可以根据网络过滤规则,对待匹配网络包进行处理。内核态接收的待匹配网络包来自于Windows操作系统,待匹配网络包进入Windows操作系统,操作系统把待匹配网络包转至WFP平台,内核态获取WFP平台的待匹配网络包,将待匹配网络包与呼出接口中过滤器的过滤子规则进行对比。得到各个目标过滤器的匹配结果,根据匹配结果,得到交集结果。若交集结果为匹配成功,则确定待匹配网络包为与网络过滤规则匹配的目标网络包;若交集结果为匹配失败,则确定待匹配网络包为不与网络过滤规则匹配的合格网络包。若待匹配网络包为合格网络包,则直接放行,执行系统默认网络包流程。若待匹配网络包为目标网络包,则根据网络过滤规则的网络包处理策略,确定对目标网络包的处理手段。例如,若设置操作为block,则直接丢弃目标网络包;若设置操作为custom,则可以通过IRP方式将目标网络包转发至用户态,或对目标网络包进行清洗后发送给用户态。
本实施例中,可选的,在将网络过滤规则传递至内核态之后,还包括:接收内核态过滤得到的目标网络包,将目标网络包上传至上层应用,供用户在上层应用对目标网络包进行处理。
具体的,内核态在进行过滤规则的匹配后将目标网络包通过IRP方式转发至用户态,用户态接收到目标网络包,将目标网络包转发至上层应用。用户可以在上层应用根据自身业务需求,对目标网络包执行丢弃、修改或者重新注入等处理,处理后的目标网络包为回应包,上层应用可以将回应包返回给用户态。用户态可以通过IRP方式将回应包发送至内核态,内核态再将回应包发送至WFP平台,WFP平台将回应包发送至Windows操作系统,结束对网络包的处理过程。这样设置的有益效果在于,上层应用无需编写内核态驱动,用户态中可直接获取到所需网络包数据并根据自身逻辑做处理,大大提高了开发效率,实现驱动与应用的交互,对系统网络包进行灵活控制,提高网络包处理效率。
本发明实施例通过用户态确定内核态的网络过滤规则,根据用户态定义的DSL网络过滤规则实现内核态对指定网络包的拦截,并转发至用户态应用层中。上层应用根据需要对网络数据做业务逻辑处理后再把处理结果回传至内核驱动。用户无需编写内核态驱动,就可以实现对系统网络包的灵活控制,降低开发调试难度、开发风险以及驱动与应用的交互难度,极大提升了开发效率。也避免了对内核驱动编写后重启驱动的过程,提高网络包的处理效率。
实施例三
图3为本发明实施例三所提供的一种网络包的处理装置的结构框图,可执行本发明任意实施例所提供的一种网络包的处理方法,该装置配置于内核态中,具备执行方法相应的功能模块和有益效果。如图3所示,该装置具体包括:
规则拆分模块301,用于接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;
过滤器构建模块302,用于将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;
目标包确定模块303,用于根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;
目标包处理模块304,用于根据预设的网络包处理策略,对所述目标网络包进行处理。
可选的,过滤器构建模块302,具体用于:
将一条过滤子规则配置到一个预设的初始过滤器中,构建至少一个目标过滤器。
可选的,目标包确定模块303,包括:
属性信息确定单元,用于通过Windows过滤平台获取操作系统的待匹配网络包,确定所述待匹配网络包的属性信息;其中,所述属性信息包括网络流向、地址、端口、进程ID和协议类型中的至少一种;
匹配结果确定单元,用于将所述待匹配网络包的属性信息与所述目标过滤器中的过滤子规则进行匹配,得到所述目标过滤器的匹配结果;
交集结果确定单元,用于确定所述目标过滤器的匹配结果的交集结果,若所述交集结果为匹配成功,则确定所述待匹配网络包为目标网络包。
可选的,目标包处理模块304,具体用于:
对所述目标网络包进行丢弃;或者,
将所述目标网络包上传至用户态,由所述用户态将所述目标网络包上传至上层应用,供用户在上层应用对所述目标网络包进行处理。
可选的,该装置还包括:
合格包确定模块,用于在确定所述目标过滤器的匹配结果的交集结果之后,若所述交集结果为匹配失败,则将所述待匹配网络包确定为合格网络包;
合格包返回模块,用于将所述合格网络包通过Windows过滤平台返回至网络包的操作系统。
本发明实施例通过接收用户态发送的网络过滤规则,对内核态进行网络过滤规则的配置,减少对内核驱动的编写过程,降低开发调试难度,对开发者的技能要求较低。根据网络过滤规则确定过滤子规则,将过滤子规则配置在预设的空白过滤器中,当接收到待匹配网络包时,可以采用目标过滤器进行匹配,实现对各条过滤子规则的全面匹配。将匹配成功的网络包确定为目标网络包并对目标网络包进行处理。解决了现有技术中,需要工作人员对内核驱动进行编写的问题,实现驱动与应用的交互,避免代码编写不合规引起系统崩溃,有效提高网络包的处理效率。
实施例四
图4为本发明实施例四所提供的一种网络包的处理装置的结构框图,可执行本发明任意实施例所提供的一种网络包的处理方法,该装置配置于用户态中,具备执行方法相应的功能模块和有益效果。如图4所示,该装置具体包括:
规则接收模块401,用于通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,所述网络过滤规则由领域特定语言编写;
规则传递模块402,用于将所述网络过滤规则传递至内核态,供所述内核态根据所述网络过滤规则进行网络包的处理。
可选的,该装置还包括:
目标包接收模块,用于在将所述网络过滤规则传递至内核态之后,接收所述内核态过滤得到的目标网络包,将所述目标网络包上传至上层应用,供用户在上层应用对所述目标网络包进行处理。
本发明实施例通过用户态确定内核态的网络过滤规则,根据用户态定义的DSL网络过滤规则实现内核态对指定网络包的拦截,并转发至用户态应用层中。上层应用根据需要对网络数据做业务逻辑处理后再把处理结果回传至内核驱动。用户无需编写内核态驱动,就可以实现对系统网络包的灵活控制,降低开发调试难度、开发风险以及驱动与应用的交互难度,极大提升了开发效率。也避免了对内核驱动编写后重启驱动的过程,提高网络包的处理效率。
实施例五
图5是本发明实施例五提供的一种网络包的处理设备的结构示意图。网络包的处理设备是一种电子设备,图5示出了适于用来实现本发明实施方式的示例性电子设备500的框图。图5显示的电子设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:一个或者多个处理器或者处理单元501,系统存储器502,连接不同系统组件(包括系统存储器502和处理单元501)的总线503。
总线503表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备500典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备500访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器502可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)504和/或高速缓存存储器505。电子设备500可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统506可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线503相连。存储器502可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块507的程序/实用工具508,可以存储在例如存储器502中,这样的程序模块507包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块507通常执行本发明所描述的实施例中的功能和/或方法。
电子设备500也可以与一个或多个外部设备509(例如键盘、指向设备、显示器510等)通信,还可与一个或者多个使得用户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口511进行。并且,电子设备500还可以通过网络适配器512与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图5所示,网络适配器512通过总线503与电子设备500的其它模块通信。应当明白,尽管图5中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元501通过运行存储在系统存储器502中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种网络包的处理方法,包括:
接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;
将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;
根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;
根据预设的网络包处理策略,对所述目标网络包进行处理。
实施例六
图6是本发明实施例六提供的一种网络包的处理设备的结构示意图。网络包的处理设备是一种电子设备,图6示出了适于用来实现本发明实施方式的示例性电子设备600的框图。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:一个或者多个处理器或者处理单元601,系统存储器602,连接不同系统组件(包括系统存储器602和处理单元601)的总线603。
总线603表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备600典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备600访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器602可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)604和/或高速缓存存储器605。电子设备600可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统606可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线603相连。存储器602可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块607的程序/实用工具608,可以存储在例如存储器602中,这样的程序模块607包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块607通常执行本发明所描述的实施例中的功能和/或方法。
电子设备600也可以与一个或多个外部设备609(例如键盘、指向设备、显示器610等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口611进行。并且,电子设备600还可以通过网络适配器612与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图6所示,网络适配器612通过总线603与电子设备600的其它模块通信。应当明白,尽管图6中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元601通过运行存储在系统存储器602中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种网络包的处理方法,包括:
通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,所述网络过滤规则由领域特定语言编写;
将所述网络过滤规则传递至内核态,供所述内核态根据所述网络过滤规则进行网络包的处理。
实施例七
本发明实施例七还提供一种包含计算机可执行指令的存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的一种网络包的处理方法,包括:
接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;
将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;
根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;
根据预设的网络包处理策略,对所述目标网络包进行处理。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
实施例八
本发明实施例八还提供一种包含计算机可执行指令的存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的一种网络包的处理方法,包括:
通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,所述网络过滤规则由领域特定语言编写;
将所述网络过滤规则传递至内核态,供所述内核态根据所述网络过滤规则进行网络包的处理。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (11)

1.一种网络包的处理方法,其特征在于,由内核态执行,所述方法包括:
接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;
将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;
根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;
根据预设的网络包处理策略,对所述目标网络包进行处理。
2.根据权利要求1所述的方法,其特征在于,将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器,包括:
将一条过滤子规则配置到一个预设的初始过滤器中,构建至少一个目标过滤器。
3.根据权利要求1所述的方法,其特征在于,根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包,包括:
通过Windows过滤平台获取操作系统的待匹配网络包,确定所述待匹配网络包的属性信息;其中,所述属性信息包括网络流向、地址、端口、进程ID和协议类型中的至少一种;
将所述待匹配网络包的属性信息与所述目标过滤器中的过滤子规则进行匹配,得到所述目标过滤器的匹配结果;
确定所述目标过滤器的匹配结果的交集结果,若所述交集结果为匹配成功,则确定所述待匹配网络包为目标网络包。
4.根据权利要求1所述的方法,其特征在于,对所述目标网络包进行处理,包括:
对所述目标网络包进行丢弃;或者,
将所述目标网络包上传至用户态,由所述用户态将所述目标网络包上传至上层应用,供用户在上层应用对所述目标网络包进行处理。
5.根据权利要求3所述的方法,其特征在于,在确定所述目标过滤器的匹配结果的交集结果之后,还包括:
若所述交集结果为匹配失败,则将所述待匹配网络包确定为合格网络包;
将所述合格网络包通过Windows过滤平台返回至网络包的操作系统。
6.一种网络包的处理方法,其特征在于,由用户态执行,所述方法包括:
通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,所述网络过滤规则由领域特定语言编写;
将所述网络过滤规则传递至内核态,供所述内核态根据所述网络过滤规则进行网络包的处理。
7.根据权利要求6所述的方法,其特征在于,在将所述网络过滤规则传递至内核态之后,还包括:
接收所述内核态过滤得到的目标网络包,将所述目标网络包上传至上层应用,供用户在上层应用对所述目标网络包进行处理。
8.一种网络包的处理装置,其特征在于,配置于内核态,所述装置包括:
规则拆分模块,用于接收用户态发送的网络过滤规则,将所述网络过滤规则拆分,得到所述网络过滤规则中的至少一条过滤子规则;
过滤器构建模块,用于将所述过滤子规则配置到预设的初始过滤器中,构建目标过滤器;
目标包确定模块,用于根据所述目标过滤器,对获取到的待匹配网络包进行过滤子规则的匹配,将与所述过滤子规则匹配的待匹配网络包确定为目标网络包;
目标包处理模块,用于根据预设的网络包处理策略,对所述目标网络包进行处理。
9.一种网络包的处理装置,其特征在于,配置于用户态,所述装置包括:
规则接收模块,用于通过用户态的策略设置接口接收用户在上层应用定义的网络过滤规则;其中,所述网络过滤规则由领域特定语言编写;
规则传递模块,用于将所述网络过滤规则传递至内核态,供所述内核态根据所述网络过滤规则进行网络包的处理。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5或6-7中任一所述的网络包的处理方法。
11.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-5或6-7中任一所述的网络包的处理方法。
CN202110954516.XA 2021-08-19 2021-08-19 一种网络包的处理方法、装置、电子设备及存储介质 Pending CN113691458A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110954516.XA CN113691458A (zh) 2021-08-19 2021-08-19 一种网络包的处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110954516.XA CN113691458A (zh) 2021-08-19 2021-08-19 一种网络包的处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN113691458A true CN113691458A (zh) 2021-11-23

Family

ID=78580633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110954516.XA Pending CN113691458A (zh) 2021-08-19 2021-08-19 一种网络包的处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113691458A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114900468A (zh) * 2022-05-25 2022-08-12 曙光网络科技有限公司 一种规则匹配方法、装置、设备和存储介质
CN115550265A (zh) * 2022-09-30 2022-12-30 中国第一汽车股份有限公司 一种车载网络通信事件滤波方法、装置、设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545254A (zh) * 2003-11-13 2004-11-10 中兴通讯股份有限公司 一种快速数据包过滤方法
US20170054686A1 (en) * 2015-08-18 2017-02-23 Konstantin Malkov Agentless Security of Virtual Machines using a Filtering Platform
CN110636084A (zh) * 2019-11-08 2019-12-31 北京天地和兴科技有限公司 一种用户态防火墙的出入接口过滤方法
CN112003877A (zh) * 2020-09-03 2020-11-27 上海优扬新媒信息技术有限公司 一种网络隔离方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545254A (zh) * 2003-11-13 2004-11-10 中兴通讯股份有限公司 一种快速数据包过滤方法
US20170054686A1 (en) * 2015-08-18 2017-02-23 Konstantin Malkov Agentless Security of Virtual Machines using a Filtering Platform
CN110636084A (zh) * 2019-11-08 2019-12-31 北京天地和兴科技有限公司 一种用户态防火墙的出入接口过滤方法
CN112003877A (zh) * 2020-09-03 2020-11-27 上海优扬新媒信息技术有限公司 一种网络隔离方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一半人生: "Windows驱动编程之WFP/TDI", pages 1 - 13, Retrieved from the Internet <URL:https://bbs.kanxue.com/thread-268468.htm> *
高磊 等: "网络监测与过滤的研究", 唐山学院学报, no. 06, 20 November 2009 (2009-11-20), pages 54 - 57 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114900468A (zh) * 2022-05-25 2022-08-12 曙光网络科技有限公司 一种规则匹配方法、装置、设备和存储介质
CN114900468B (zh) * 2022-05-25 2024-04-12 曙光网络科技有限公司 一种规则匹配方法、装置、设备和存储介质
CN115550265A (zh) * 2022-09-30 2022-12-30 中国第一汽车股份有限公司 一种车载网络通信事件滤波方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
US11695731B2 (en) Distributed identity-based firewalls
US11824962B2 (en) Methods and apparatus for sharing and arbitration of host stack information with user space communication stacks
CN109639652B (zh) 一种基于安全隔离的网间数据访问的方法及系统
US7634805B2 (en) Use of network address translation for implementation of stateful routing
US8413172B2 (en) Method and system for socket API call emulation
US20190079897A1 (en) Remote direct memory access in computing systems
US8363656B2 (en) Multiple virtual machines sharing a single IP address
US7577707B2 (en) Method, system, and program for executing data transfer requests
US7706367B2 (en) Integrated tunneling and network address translation: performance improvement for an interception proxy server
US11558348B2 (en) Methods and apparatus for emerging use case support in user space networking
CN113691458A (zh) 一种网络包的处理方法、装置、电子设备及存储介质
US10846163B1 (en) Hybrid hardware and software reporting management
CN102761534B (zh) 实现媒体接入控制层透明代理的方法和装置
CN113574845A (zh) 内部和外部调试
US10367785B2 (en) Software defined traffic modification system
CN104811507A (zh) 一种ip地址获取方法及装置
US9419851B1 (en) Application transaction tracking across network boundaries
US10248790B2 (en) Information processing system, controlling method, and controlling computer program
CN105610639A (zh) 全量日志抓取方法及装置
CN115002069B (zh) 端口映射方法、装置、电子设备及存储介质
CN114025370B (zh) 数据报文传输方法、介质、系统和计算设备
CN112910910B (zh) Opcda协议报文处理方法、装置、设备以及存储介质
CN114268669A (zh) 访问处理方法及系统
CN112416509B (zh) 虚拟机控制系统及相关设备
CN109068170B (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