一种网络协议特征识别方法
技术领域
本发明属于网络协议特征识别技术领域,尤其涉及一种网络协议特征识别方法。
背景技术
目前,网络协议特征识别问题的研究主要集中在网络管理领域,传统的网络流量识别方法是使用TCP或UDP服务端口识别上层应用,由于部分应用采用随机端口或非标准通信协议,导致基于服务端口的方法存在很多弊端和缺陷,研究表明对于特定的Kazaa P2P协议,只有30%的数据来自默认端口,其余数据均来自非标准端口。研究表明基于服务端口方法的准确率不足50%。为解决这一问题,研究者利用协议本身的流测度差异(流测度主要包括数据包的大小、长度、本身特性以及数据包间的时间间隔等属性)识别协议,或者利用机器学习算法进行网络流量标识的方法,但其针对的是一般的互联网协议,并没有针对物联网二进制或JSON(JavaScript Object Notation)协议的特点。一款名为GT 的开源网络抓包工具,通过监视内核以及网络流量的到达时间来标识网络流量来自哪个应用程序,其对应用程序采用协议的标识首先通过人工阅读代码和公共文档以及观察其行为的方式来确定应用程序使用的协议列表,并根据每种协议的公共签名来标识网络流量采用的通信协议,且支持的协议仅为标准协议。
基于IPaaS的物联网异构设备自适应接入方法,通过服务器端目的IP+目的端口号的形式可以在物联网平台侧标识非标准物联网协议,由于每一种非标准物联网协议都对应一个目的IP+目的端口号且IP及端口号的资源有限,导致 IPaaS方案协议映射的可扩展性问题。
另一方面,物联网网关为不具备互联网通讯能力的设备提供接入互联网的能力,设备通信由物联网网关代理,导致IPaaS方案只能标识到网关而不能标识网关下异构的设备。例如,如下两条数据分别是温湿度传感器和地磁传感器的数据:
{"datastreams":[{"temp":"21.0","humi":"39.0","sn":"ffffff1000000c0b"}]}
{"datastreams":[{"dici":"1","sn":"ffffff1000000b9a"}]}
两种不同类型的设备将数据发送至网关,由网关通过互联网传输至物联网平台。由于是两种不同类型的设备,需要分别建立虚拟设备的数据模型,而IPaaS 的解决方案由于数据发送至同一端口,不能有效区分上述两种设备,无法实现设备数据到虚拟设备数据模型的映射。
通过上述分析,现有技术存在的问题及缺陷为:目前的网络协议特征识别方法存在识别效率或识别准确率低。
解决以上问题及缺陷的难度为:针对TCP或UDP服务端口资源有限而导致协议映射的可扩展性问题。难点现有的设备接入方法并不能完全实现设备平台侧的接入与解析,而且在于不同类型的设备在发送数据过程中,需要分别建立虚拟设备的数据模型,而在IP及端口号资源有限的条件下,提高识别非标准物联网协议的效率及准确率。
解决以上问题及缺陷的意义为:解决TCP或UDP服务端口资源有限而导致协议映射的可扩展性问题。有利于在资源受限的条件下,实现应用与物联网设备间的松耦合,提高应用的通用性。
发明内容
针对现有技术存在的问题,本发明提供了一种网络协议特征识别方法。
本发明是这样实现的,一种网络协议特征识别方法,所述网络协议特征识别方法包括:
第一步,上传部分JSON形式的数据或二进制形式的历史数据用于特征提取,触发平台网络协议特征提取特征;
第二步,针对JSON形式的数据,对数据进行校验;
第四步,通过key值提取算法提取协议特征标识并进行结果验证,如通过验证则将协议特征标识存入数据库;否则提示错误信息,进行干预。
进一步,所述网络协议特征识别方法针对二进制网络协议特征提取,进行数据的校验工作,校验成功后将数据发送至二进制网络协议数据集统一存储路径进行存储。
进一步,所述网络协议特征识别方法在有新的二进制网络协议接入时,平台会自动开启一个协议特征提取及识别的微服务,完成二进制网络协议的接入工作。
进一步包括:
(1)从二进制网络协议数据集统一存储路径读取存储有所有平台已接入的物联网二进制协议的数据集;
(2)重新计算特征向量的维度;
(3)训练集和测试集的划分;
(4)特征向量提取;
(5)利用机器学习网络协议特征识别算法进行特征提取;
(6)利用测试集数据进行网络协议特征识别准确率计算,若准确率大于等于99%则满足网络协议特征识别的需求,否则进行人工干预;
(7)在协议特征识别准确率符合需求时,将原服务停止并开启新服务替代原服务,在服务替换过程中,系统接收数据由协议适配层缓存。
进一步,所述网络协议特征识别方法的用户设备发送数据到物联网平台以验证是否接入成功或作为正式设备接入平台,平台在接收到数据后首先判断协议类型是JSON形式还是二进制形式,并执行不同的处理逻辑;针对JSON形式协议特征的识别,使用JSON数据key值提取算法完成并提取协议特征标识;针对二进制形式协议的特征识别,对待识别协议完成特征向量的提取,通过机器学习网络协议特征识别算法完成协议特征的识别并提取协议特征标识;
根据识别到的协议标识在数据库中查询对应的虚拟设备数据模型,如需进行协议转换则由协议映射模块完成原始数据到数据模型规定格式的转换,并将转换后的数据交由平台其他模块处理,并将最终结果展示在用户界面。
进一步,所述网络协议特征识别方法针对二进制形式的物联网协议,利用协议本身的流测度差异有效识别网络协议特征;通过适用于二进制网络协议的特征选择方法,提出基于朴素贝叶斯分类算法的二进制协议特征识别方法。
进一步,所述网络协议特征识别方法选取前4个字节为特征向量,最大可支持28*4=232种协议的识别,满足二进制物联网协议特征识别的需求,选取协议的前M个字节作为其特征向量,M的计算公式为:
M=min(min(L(p1)),min(L(p2)),...,min(L(pn)));
其中,L(pi)表示协议p的长度,且L(pi)≥4。
本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行下列步骤:
第一步,上传部分JSON形式的数据或二进制形式的历史数据用于特征提取,触发平台网络协议特征提取特征;
第二步,针对JSON形式的数据,对数据进行校验;
第四步,通过key值提取算法提取协议特征标识并进行结果验证,如通过验证则将协议特征标识存入数据库;否则提示错误信息,进行干预。
本发明的另一目的在于提供一种实施所述网络协议特征识别方法的网络协议特征识别系统,所述网络协议特征识别系统包括:
网络协议特征提取模块,用于实现上传部分JSON形式的数据或二进制形式的历史数据用于特征提取,触发平台网络协议特征提取模块提取特征;
数据校验模块,用于针对JSON形式的数据,对数据进行校验;
结果验证模块,用于通过key值提取算法提取协议特征标识并进行结果验证。
本发明的另一目的在于提供一种物联网异构设备,所述物联网异构设备搭载所述的网络协议特征识别系统。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:网络管理领域的网络协议特征识别方法可以用来对非标准物联网协议进行标识并不受IP 及端口号资源的限制,可以有效识别上述数据格式。但这种方法的使用也有其限制条件且识别效率或识别准确率都低于IPaaS方法,本发明通过研究非标准物联网协议的特征识别方法,对IPaaS方法作出补充,实现IPaaS+协议特征的协议标识和解析。
本发明针对TCP或UDP服务端口资源有限而导致协议映射的可扩展性问题,分别对JSON和二进制形式的非标准物联网协议进行特征提取,提出了物联网非标准协议的特征识别方法,实现了IPaaS+协议特征的协议标识和解析。
本发明使用的二进制数据来自物联网平台上的真实数据,分别为基站数据175203条,智能门锁数据73584条,77G毫米波雷达数据27726条。采用其中 75%的数据做训练集,25%的数据做测试集,测试结果如表1所示:
表1二进制网络协议特征识别准确率
|
精准率 |
召回率 |
F1得分 |
基站 |
100% |
100% |
100% |
智能门锁 |
100% |
99% |
99% |
77毫米波雷达 |
96% |
100% |
98% |
macro avg |
99% |
100% |
99% |
weighted avg |
100% |
100% |
100% |
由以上测试结果可知,基于朴素贝叶斯分类算法的二进制网络协议特征识别的平均准确率为99.63%。
证明了本发明的提出的物联网网络协议特征识别方法对比已有的网络协议其不是针对物联网场景,本发明具有解析速率高、解析准确率高的优势。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的网络协议特征识别方法流程图。
图2是本发明实施例提供的网络协议特征识别系统的结构示意图;
图中:1、网络协议特征提取模块;2、数据校验模块;3、结果验证模块。
图3是本发明实施例提供的网络协议特征识别方法实现流程图。
图4是本发明实施例提供的二进制协议数据校验与存储流程图。
图5是本发明实施例提供的二进制协议特征提取流程图。
图6是本发明实施例提供的物联网网络协议特征识别流程图。
图7是本发明实施例提供的二进制物联网协议特征分析示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种网络协议特征识别方法,下面结合附图对本发明作详细的描述。
如图1所示,本发明提供的网络协议特征识别方法包括以下步骤:
S101:上传部分JSON形式的数据或二进制形式的历史数据用于特征提取,触发平台网络协议特征提取特征;
S102:针对JSON形式的数据,对数据进行校验;
S103:通过key值提取算法提取协议特征标识并进行结果验证,如通过验证则将协议特征标识存入数据库,否则向用户提示错误信息,由系统管理人员进行人工干预。
如图2所示,本发明提供的网络协议特征识别系统包括:
网络协议特征提取模块1,用于实现上传部分JSON形式的数据或二进制形式的历史数据用于特征提取,触发平台网络协议特征提取模块提取特征。
数据校验模块2,用于针对JSON形式的数据,对数据进行校验。
结果验证模块3,用于通过key值提取算法提取协议特征标识并进行结果验证。
下面结合附图对本发明的技术方案作进一步的描述。
本发明首先在平台上传部分JSON形式的数据或二进制形式的历史数据用于特征提取,触发平台网络协议特征提取模块提取特征。针对JSON形式的数据,首先对数据进行校验,然后通过key值提取算法提取协议特征标识并进行结果验证,如通过验证则将协议特征标识存入数据库,否则向用户提示错误信息,由系统管理人员进行人工干预,如图3所示。
针对二进制网络协议特征提取,首先进行数据的校验工作,校验成功后将数据发送至二进制网络协议数据集统一存储路径进行存储,如图4所示。
如图5所示,在有新的二进制网络协议接入时,平台会自动开启一个协议特征提取及识别的微服务,完成二进制网络协议的接入工作,具体步骤如下:
(1)从二进制网络协议数据集统一存储路径读取存储有所有平台已接入的物联网二进制协议的数据集;
(2)重新计算特征向量的维度;
(3)训练集和测试集的划分;
(4)特征向量提取;
(5)利用机器学习网络协议特征识别算法进行特征提取;
(6)利用测试集数据进行网络协议特征识别准确率计算,若准确率大于等于99%则满足网络协议特征识别的需求,否则进行人工干预;
(7)在协议特征识别准确率符合需求时,将原服务停止并开启新服务替代原服务。在服务替换过程中,系统接收数据由协议适配层缓存。
如图6所示,用户设备发送数据到物联网平台以验证是否接入成功或作为正式设备接入平台,平台在接收到数据后首先判断协议类型是JSON形式还是二进制形式,并执行不同的处理逻辑。针对JSON形式协议特征的识别,使用JSON 数据key值提取算法完成并提取协议特征标识。针对二进制形式协议的特征识别,首先对待识别协议完成特征向量的提取,然后通过机器学习网络协议特征识别算法完成协议特征的识别并提取协议特征标识。
根据识别到的协议标识在数据库中查询对应的虚拟设备数据模型,如需进行协议转换则由协议映射模块完成原始数据到数据模型规定格式的转换,并将转换后的数据交由平台其他模块处理,并将最终结果展示在用户界面。
本发明研究JSON数据格式特点,通过提取KEY值作为协议特征进行网络协议的特征识别。利用阿里巴巴开源的fastjson类库操作JSON数据,利用com.alibaba.fastjson.JSONObject类中的keySet()方法实现Key值的提取。但是该方法只能提取同一层级的Key,对于JSON对象中嵌套JSON对象或数组的结构无法提取,因此需要进行递归操作提取Key值。又因为JSON数据中,同一数组中存放的数据具有相同的数据结构,具有相同的Key值,所以对于Key值的提取工作只需要提取数组中首个元素的Key值即可。
由上可知,JSON数据是具有嵌套的层次结构的,例如对于如下几种结构:
(1)"{key1:value1,key2:value2}"
(2)"{key1:{key2:value2}}"
(3)"{key1:[{key2:value2}]}"
如果直接进行key值的提取和字符串拼接操作,则以上三条数据的结果均为"key1key2",无法区分。因此需要保留原始的层级结构,由"{}"表示JSON对象及其子对象,"[]"表示数组元素的子元素,key之间使用","隔开。上述结果应为:
(1)"{key1,key2,}"
(2)"{key1,{key2,}}"
(3)"{key1,[{key2,}]}"
由于JSON的键值对为无序集合,具有在服务端接收数据后Key值顺序不固定的特点,所以在提取Key值前需要对其进行排序操作,排序后Key值的提取算法如表1所示:
表1 JSON数据结构key值提取算法伪代码
本发明针对二进制形式的物联网协议,利用协议本身的流测度差异有效识别网络协议特征。通过研究二进制协议特点,设计适用于二进制网络协议的特征选择方法,提出基于朴素贝叶斯分类算法的二进制协议特征识别方法。
如图7所示,二进制物联网协议由帧头、功能码、数据、校验码和帧尾组成,其中部分协议不包含帧尾。一般地,同一协议的帧头部分保持不变,功能码为枚举类型,数据部分由于传感器本身的特性导致其数据在一定范围内随机变化,校验位由于与协议的其他字节具有关联性所以也呈现出与其数据一致的特征,帧尾部分如果存在一般也是固定字节。
基于以上分析,二进制物联网协议整个协议帧都可以作为机器学习的特征使用,但是由于各协议长度不一而特征向量的选取具有确定的维度。因此,特征向量维度的选取是二进制网络协议特征选择的关键。
假设选取特征向量的维度为N,N值过大则导致过多不必要的计算。另一方面,假设有一协议p的最短长度为M(M<N),为了满足特征向量的维度N,需要对p进行填充,若采用固定字节填充则填充字节由于其位置概率过高而使算法的准确率大幅下降,故该方式不能满足需求。
再次分析二进制物联网协议的特点发现,帧头、功能码、数据以及校验位是所有协议共有的且至少一个字节,所以每帧数据至少含有4个字节。且协议帧的各字节作为特征向量,其先验概率呈梯度下降趋势,在特征选取时的权重选择上也呈梯度下降趋势。
假设选取前4个字节为特征向量,理论上最大可支持28*4=232种协议的识别,满足二进制物联网协议特征识别的需求,故在本发明中选取协议的前M个字节作为其特征向量,M的计算公式为:
M=min(min(L(p1)),min(L(p2)),...,min(L(pn))) (1)
其中,L(pi)表示协议p的长度,且L(pi)≥4。
下面结合测试对本发明的技术效果作详细的描述。
本发明使用真实的二进制数据,分别为基站数据175203条,智能门锁数据 73584条,77G毫米波雷达数据27726条。采用其中75%的数据做训练集,25%的数据做测试集,测试结果如表2所示:
表2二进制网络协议特征识别准确率
由以上测试结果可知,基于朴素贝叶斯分类算法的二进制网络协议特征识别的平均准确率为99.63%。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。