一种UDP数据包解析方法、系统和存储介质与流程

文档序号:25033201发布日期:2021-05-11 17:03阅读:165来源:国知局
一种UDP数据包解析方法、系统和存储介质与流程

本发明涉及数据采集和数据传输的技术领域,更具体地说,涉及一种udp数据包解析方法、系统和存储介质。



背景技术:

数据采集是所有数据分析的核心前置步骤,根据被采集对象的重要程度,会采取不同的传输方式,其中一些非核心的日志数据,流水数据,会以代价更低的方式,如udp数据包的方式进行传输。

现有技术广泛采取的udp数据包数据传输的应用模式为完整解析数据包后,进行判断分类,针对单一的业务数据,启动一个相应的数据接收端,例如java的udp_server实例。若数据包较大情况下,整个过程会消耗很大的资源进行对数据的分类和判断,举例来说,一般游戏公司,通过统一的服务端接收各个手机客户端sdk发送过来的数据,包括充值,登录,通关等等一系列行为,接收后,需要对这些数据进行分类处理和存储,这样需要针对每种业务数据启动相应的接收服务来收集数据,消耗的服务端资源会根据业务数据类型的种类拓展而线性增加,各服务的接收服务之间相互独立,无法统一管理。

中国专利申请获取数据的方法,申请号cn200910088033.5,公开日2010年2月17日,公开了一种获取数据的方法,属于数据处理领域。方法包括:获取数据流,数据流包括头文件和数据体;由所述数据流中的第一个字节连续获取包括所述第一个字节在内的四个字节长度的数据,得到所述数据流头文件的数据流标识;根据所述数据流标识的下一字节连续获取包含所述下一字节的两个字节长度的数据,得到所述数据流头文件的版本号;根据所述版本号的下一字节连续跳过包含所述版本号的下一字节的十二个字节长度的数据,获取包含所述版本号后第十三个字节的四个字节长度的数据,得到所述数据流头文件的通道路径长度;并由所述通道路径长度的下一个偏移,获取所述通道路径长度所表示长度的通道路径;并进一步,获取所述数据流中数据体的数据,该方法将数据固定的分为两个部分,即头部和数据体两部分,头部固定为四个字节,头部数据字节数固定限制头部数据存储内容,无法做到无限拓展,同时在头部数据不足四个字节时还会造成数据空间得到浪费。



技术实现要素:

1.要解决的技术问题

针对现有技术中存在的数据采集传输时需针对每种业务数据启动相应的接收服务来收集数据,消耗资源多,且数据之间没有关联不易管理的问题,本发明提供一种udp数据包解析方法、系统和存储介质,通过制定相应的解析规则,统一接收所有udp数据包形式的业务数据,并根据规则识别udp数据包所属的业务类型,来分类处理数据,节省存储资源,提高udp数据包识别效率。

2.技术方案

本发明的目的通过以下技术方案实现。

本发明提供一种udp数据包解析的方案,它可以实现更高效率完成数据包识别和分类,提高udp数据包识别效率。

一种udp数据包解析方法,udp数据包遍历解析系统中所有解析规则,将udp数据包中的数据与解析规则中的参数匹配,若udp数据包中的数据与解析规则中的参数值相同则表示该解析规则与当前udp数据包匹配成功,根据匹配成功的解析规则分类,若匹配不成功则进行下一解析规则的解析匹配。

本发明基于自定义解析规则进行udp数据包解析,通过自定义的udp数据解析规则来识别不同类型的业务数据,对udp数据包的数据进行划分,现有的常规识别方式为完整解析udp数据包,来进行辨识数据类别,或者通过判断udp包的头部信息来识别,但是这种方式存在以下两个缺点:一是完成识别每条数据需要花费的成本太高,如果包的数据较大,会产生很大的资源浪费;二是利用包的头部信息来识别,因为头部的大小固定,所以能提供的规则类别也是有限的,就像三位密码,最多只能由1000种组合,所以如果规则很多的时候,就难以满足需求。

采取本发明的udp数据包识别方法,能提高识别效率的同时,也能无限制的拓展规则,避免为每一类业务数据划分资源进行数据接收,从而产生性能浪费。

更进一步的,所述解析规则参数包括偏移量、数据长度和数据值,偏移量用于定位udp数据包中待匹配数据的起始位置,数据长度用于确定数据的长度,数据值用于与待匹配数据进行匹配。本发明udp数据包解析方法操作上可以分为两个步骤进行,首先编写自定义解析规则,一条规则有三个核心参数,这三个参数组成一个解析规则,然后通过这三个参数来判断一条数据是否命中这条规则。

更进一步的,使用解析规则对udp数据包进行解析时,先根据解析规则的偏移量参数m确定udp数据包中选取数据的起始位置为第m+1个数据单位;然后根据解析规则的数据长度参数n确认udp数据包中选取数据为从第m+1个数据单位开始共n个数据单位的数据,即选取第m+1至第m+n个数据单位的数据;最后将udp数据包中选取的数据与数据值参数进行匹配,n为自然数,n为大于零的整数。本发明解析规则中的偏移量和数据长度没有限制,根据业务需求可以灵活的调整偏移量和数据长度,做到高效率的数据匹配。一般来说,偏移量和数据长度越小,匹配的速度越快,匹配效率越高。

更进一步的,udp数据包按照解析规则的顺序依次匹配,若udp数据包同时满足多个规则,按照最新匹配的规则进行分类。规则制定时,不能存在规则的命中区域完全覆盖其他规则的命中区域的情况,也就是说会出现两条规则同时匹配的情况,因此数据解析时的匹配原则是按照规则的顺序依次匹配,如果有一条数据同时满足两个规则,会对规则进行完善,避免多规则同时命中数据的情况发生,所述的最新匹配的规则即完善后的解析规则。udp数据包根据完善后的规则进行解析,并根据完善后最新出现的规则进行分类。

更进一步的,所述数据值参数使用十六进制表示。十六进制字符串是本实施例所规定的一种形式,十六进制可以将字节数组转化为字符串的长度最短,在传输时更加方便。根据数据的不同类型,也可以定义其他标准的数据形式。

更进一步的,所述数据单位为字节或字符,数据匹配时将选择数据段转化为与数据值参数相同的表示方式进行匹配。数据解析时一般都是以字节为单位,在进行文本化处理的时候也可以以字符为单位。若数据值参数使用十六进制表示,匹配时则将数据段转为十六进制表示形式。

更进一步的,udp数据包使用相同端口接收数据。统一的数据接收方式和统一接口,方便数据采集过程的统一管理和维护。

本发明udp数据包的解析方法,能提高数据采集过程的效率,简化数据采集流程,降低采集成本。

一种udp数据包解析系统,其所述解析系统包括数据发送端和数据接收端,数据接收端接收数据发送端发送的数据并使用所述的一种udp数据包解析方法进行解析。

更进一步的,数据接收端包括数据解析模块、数据匹配模块和规则存储模块,数据发送端发送媒体数据流,数据接收端接收数据发送端的数据流;数据接收端对接收到的数据流进行解析,与规则存储模块中的规则进行匹配,得到符合数据规则的数据。

本发明的解析系统自定义解析规则,设置更灵活,可用于识别各种业务类型的数据,解析规则可以无限拓展。十六进制的字节码匹配机制在匹配时,不需要完全解析整个udp数据包,即可实现数据分类,高效。统一的数据接收和管理,便于udp接收服务的正常维护和管理。

一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的一种udp数据包解析方法。

3.有益效果

相比于现有技术,本发明的优点在于:

本发明利用基于偏移量、数据长度、数据值这三个规则参数,灵活制定匹配规则,在数据传输和匹配时可以根据实际的业务数据,进行规则划分和分类,对各类业务数据进行相应的划分。由于数据参数不受限制,理论上规则数据可以无限拓展,同时该匹配规则只会截取部分字节,其以十六进制字符串形式匹配,不需要解析udp内容,能极大的提高匹配效率。

udp解析方式更加适合大规模的数据传输,对于数据传输的保障性要求不高,相对于tcp的数据传输方式,udp的传输更加轻量化。本发明针对udp数据特殊的传输场景,对传输数据进行解析分类。本发明在同一端口接收数据,也能简化其他客户端的数据接入,不会产生各类数据分开接收的情况,统一管理udpserver也能方便服务的启停,减少服务端的性能开销。

附图说明

图1为本发明的udp包解析流程原理图;

图2为本发明解析udp数据包的规则示意图。

具体实施方式

下面结合说明书附图和具体的实施例,对本发明作详细描述。

实施例

传统方式的udp数据包识别为完整解析udp数据包来进行辨识数据类别,或通过判断udp包的头部信息来识别,然而传统方式存在识别成本高,耗费资源多,同时由于udp数据包的头部信息大小固定,在规则很多的时候难以满足需求。本实施例所述一种udp数据包解析方法,如图1所示udp包解析流程原理图,数据接收后通过自定义的udp数据解析规则来识别不同类型的业务数据,对udp数据包的数据进行划分。

本实施例udp数据解析系统包括数据发送端和数据接收端,数据接收端接收数据发送端发送的数据并使用一种udp数据包解析方法进行解析。数据接收端包括数据解析模块、数据匹配模块和规则存储模块,数据发送端发送媒体数据流,数据接收端接收数据发送端的数据流;数据接收端对接收到的数据流进行解析,与规则存储模块中的规则进行匹配,得到符合数据规则的数据。

本实施例以使用javadatagrampacket方式的数据为例进行说明,在其他的设计语言中也可以使用我们的方法进行数据的分类。udp解析方式更加适合大规模的数据传输,而对于数据传输的保障性要求不高,相对于tcp等形式的数据传输,udp的传输更加轻量化。本实施例针对udp数据在传输应用场景中进行数据分类。

如图2所示udp数据包的规则示意图,本实施例自定义解析规则包括偏移量、数据长度和数据十六进制值三部分参数。通过该三部分参数对传输数据进行规则限定,在本实施例解析规则的参数中,十六进制字符串是本实施例所规定的一种形式,十六进制可以将字节数组转化为字符串的长度最短,在传输时更加方便。根据数据的不同类型,也可以定义其他标准的数据形式。

在数据解析时实用自定义规则,十分灵活,可用于识别各种业务类型的数据,识别规则可以无限拓展。基于十六进制的字节码匹配机制,识别时只需判断部分内容就可以对数据进行识别,不需要完整解析整个udp数据包即可实现数据的分类,因此数据处理速度快效率高。最后统一的数据局接收和管理,便于udp接收服务的正常维护和管理。

结合图1和图2所示,本实施例对接收到的udp数据包具体的解析时,先确定解析规则,根据业务需求编写自定义解析规则,包括偏移量、数据长度和数据十六进制值三部分参数,所述三部分参数组成一个解析规则。

图2选择一个解析规则对udp数据包进行解析,该解析规则中偏移量为四,数据长度为四,数据值为ffff。解析规则确认后,启动统一接收的udpserver,数据发送端发送数据,数据接收端根据配置的规则,对数据进行解析,通过解析规则判断一条数据是否命中,如数据命中则表示该数据有效,对命中数据采取对应的数据处理操作。

首先,所示规则定义偏移量为四,表示从数据的第五个字符开始选择数据;数据长度为四,表示获取数据的字节长度为四,即选择从第五个字节至第八个字节四个字节长度的数据,该四个字节长度的数据即在udp数据包中选取的数据段,将该段数据与解析规则中的数据值进行匹配,本发明所述方法可以灵活的定义解析规则中的偏移量和数据长度,在数据解析时根据规则参数中的偏移量和数据长度进行匹配解析,对于偏移数据中对应的字节设置为无效数据直接丢弃,若没有无效字节可直接设置偏移量为零。在数据解析时既不会造成字节浪费,也提高数据匹配效率,在进行如udp等大量数据的处理中十分适用。

图2所示解析规则中数据值为十六进制值为ffff,表示将前述udp数据包中选取的四个字节数据转换为十六进制字符串,与数据值ffff进行匹配,若数据值相同则表示匹配成功,该条数据命中当前规则,对当前数据进行进一步处理,若数据值不同则表示匹配失败,通过下一条解析规则进行匹配。数据解析时一般都是以字节为单位,在进行文本化处理的时候也可以以字符为单位。本发明通过设置解析规则,可以对数据头部标识无限拓展数据类别,在不同的业务需求时可以灵活的调整规则,做到传输空间的零浪费,节省存储资源,数据解析的规则种类和数量没有限制,提高udp数据包识别效率。

如图1所示,在udp数据包解析时的规则匹配时,根据业务需求定义n条规则,n为大于1的整数。将接收到的数据遍历所有自定义规则进行判断,若传输数据符合规则即表示命中,该数据为需要的数据。规则制定时,不能存在规则的命中区域完全覆盖其他规则的命中区域的情况,也就是说会出现两条规则同时匹配的情况,因此数据解析时的匹配原则是按照规则的顺序依次匹配,如果有一条数据同时满足两个规则,对规则进行完善重新解析匹配,根据最新出现的规则进行分类。

因为udp数据包都是字节数组,所以解析规则的参数也是通过字节数据设置,及偏移量、数据长度和数据十六进制值都是以字节为单位,其中数据十六进制值是将字节转化为十六进制表示,数据长度需和数据十六进制值匹配,否则该规则无意义,偏移量和数据长度原则来说没有长度限制,可以无限拓展,但从识别原理上,偏移量和数据长度两个值越小,解析判断时需要扫描的字节数越少,在满足规则不重复的情况下,进行规则匹配的效率也就越高。

本实施例所述udp数据包解析方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1