
一种自适应的物联网tcp协议动态处理系统及方法
技术领域
1.本发明属于物联网通信技术领域,具体为一种自适应的物联网tcp协议动态处理系统及方法。
背景技术:2.物联网数据传输是物联网世界最基础的协议之一,tcp代表传输控制协议,这是tcp/ip网络中使用的主要协议之一,tcp是用来保证所有数据都按顺序接收,如果没有tcp,则部分数据可能丢失或无序。由于tcp的高可靠性和高度灵活性,tcp通信协议在物联网乃至整个互联网都是广泛使用的。在设备与服务器的通信中,tcp建立连接后可以自主定义通信规则,包括数据帧头、载体、帧尾和校验位等。这种灵活性,使得设备与服务器的通信可以做到简洁高效,面对复杂业务场景也可完全自主可控。tcp协议是物联网通信领域最常用的技术。
3.申请号为:cn202210926794.9 的发明专利中,公开了一种电力物联网协议的预解析方法及其预解析系统,该系统是一种利用已有电力物联网设备协议库建立数据特征库,实现所述电力物联网协议的预解析方法的预解析的方法。在该专利中,依赖于已有电力物联网设备的协议库作为基础,建立数据特征从而实现多种协议的接入,这种对已有协议的依赖,一旦协议内容变更,或者一种新的协议加入,则需要维护人员将数据特征库进行更新操作,维护成本偏高。
4.申请号为:cn202110679810.4的发明专利中,公开了一种物联网设备通信协议包动态挂载系统及方法,针对物联网协议的多样性和多变性,将通信协议组件化,通信消息格式化,实现系统对通信协议的无差别处理。在该专利中,实现了物联网设备解析协议动态挂载,通过不同的服务端网关接收数据并给到对应的协议包进行处理成标准格式。网关通道将数据给到哪个协议包进行处理的过程逻辑需要明确判断和预处理,此处增加了系统的复杂性。
5.在申请号为:cn202010207548.9的发明专利中,公开了一种可动态扩展的智能家居协议对接系统及方法,其引入了动态协议库机制,并根据不同设备类型定义了统一的协议接口,同时通用通信模块基于不同的通信方式提供了统一的通信接口。在该专利中,利用智能家居网关设备容纳不同的协议解析程序,为不同的设备类型创建虚拟设备连接到内部系统,适用于设备类型数目不多的场景,但无法扩展到更广的领域,不具备广泛的通用性。
技术实现要素:6.本发明的目的在于提供一种自适应的物联网tcp协议动态处理系统及方法,以解决背景技术中提出的现有技术中,需要手动维护物联网协议的分发逻辑,以及不能自动识别数据对应的协议解析程序的问题。
7.为解决上述技术问题,本发明所采用的技术方案是:一种自适应的物联网tcp协议动态处理系统,包括协议分发处理模块和协议解析
程序加载模块;其中,协议分发处理模块用于处理物联网设备的tcp连接请求和请求建立后的初段数据;协议解析程序加载模块负责加载各类tcp动态解析程序包,从而支持多种多样的物联网设备;通过协议分发处理模块和协议解析程序加载模块自动处理物联网设备的连接请求以及请求建立后的初段数据,并自动加载各类tcp动态解析程序包,实现物联网tcp协议动态处理的自适应;协议分发处理模块与设备连接,并接收设备传递的数据,并将数据分发到协议解析程序加载模块用于协议的注册;协议分发处理模块还与数据特征库连接,数据特征库用于记录数据帧的处理情况并用于后续的分发判断逻辑;协议分发处理模块对数据的分发具体为:协议分发处理模块获取到设备连接之后的首帧特征串之后,在数据特征库中查询当前连接拿到的首帧特征串与数据特征库中记录的数据的相似度,根据匹配程度的高低,由高到低向下层协议解析程序进行分发,如果存在相同匹配度的记录,则按照匹配次数由高到低排序。
8.根据上述技术方案,将当前匹配的数据根据匹配度由高到低,按序调用协议解析程序的处理方法进行尝试解析,如果当前解析程序解析成功则认为找到了正确的解析程序,否则继续循环,让下一个解析程序尝试,并将该设备连接的后续通信数据绑定到当前的协议解析程序,并更新数据特征库的匹配次数;如果此过程中,未发现匹配的协议解析程序,则判定为该设备连接为无效连接,后续数据不再处理,并关闭此次连接。
9.根据上述技术方案,首帧特征串具体为:首先协议分发处理模块获取到连接设备发上来的第一帧数据包,截取第一帧数据包的前30%和后20%的字节,将截取的前30%字节作为头部,将后20%字节作为尾部,组合形成首帧特征串。
10.根据上述技术方案,数据特征库查询匹配方法具体为:已知变量:n:特征串的长度;m:相同的字节数量;r:两个特征串重叠部分长度;那么给出定义:相似度 q = (m^2/r^2)
ꢀ×ꢀ
(r/n)。
11.根据上述技术方案,协议分发处理模块还用于数据特征库的维护,具体为:当协议分发处理模块得到了正确的协议解析程序后,如果当前的数据特征库记录相似度低于预设阈值,则新建一条数据特征库记录,从而优化匹配速率。
12.根据上述技术方案,协议解析程序加载模块的动态加载具体为:采用java原生spi机制和自定义类加载器实现,协议解析程序实现分发处理以及协议注册,协议解析程序加载模块加载解析程序的jar包,运行和使用该协议解析程序。
13.一种自适应的物联网tcp协议动态处理方法,包括以下步骤:步骤s1,协议分发处理模块接受设备连接,并获取第一帧数据包,获得首帧特征串;步骤s2,在数据特征库中查询数据特征库中的数据记录,并将数据特征库中的数
据记录与首帧特征串进行匹配,根据匹配度由高到低得到协议解析程序的注册名称数组;步骤s3,根据步骤s2中得到的协议解析程序的注册名称数组,按照注册名称数组由前到后的顺序,逐次将第一帧数据包分发到对应的协议解析程序;从而能够从不同协议解析程序中,快速找到正确的协议解析程序,减少循环和尝试次数;步骤s4,协议解析程序处理分发下来的第一帧数据包后,向协议分发处理模块反馈是否处理成功,如果成功,则继续进行,如果失败则跳转回到步骤s3中重新执行,直至处理成功或者循环结束,循环结束即整个数组都完成循环仍然没有成功;步骤s5,协议分发处理模块更新数据特征库,如果首帧特征串与步骤s1中匹配到当前协议解析程序的数据记录的相似度低于预设阈值,就在数据特征库新建特征记录,更新数据特征库;否则,更新当前记录的匹配成功次数;成功次数,在相同匹配度的情况下,次数越多的记录,在协议分发的时候越优先;步骤s6,协议分发处理模块将该连接下的所有后续数据绑定到当前的协议解析程序;分发处理模块找到正确的协议解析程序,就完成了工作,设备是长连接通信,此处后续数据是指,第2、3、4、5....帧数据;步骤s7,结束。
14.与现有技术相比,本发明具有以下有益效果:本发明中所描述的方案,将维护一种自适应的协议分发,并可动态扩展的协议处理系统。无需使用者手动维护数据特征库,并且能够满足多种设备同时使用同一个连接入口。通过自适应的协议分发机制,可以简化服务器的网络构架,节约服务器的网络通信资源。让同一个通信端口适配于各种不同的设备通信数据格式。同时开发者可在协议解析程序加载模块的框架下,不断新增设备协议的具体实现,无需关注上层数据的分发逻辑,专注于协议本身的开发,提升设备数据对接的效率,也减少了服务器网络维护沟通成本。
附图说明
15.图1为本发明系统结构示意图;图2为本发明方法流程图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.实施例一如图1所示,一种自适应的物联网tcp协议动态处理系统,包括协议分发处理模块和协议解析程序加载模块;其中,协议分发处理模块用于处理物联网设备的tcp连接请求和请求建立后的初段数据;协议解析程序加载模块负责加载各类tcp动态解析程序包,从而支持多种多样的物联网设备;协议分发处理模块与设备连接,并接收设备传递的数据,并将数据分发到协议解析程序加载模块用于协议的注册;协议分发处理模块还与数据特征库连接,数据特征库用
于记录数据帧的处理情况并用于后续的分发判断逻辑。
18.本发明中所描述的方案,将维护一种自适应的协议分发,并可动态扩展的协议处理系统。无需使用者手动维护数据特征库,并且能够满足多种设备同时使用同一个连接入口。通过自适应的协议分发机制,可以简化服务器的网络构架,节约服务器的网络通信资源。让同一个通信端口适配于各种不同的设备通信数据格式。同时开发者可在协议解析程序加载模块的框架下,不断新增设备协议的具体实现,无需关注上层数据的分发逻辑,专注于协议本身的开发,提升设备数据对接的效率,也减少了服务器网络维护沟通成本。
19.实施例二本实施例为实施例一的进一步细化。协议分发处理模块对数据的分发具体为:协议分发处理模块获取到设备连接之后的首帧特征串之后,在数据特征库中查询当前连接拿到的首帧特征串与数据特征库中记录的数据的相似度,根据匹配程度的高低,由高到低向下层协议解析程序进行分发,如果存在相同匹配度的记录,则按照匹配次数由高到低排序;例如,很多物联网采集到的都是二进制数据,或者私有协议格式数据流,设备端又不具备转换成结构化json的能力,需要服务器根据设备的协议文档将二进制串进行解译,目的就是将二进制串解析成结构化数据,方便业务平台存储和处理。例如某一段数据的第3个二进制位到第8个二进制为是100100,协议文档中表明这几个二进制位表示温度的话,应该将其在程序中正确解译为36摄氏度。
20.将当前匹配的数据根据匹配度由高到低,按序调用协议解析程序的处理方法进行尝试解析,如果当前解析程序解析成功则认为找到了正确的解析程序,否则继续循环,让下一个解析程序尝试,并将该设备连接的后续通信数据绑定到当前的协议解析程序,并更新数据特征库的匹配次数;如果此过程中,未发现匹配的协议解析程序,则判定为该设备连接为无效连接,后续数据不再处理,并关闭此次连接。
21.首帧特征串具体为:首先协议分发处理模块获取到连接设备发上来的第一帧数据包,截取第一帧数据包的前30%和后20%的字节,将截取的前30%字节作为头部,将后20%字节作为尾部,组合形成首帧特征串。
22.数据特征库查询匹配方法具体为:已知变量:n:特征串的长度;m:相同的字节数量;r:两个特征串重叠部分长度;那么给出定义:相似度 q = (m^2/r^2)
ꢀ×ꢀ
(r/n)。
23.协议分发处理模块还用于数据特征库的维护,具体为:当协议分发处理模块得到了正确的协议解析程序后,如果当前的数据特征库记录相似度低于预设阈值,则新建一条数据特征库记录,从而优化匹配速率。
24.协议解析程序加载模块的动态加载具体为:采用java原生spi机制和自定义类加载器实现,协议解析程序实现分发处理以及协议注册,协议解析程序加载模块加载解析程序的jar包,运行和使用该协议解析程序。
25.实施例三本发明的发明构思为:1、设备的数据接收:此处无论何种设备,均采用固定的一个或者几个服务端口地址,无需根据设备类型作为特殊区分。
26.2、协议的注册:开发者开发不同的协议解析程序,注册到分发模块,注册字段仅需要协议的名称即可,不同协议的名称不可重复。
27.3、数据的分发:协议分发处理模块获取到设备连接之后的首帧特征串之后,在数据特征库中查询匹配,根据匹配程度的高低,由高到低向下层协议解析程序进行分发,如果存在相同匹配度的记录,则按照匹配次数由高到低排序。直至分发后回馈处理成功,则将此连接的数据量绑定到该协议解析程序,并更新数据特征库的匹配次数。如果此过程中,未发现匹配的协议解析程序,则丢弃并关闭设备连接。
28.此处的首帧特征串是指:首先获取到分发设备发上来的第一帧数据包,截取特征串的前30%和后20%的字节连成的串。tcp通信设备的帧数据基本是由帧头、数据域、帧尾构成的数据,而帧头往往携带更多的字节数据,经过多种类型设备数据比对,第一帧数据包的前30%和后20%能够确保相同设备类型的特征串相似度更高,增加了特征串的匹配度。当然,此比例并非固定,在此处只是初步定义,可进行适当调整优化。
29.数据特征库查询匹配方法采用相似度算法,将首段特征串16进制的字符串,与数据特征库已存在的特征记录进行算法匹配,具体:已知变量:n:特征串的长度;m:相同的字节数量;r:两个特征串重叠部分长度;那么给出定义:相似度 q = (m^2 / r^2)
ꢀ×ꢀ
(r / n)。
30.4、数据特征库的维护:数据特征库,记录数据帧的处理情况并用于后续的分发判断逻辑,核心字段:首帧特征串、协议解析程序名称、匹配次数。
31.当协议分发处理模块得到了正确的协议解析程序后,如果当前的数据特征库记录相似度低于预设阈值(预设阈值为50%),则新建一条数据特征库记录,从而优化匹配速率。预设阈值50%为系统的预设阈值,在实际的使用过程中,可以根据实际运行情况对预设阈值进行调整,通过此参数的调整可以优化匹配效率和准确率,预设阈值越低越有利于提高准确率,预设阈值越高越利于提高匹配效率。
32.5、协议解析程序的动态加载:此处采用java原生spi机制和自定义类加载器实现,协议解析程序实现分发处理接口以及协议注册接口即可,协议解析程序加载解析程序的jar包即可,运行和使用该解析程序。
33.如图2所示,典型的数据处理流程:步骤一:协议分发处理模块接受设备连接,并获取首侦数据,获得首帧特征串。
34.步骤二:在数据特征库中查询匹配首帧特征串,根据匹配度由高到低得到协议解
析程序注册名称数组。
35.步骤三:按照协议数组优先到后逐次将第一帧数据包分发到对应的协议解析程序。
36.步骤四:协议解析程序处理分发下来的第一帧数据包后,回馈是否处理成功,如果失败则回到步骤三的循环中,直至处理成功或者循环结束。
37.步骤五:协议分发处理模块更新数据特征库,如果首帧特征串相似度低于50%,新建特征记录,否则,更新当前记录的匹配成功次数。
38.步骤六:协议分发处理模块将该连接下的所有后续数据绑定到当前的协议解析程序。分发处理模块找到正确的协议解析程序,就完成了工作,设备是长连接通信,此处后续数据是指,第2、3、4、5....帧数据。
39.步骤七:完成。
40.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
41.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。