UDP应用层协议识别方法、装置、存储介质及设备与流程

文档序号:28598776发布日期:2022-01-22 10:54阅读:132来源:国知局
UDP应用层协议识别方法、装置、存储介质及设备与流程
udp应用层协议识别方法、装置、存储介质及设备
技术领域
1.本发明涉及网络技术领域,特别是涉及一种udp应用层协议识别方法、装置、存储介质及设备。


背景技术:

2.用户数据报协议(user datagram protocol,udp)是一种传输层协议。在tcp/ip网络中,它与tcp协议一样用于处理数据包,是一种无连接的协议,也是目前音视频传输中主要采用的传输层协议。
3.用户数据一般通过交换机或者路由器或者代理转发服务器等设备发送至服务器中。在实际业务场景中,用户需要知道哪种udp协议网络的业务流量经过该交换机、路由器或者代理转发服务器,以用于进行网络流量的分析与监控,但是这些信息无法在以上设备上直观看到。目前所采用的是基于端口的识别技术,是对端口进行匹配的一种协议技术,这种技术一般是针对知名端口进行识别,识别范围窄,识别率低,一些动态端口常常无法识别到。


技术实现要素:

4.鉴于上述状况,有必要针对现有技术中udp应用层协议识别率低的问题,提供一种udp应用层协议识别方法、装置、存储介质及设备。
5.本发明提供了一种udp应用层协议识别方法,包括:
6.获取udp数据包;
7.将所述udp数据包的数据分别与预设的多个协议的应用层特征进行匹配;
8.若匹配上任意一所述协议的应用层特征,则将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中;
9.将所述数据列表中新增的数据写入数据库中。
10.进一步的,上述udp应用层协议识别方法,其中,所述将所述数据列表中新增的数据写入数据库中的步骤包括:
11.读取所述数据列表中新增的数据,并写到预设的文件中;
12.通过inotify机制实时监控所述文件;
13.当监控到所述文件变更时,解析所述文件中的数据,并将所述文件中新增的数据写入数据库中。
14.进一步的,上述udp应用层协议识别方法,其中,所述读取所述数据列表中新增的数据,并写到预设的文件中的步骤包括:
15.读取所述数据列表中的第一行数标记;
16.读取所述数据列表中所述第一行数标记对应行数之后的数据,并写入预设的文件中;
17.所述将所述文件中新增的数据写入数据库中的步骤包括:
18.读取所述文件中的第二行数标记;
19.读取所述文件中所述第二行数标记对应行数之后的数据,并写入数据库中,其中,所述数据表和所述文件中的数据按行依次写入,所述第一行数标记和所述第二行数标记用于标记最近一次写入的数据的行数。
20.进一步的,上述udp应用层协议识别方法,其中,所述将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中的步骤包括:
21.判断预设的数据列表中是否记录有所述udp数据包中的ip地址、端口和协议类型信息;
22.若否,将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中。
23.进一步的,上述udp应用层协议识别方法,其中,所述将所述udp数据包的数据分别与预设的多个协议的应用层特征进行匹配的步骤包括:
24.提取所述udp数据包中的应用层的数据,并将提取的所述应用层的数据分别与预设的多个协议的应用层特征进行匹配。
25.进一步的,上述udp应用层协议识别方法,其中,所述获取udp数据包的步骤包括:
26.通过调用接口函数从skb中解析过滤出udp数据包。
27.本发明还公开了一种udp应用层协议识别装置,包括:
28.获取模块,用于获取udp数据包;
29.匹配模块,用于将所述udp数据包的数据分别与预设的多个协议的应用层特征进行匹配;
30.记录模块,用于当匹配上任意一所述协议的应用层特征时,将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中;
31.写入模块,用于将所述数据列表中新增的数据写入数据库中。
32.进一步的,上述udp应用层协议识别装置,其中,所述写入模块包括:
33.第一写入子模块,用于读取所述数据列表中新增的数据,并写到预设的文件中;
34.监控模块,用于通过inotify机制实时监控所述文件;
35.第二写入子模块,用于当监控到所述文件变更时,解析所述文件中的数据,并将所述文件中新增的数据写入数据库中。
36.进一步的,上述udp应用层协议识别装置,其中,所述第一写入子模块具体用于:
37.读取所述数据列表中的第一行数标记;
38.读取所述数据列表中所述第一行数标记对应行数之后的数据,并写入预设的文件中;
39.所述第二写入子模块具体用于:
40.读取所述文件中的第二行数标记;
41.读取所述文件中所述第二行数标记对应行数之后的数据,并写入数据库中,其中,所述数据表和所述文件中的数据按行依次写入,所述第一行数标记和所述第二行数标记用于标记最近一次写入的数据的行数。
42.进一步的,上述udp应用层协议识别装置,其中,所述记录模块具体用于:
43.判断预设的数据列表中是否记录有所述udp数据包中的ip地址、端口和协议类型
信息;
44.若否,将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中。
45.进一步的,上述udp应用层协议识别装置,其中,所述匹配模块具体用于:
46.提取所述udp数据包中的应用层的数据,并将提取的所述应用层的数据分别与预设的多个协议的应用层特征进行匹配。
47.进一步的,上述udp应用层协议识别装置,其中,所述获取模块具体用于:
48.通过调用接口函数从skb中解析过滤出udp数据包。
49.本发明还公开了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一所述的方法。
50.本发明还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现上述任意一项所述的方法。
51.本发明通过获取udp数据包,并将udp数据包的数据分别与预设的多个协议的应用层特征进行匹配,若匹配成功,则将该udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中,并写入到数据库里,前端页面可读取数据库内容展示。该方法能够快速直观的观察到当前设备上所存在的udp相关应用层协议。
附图说明
52.图1为本发明第一实施例中udp应用层协议识别方法的流程图;
53.图2为本发明第二实施例中udp应用层协议识别方法的流程图;
54.图3为本发明第三实施例中udp应用层协议识别装置的结构框图;
55.图4为本发明第实施例中计算机设备的结构示意图。
56.如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
57.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
58.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
59.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相
结合。
60.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
61.请参阅图1,为本发明第一实施例中的udp应用层协议识别方法,该方法包括步骤s11~s14。
62.步骤s11,获取udp数据包。
63.步骤s12,将所述udp数据包的数据分别与预设的多个协议的应用层特征进行匹配。
64.步骤s13,若匹配上任意一所述协议的应用层特征,则将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中。
65.步骤s14,将所述数据列表中新增的数据写入数据库中。
66.需要说明的是,本实施例中的应用层协议识别方法是linux旁路镜像模式的udp应用层协议识别。具体实施时,在通过在linux内核包接收模块嵌入一个钩子,即在tcp/ip协议栈的__udp4_lib_rcv注册一个接口函数,以通过该接口函数来获取udp数据包,以及后续的应用层特征匹配和协议相关内容的写入。
67.通过调用接口函数从skb中解析过滤出udp数据包,然后对该udp数据包进行解析,以获取该数据包中的数据。将该udp数据包的数据分别与预设的多个协议的应用层特征进行匹配。可以理解的,该预设的多个协议包括但不限于tftp协议、snmp协议和dns协议等。应用层协议的特征一般有多个,具体实施时,可以采用该应用层协议通信连接中的两个或两个以上的udp数据包的内容与各个协议的应用层特征进行匹配,以准确的识别到udp应用层协议。
68.当该udp数据包的数据若匹配上任意一协议的应用层特征时,则将该udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中。该数据列表为以ip加端口加协议类型作为唯一标志的列表,其例如表1所示。
69.表1
70.时间ip地址端口协议类型2020/05/01 18:08:08192.168.2.180snmp
71.本实施例通过获取udp数据包,并将udp数据包的数据分别与预设的多个协议的应用层特征进行匹配,若匹配成功,则将该udp数据包中的ip地址、端口和协议类型信息记录
到预设的数据列表中,并写入到数据库里,前端页面可读取数据库内容展示。该方法能够快速直观的观察到当前设备上所存在的udp相关应用层协议。
72.请参阅图2,为本发明第二实施例中的udp应用层协议识别方法,该方法包括步骤s21~s27。
73.步骤s21,通过调用接口函数从skb中解析过滤出udp数据包。
74.步骤s22,将所述udp数据包的数据分别与预设的多个协议的应用层特征进行匹配。
75.本实施例中的应用层协议识别方法是linux旁路镜像模式的udp应用层协议识别。具体实施时,在tcp/ip协议栈的__udp4_lib_rcv里注册一个接口函数,以通过该接口函数来获取udp数据包,以及后续的应用层特征匹配和协议相关内容的写入。
76.通过调用接口函数从skb中解析过滤出udp数据包,然后对该udp数据包进行解析,以获取该数据包中的数据。将该udp数据包的数据分别与预设的多个协议的应用层特征进行匹配。具体实施时,可提取该udp数据包中的应用层的数据,并将提取的应用层的数据分别与预设的多个协议的应用层特征进行匹配。可以理解的,该预设的多个协议包括但不限于tftp协议、snmp协议和dns协议等。
77.步骤s23,若匹配上任意一所述协议的应用层特征,判断预设的数据列表中是否记录有所述udp数据包中的ip地址、端口和协议类型信息。
78.步骤s24,若否,将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中。
79.当该udp数据包的数据若匹配上任意一协议的应用层特征时,判断预设的数据列表中是否记录有该udp数据包中的ip地址、端口和协议类型信息,若无,则将该udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中。具体的,该数据列表中的数据是按行从上至下依次写入数据列表中。
80.步骤s25,读取所述数据列表中新增的数据,并写到预设的文件中。
81.步骤s26,通过inotify机制实时监控所述文件。
82.步骤s27,当监控到所述文件变更时,解析所述文件中的数据,并将所述文件中新增的数据写入数据库中。
83.需要说明的是,通过inotify机制监控文件为整个识别过程中实时进行的步骤,即上述步骤s25和步骤s26并没有固定的先后顺序。
84.本实施例通过inotify机制监控文件的变化。inotify是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,可以做到对事件处理的实时响应,也没有轮询造成的系统资源消耗,是非常自然的事件通知接口。具体实施时,将inotify实例对应的fd通过uv__io_start注册到epoll中,当有文件变化的时候,就会执行回调uv__inotify_read函数,读取该监控的文件。再解析该监控的文件中的数据,并将该文件中新增的数据写入数据库中。
85.需要说明的是,如果是首次调用该函数则新建一个inotify实例,并且往libuv插入一个观察者io,libuv会在poll io阶段注册到epoll中,再往操作系统注册该待监听的文件,并返回一个id。libuv判断该id是不是在自己维护的红黑树中,如果不在红黑树中,则插入红黑树,并返回一个红黑树中对应的节点。再把本次请求的信息封装到handle中,然后把
handle插入刚才返回的节点的队列中,即可完成注册。
86.进一步的,所述读取所述数据列表中新增的数据,并写到预设的文件中的步骤包括:
87.读取所述数据列表中的第一行数标记;
88.读取所述数据列表中所述第一行数标记对应行数之后的数据,并写入预设的文件中;
89.所述将所述文件中新增的数据写入数据库中的步骤包括:
90.读取所述文件中的第二行数标记;
91.读取所述文件中所述第二行数标记对应行数之后的数据,并写入数据库中,其中,所述数据表和所述文件中的数据按行依次写入,所述第一行数标记和所述第二行数标记用于标记最近一次写入的数据的行数。
92.即本实施例中,分别根据第一行数标记和第二行数标记来判断数据列表和该文件中新增的内容。即在文本的第一行存储当前写入数据的行数,以作为下次读取时的位置标记。然后直接略过第一行存储的行数开始读取新增的内容。再次增加内容后,修改第一行的行数标记即可。
93.可以理解的,在本发明的其他实施例中,还根据记录的日志文件来判断数据列表和文件中新增的内容。即在写入内容的同时记录到日志文件,记录下增加内容的位置和起始若干字节的内容留做标记。下次直接读取日志和文件,就可以找到新增加的完整内容。
94.本实施例中,基于linux旁路镜像模式的udp应用层协议识别,该发明的原理是通过在linux内核包接收模块嵌入一个接口函数,作用是解析过滤出udp数据包,然后解析出该udp数据包是采用tftp、snmp、dns或是其他协议。采集包括流量的ip地址、端口、协议类型,生成以ip、端口和协议作为唯一标志的数据列表,并写入到数据库里,前端页面可读取数据库内容展示。
95.请参阅图3,为本发明第三实施例中的udp应用层协议识别装置,包括:
96.获取模块31,用于获取udp数据包;
97.匹配模块32,用于将所述udp数据包的数据分别与预设的多个协议的应用层特征进行匹配;
98.记录模块33,用于当匹配上任意一所述协议的应用层特征时,将所述udp数据包中的ip地址、端口和协议类型信息记录到预设的数据列表中;
99.写入模块34,用于将所述数据列表中新增的数据写入数据库中。
100.进一步的,上述udp应用层协议识别装置,其中,所述写入模块34包括:
101.第一写入子模块,用于读取所述数据列表中新增的数据,并写到预设的文件中;
102.监控模块,用于通过inotify机制实时监控所述文件;
103.第二写入子模块,用于当监控到所述文件变更时,解析所述文件中的数据,并将所述文件中新增的数据写入数据库中。
104.进一步的,上述udp应用层协议识别装置,其中,所述第一写入子模块具体用于:
105.读取所述数据列表中的第一行数标记;
106.读取所述数据列表中所述第一行数标记对应行数之后的数据,并写入预设的文件中;
access memory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmable read-only memory,简称为prom)、可擦除prom(erasable programmable read-only memory,简称为eprom)、电可擦除prom(electrically erasable programmable read-only memory,简称为eeprom)、电可改写rom(electrically alterable read-only memory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(static random-access memory,简称为sram)或动态随机存取存储器(dynamic random access memory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器(fast page mode dynamic random access memory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extended date out dynamic random access memory,简称为edodram)、同步动态随机存取内存(synchronous dynamic random-access memory,简称sdram)等。
122.存储器82可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器81所执行的可能的计算机程序指令。
123.处理器81通过读取并执行存储器82中存储的计算机程序指令,以实现上述实施例中的udp应用层协议识别方法。
124.在其中一些实施例中,该数据提供终端和平台还可包括通信接口83和总线80。其中,如图4所示,处理器81、存储器82、通信接口83通过总线80连接并完成相互间的通信。
125.通信接口83用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。通信接口83还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
126.总线80包括硬件、软件或两者,将对应设备的部件彼此耦接在一起。总线80包括但不限于以下至少之一:数据总线(data bus)、地址总线(address bus)、控制总线(control bus)、扩展总线(expansion bus)、局部总线(local bus)。举例来说而非限制,总线80可包括图形加速接口(accelerated graphics port,简称为agp)或其他图形总线、增强工业标准架构(extended industry standard architecture,简称为eisa)总线、前端总线(front side bus,简称为fsb)、超传输(hyper transport,简称为ht)互连、工业标准架构(industry standard architecture,简称为isa)总线、无线带宽(infiniband)互连、低引脚数(low pin count,简称为lpc)总线、存储器总线、微信道架构(micro channel architecture,简称为mca)总线、外围组件互连(peripheral component interconnect,简称为pci)总线、pci-express(pci-x)总线、串行高级技术附件(serial advanced technology attachment,简称为sata)总线、视频电子标准协会局部(video electronics standards association local bus,简称为vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线80可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
127.另外,结合上述实施例中的udp应用层协议识别方法,本技术实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种udp应用层协议识别方法。
128.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存
在矛盾,都应当认为是本说明书记载的范围。
129.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1