一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种服务端口识别方法及系统与流程

2021-10-24 14:40:00 来源:中国专利 TAG:数据传输 端口 识别 方法 系统


1.本发明涉及数据传输领域,尤其涉及一种服务端口识别方法及系统。


背景技术:

2.在进行网络数据分析时,通常需要识别网络中存在哪些服务,还需要识别通讯的方向,即通讯的双方谁是客户端谁是服务端,准确的服务端识别是网络数据分析中非常重要的环节,但是在现有的相关技术中,基本都是通过知名端口、网络数据包类型、端口大小、端口出现的次数等方面进行服务端口的识别,识别准确率不高。另外,服务端口的识别方法过于单一且存在不准确的问题。


技术实现要素:

3.本发明所要解决的技术问题是提供一种服务端口识别方法及系统。
4.本发明解决上述技术问题的技术方案如下:一种服务端口识别方法,包括:
5.步骤1,根据网络数据包得到的协议进行分类,再将所分类的协议类型对应的所述网络数据包进行识别处理,得到相应的服务端口并计算所述服务端口的置信度;
6.步骤2,将所述网络数据包输入至服务端口一对多学习子模块,通过所述服务端口一对多学习子模块识别得出第三服务端口,并计算所述第三服务端口的第三置信度;
7.步骤3,判断所述服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别。
8.本发明的有益效果是:通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
9.在上述技术方案的基础上,本发明还可以做如下改进。
10.进一步,所述步骤1具体包括:
11.若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口并计算所述第一服务端口的第一置信度;
12.若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口并计算所述第二服务端口的第二置信度。
13.进一步,所述步骤3具体包括:
14.当服务端口为第一服务端口时,判断所述第一服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第一置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别;或
15.当服务端口为第二服务端口时,判断所述第二服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第二置信度以及所述第三
置信度中置信度高的服务端口作为输出结果,完成识别。
16.进一步,通过所述服务端口一对多学习子模块识别得出第三服务端口具体为:
17.基于统计字典中,统计第一对应数量,所述第一对应数量为与所述网络数据包中的源端口有过连接的端口数量,以及统计第二对应数量,所述第二对应数量为与所述网络数据包中的目的端口有过连接的端口数量,判断所述第一对应数量以及所述第二对应数量是否大于阈值,如果只有第一对应数量大于阈值,则将源端口作为第三服务端口输出;如果只有第二对应数量大于阈值,则将目的端口作为第三服务端口输出;如果第一对应数量和第二对应数量均不大于阈值,则不输出第三服务端口;如果第一对应数量和第二对应数量均大于阈值,则比较第一对应数量和第二对应数量的大小,如果第一对应数量大,则将源端口作为第三服务端口输出,如果第二对应数量大,则将目的端口作为第三服务端口输出,如果第一对应数量和第二对应数量一样,则将目的端口作为第三服务端口输出,其中,所述统计字典由键值对组成,其中键为每个网络数据包中的源端口和目的端口,值为源端口或目的端口有过连接的端口数量。
18.进一步,若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口具体为:
19.将识别出来的tcp网络数据包输入至tcp通信服务端口识别子模块,所述tcp通信服务端口识别子模块判断所述网络数据包类型;
20.若判断类型为syn数据包,则所述网络数据包中的目的端口即为第一服务端口;
21.若判断类型为synack数据包,则所述网络数据中的源端口即为第一服务端口;
22.若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源端口与目的端口不相等,则在tcp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第一服务端口,若只搜索到目的端口,则目的端口即为第一服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第一服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第一服务端口;
23.若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源端口与目的端口相等,则,比较所述网络数据包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
24.进一步,若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口具体为:
25.则将识别出来的udp网络数据包输入至udp通信服务端口识别子模块,所述udp通信服务端口识别子模块判断目的mac地址的第一个字节的最低位是否为1;
26.若为1,则通信为多播通信,所述网络数据包中的目的端口即为第二服务端口;
27.若不为1,且所述网络数据包中的源端口与目的端口不相等,则,在udp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第二服务端口,若只搜索到目的端口,则目的端口即为第二服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第二服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第二服务端口;
28.若不为1,且所述网络数据包中的源端口与目的端口相等,则,比较所述网络数据
包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
29.进一步,计算所述服务端口的置信度具体为:
30.调用置信度计算子模块计算所述服务端口的置信度。
31.进一步,所述调用置信度计算子模块计算服务端口的置信度具体为:
32.计算服务端口不同维度的维度置信度,并根据每个维度对应的权重,将每个维度的维度置信度叠加得出总置信度,当总置信度达到第二阈值时,不再对该端口进行置信度计算;
33.其中,维度置信度c的计算公式如下:
34.c=100
×
(1

0.4
x
)
×
w
35.其中,x为满足识别条件的次数且x达到第一阈值时则不再继续增加,w为权重。
36.进一步,还包括:
37.完成识别后,在存储数据库中查找是否存在与识别出的服务端口的客户端ip地址以及识别出的服务端口的服务端ip地址相反的历史服务端口,若不存在,则将识别出的服务端口存储至存储数据库中,若存在,则判断识别出的服务端口的置信度是否小于历史服务端口的置信度,若小于,则判定识别出的服务端口错误,不进行存储,若大于,则判定历史服务端口错误,在存储数据库中删除历史服务端口相关数据,将识别出的服务端口存储至存储数据库。
38.本发明解决上述技术问题的另一种技术方案如下:一种服务端口识别系统,包括:
39.端口获取模块,用于根据网络数据包得到的协议进行分类,再将所分类的协议类型对应的所述网络数据包进行识别处理,得到相应的服务端口并计算所述服务端口的置信度;
40.端口学习模块,用于将所述网络数据包输入至服务端口一对多学习子模块,通过所述服务端口一对多学习子模块识别得出第三服务端口,并计算所述第三服务端口的第三置信度;
41.端口识别模块,用于判断所述服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别。
42.本发明的有益效果是:通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
43.进一步,端口获取模块具体用于:
44.若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口并计算所述第一服务端口的第一置信度;
45.若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口并计算所述第二服务端口的第二置信度。
46.进一步,端口识别模块具体用于:
47.当服务端口为第一服务端口时,判断所述第一服务端口与所述第三服务端口是否
一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第一置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别;或
48.当服务端口为第二服务端口时,判断所述第二服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第二置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别。
49.进一步,通过所述服务端口一对多学习子模块识别得出第三服务端口具体为:
50.基于统计字典中,统计第一对应数量,所述第一对应数量为与所述网络数据包中的源端口有过连接的端口数量,以及统计第二对应数量,所述第二对应数量为与所述网络数据包中的目的端口有过连接的端口数量,判断所述第一对应数量以及所述第二对应数量是否大于阈值,如果只有第一对应数量大于阈值,则将源端口作为第三服务端口输出;如果只有第二对应数量大于阈值,则将目的端口作为第三服务端口输出;如果第一对应数量和第二对应数量均不大于阈值,则不输出第三服务端口;如果第一对应数量和第二对应数量均大于阈值,则比较第一对应数量和第二对应数量的大小,如果第一对应数量大,则将源端口作为第三服务端口输出,如果第二对应数量大,则将目的端口作为第三服务端口输出,如果第一对应数量和第二对应数量一样,则将目的端口作为第三服务端口输出,其中,所述统计字典由键值对组成,其中键为每个网络数据包中的源端口和目的端口,值为源端口或目的端口有过连接的端口数量。
51.进一步,若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口具体为:
52.将识别出来的tcp网络数据包输入至tcp通信服务端口识别子模块,所述tcp通信服务端口识别子模块判断所述网络数据包类型;
53.若判断类型为syn数据包,则所述网络数据包中的目的端口即为第一服务端口;
54.若判断类型为synack数据包,则所述网络数据中的源端口即为第一服务端口;
55.若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源端口与目的端口不相等,则在tcp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第一服务端口,若只搜索到目的端口,则目的端口即为第一服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第一服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第一服务端口;
56.若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源端口与目的端口相等,则,比较所述网络数据包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
57.进一步,若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口具体为:
58.将识别出来的udp网络数据包输入至udp通信服务端口识别子模块,所述udp通信服务端口识别子模块判断目的mac地址的第一个字节的最低位是否为1;
59.若为1,则通信为多播通信,所述网络数据包中的目的端口即为第二服务端口;
60.若不为1,且所述网络数据包中的源端口与目的端口不相等,则,在udp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第二服
务端口,若只搜索到目的端口,则目的端口即为第二服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第二服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第二服务端口;
61.若不为1,且所述网络数据包中的源端口与目的端口相等,则,比较所述网络数据包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
62.进一步,计算所述服务端口的置信度具体为:
63.调用置信度计算子模块计算所述服务端口的置信度。
64.进一步,所述调用置信度计算子模块计算服务端口的置信度具体为:
65.计算服务端口不同维度的维度置信度,并根据每个维度对应的权重,将每个维度的维度置信度叠加得出总置信度,当总置信度达到第二阈值时,不再对该端口进行置信度计算;
66.其中,维度置信度c的计算公式如下:
67.c=100
×
(1

0.4
x
)
×
w
68.其中,x为满足识别条件的次数且x达到第一阈值时则不再继续增加,w为权重。
69.进一步,还包括:
70.错误自检模块,用于完成识别后,在存储数据库中查找是否存在与识别出的服务端口的客户端ip地址以及识别出的服务端口的服务端ip地址相反的历史服务端口,若不存在,则将识别出的服务端口存储至存储数据库中,若存在,则判断识别出的服务端口的置信度是否小于历史服务端口的置信度,若小于,则判定识别出的服务端口错误,不进行存储,若大于,则判定历史服务端口错误,在存储数据库中删除历史服务端口相关数据,将识别出的服务端口存储至存储数据库。
71.本发明解决上述技术问题的另一种技术方案如下:一种存储介质,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如上述任一项所述的一种服务端口识别方法。
72.本发明的有益效果是:通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
73.本发明解决上述技术问题的另一种技术方案如下:一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的程序,所述处理器执行所述程序时实现如上述任一项所述的一种服务端口识别方法。
74.本发明的有益效果是:通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
附图说明
75.图1为本发明一种服务端口识别方法实施例提供的流程示意图;
76.图2为本发明一种服务端口识别系统实施例提供的结构框架图。
具体实施方式
77.以下对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
78.如图1所示,本发明提供了一种服务端口识别方法,包括:
79.步骤1,根据网络数据包得到的协议进行分类,再将所分类的协议类型对应的所述网络数据包进行识别处理,得到相应的服务端口并计算所述服务端口的置信度;
80.步骤2,将所述网络数据包输入至服务端口一对多学习子模块,通过所述服务端口一对多学习子模块识别得出第三服务端口,并计算所述第三服务端口的第三置信度;
81.步骤3,判断所述服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别。
82.本发明中步骤1、步骤2和步骤3不作为限定该方法先后顺序的条件,可根据具体实施例的实际情况前后调整,比如:判定协议类型后,根据不同类型输入至不同的处理模块中处理,并得到相应的服务端口的置信度与第三置信度的计算实质上可根据情况可先可后均可。
83.在一些可能的实施方式中,通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
84.需要说明的是,接收到网络数据包后,对网络数据包进行解析,得到协议、数据包类型、端口信息、mac地址信息和ip地址信息,其中端口信息包括源端口和目的端口,对应的ip地址有源端口对应的源ip地址和目的端口对应的目的ip地址,首先根据协议进行分类,tcp协议则入tcp通信服务端口识别子模块,udp协议则进入udp通信服务端口识别子模块,在上述两个模块中会根据数据包类型等信息识别服务端口,并且调用置信度计算子模块记录该服务端口的置信度;然后通信会进入服务端口一对多学习子模块,学习到服务端口,并且调用置信度计算子模块记录该服务端口的置信度;比较udp服务端口识别子模块识别出来的服务端口置信度与服务端口一对多学习模块学习到的服务端口的置信度,或tcp服务端口识别子模块识别出来的服务端口的置信度和服务端口一对多学习模块学习到的服务端口的置信度,置信度高的认为是服务端口,该端口对应的ip地址即服务端。此外,针对置信度的计算可采用现有常规的计算方式也可以通过计算不同维度的置信度,并将置信度叠加的方式进行更精准的置信度计算,叠加算法可参考实施例2进行辅助理解。
85.优选地,在上述任意实施例中,所述步骤1具体包括:
86.若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口并计算所述第一服务端口的第一置信度;
87.若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口并计算所述第二服务端口的第二置信度。
88.优选地,在上述任意实施例中,所述步骤3具体包括:
89.当服务端口为第一服务端口时,判断所述第一服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第一置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别;或
90.当服务端口为第二服务端口时,判断所述第二服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第二置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别。
91.优选地,在上述任意实施例中,通过所述服务端口一对多学习子模块识别得出第三服务端口具体为:
92.基于统计字典中,统计第一对应数量,所述第一对应数量为与所述网络数据包中的源端口有过连接的端口数量,以及统计第二对应数量,所述第二对应数量为与所述网络数据包中的目的端口有过连接的端口数量,判断所述第一对应数量以及所述第二对应数量是否大于阈值,如果只有第一对应数量大于阈值,则将源端口作为第三服务端口输出;如果只有第二对应数量大于阈值,则将目的端口作为第三服务端口输出;如果第一对应数量和第二对应数量均不大于阈值,则不输出第三服务端口;如果第一对应数量和第二对应数量均大于阈值,则比较第一对应数量和第二对应数量的大小,如果第一对应数量大,则将源端口作为第三服务端口输出,如果第二对应数量大,则将目的端口作为第三服务端口输出,如果第一对应数量和第二对应数量一样,则将目的端口作为第三服务端口输出,其中,所述统计字典由键值对组成,其中键为每个网络数据包中的源端口和目的端口,值为源端口或目的端口有过连接的端口数量。
93.需要说明的是,服务端口一对多学习子模块:一对多关系是指一个端口如果和三个或以上的端口有过连接,则认为这个端口有可能是服务端口。将每个网络包中的源端口和目的端口分别保存在端口统计字典中,存储形式为{端口号:{ports:[连接过的端口1,连接过的端口2,...],timestamp:最近更新时间}}。端口统计字典是存在内存中的,防止占用过多内存,端口学习到以后需要及时删除字典中的相关记录,既要删除此端口本身的记录,也要删除连接过此端口的所有相关记录,并且设置保护机制,当记录大于阈值时,删除最早的记录。tcp和udp的端口统计字典是独立的,防止相互影响。
[0094]
优选地,在上述任意实施例中,若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口具体为:
[0095]
将识别出来的tcp网络数据包输入至tcp通信服务端口识别子模块,所述tcp通信服务端口识别子模块判断所述网络数据包类型;
[0096]
若判断类型为syn数据包,则所述网络数据包中的目的端口即为第一服务端口;
[0097]
若判断类型为synack数据包,则所述网络数据中的源端口即为第一服务端口;
[0098]
若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源端口与目的端口不相等,则在tcp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第一服务端口,若只搜索到目的端口,则目的端口即为第一服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第一服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第一服务端口;
[0099]
若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源
端口与目的端口相等,则,比较所述网络数据包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
[0100]
需要说明的是,tcp通信服务端口识别子模块:首先判断数据包类型,如果是syn包,则目的端口是服务端口,目的ip是服务端,如果是synack包,则源端口是服务端口,源ip是服务端;既不是syn包也不是synack包的通信,如果源端口和目的端口不相等,将源端口和目的端口分别去tcp服务端口表中匹配,即,tcp服务端口表会预置一些知名端口,匹配就是看这个通信的源端口和目的端口是否在tcp服务端口表里。如果只匹配上了一个,则以匹配上的端口就是服务端口,对应的ip就是服务端;如果两个都匹配上了,比较两个端口的置信度,置信度高的端口为服务端口,对应的ip就是服务端;如果置信度一样,端口小的为服务端口,对应的ip就是服务端,如果源端口和目的端口一样,则只去服务端口表中匹配一次,ip地址大的是服务端,对应的端口是服务端口;如果源端口和目的端口都不在tcp服务端口表中,比较源端口与目的端口的大小,端口小的为服务端口,对应的ip就是服务端,如果源端口和目的端口一样,则比较ip地址,ip地址大的是服务端,对应的端口是服务端口;最后调用置信度计算子模块,计算服务端口的置信度。
[0101]
优选地,在上述任意实施例中,若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口具体为:
[0102]
将识别出来的udp网络数据包输入至udp通信服务端口识别子模块,所述udp通信服务端口识别子模块判断目的mac地址的第一个字节的最低位是否为1;
[0103]
若为1,则通信为多播通信,所述网络数据包中的目的端口即为第二服务端口;
[0104]
若不为1,且所述网络数据包中的源端口与目的端口不相等,则,在udp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第二服务端口,若只搜索到目的端口,则目的端口即为第二服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第二服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第二服务端口;
[0105]
若不为1,且所述网络数据包中的源端口与目的端口相等,则,比较所述网络数据包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
[0106]
需要说明的是,udp通信服务端口识别子模块:首先判断目的mac地址的第一个字节的最低位是不是1,如果是1,则代表该通信是多播通信,此时目的端口就是服务端口;如果不是多播通信,如果源端口和目的端口不相等,将源端口和目的端口分别去udp服务端口表中匹配,如果只匹配上了一个,则以匹配上的端口就是服务端口,对应的ip就是服务端;如果两个都匹配上了,比较两个端口的总置信度,置信度高的端口为服务端口,对应的ip就是服务端;如果置信度一样,端口小的为服务端口,对应的ip就是服务端,如果源端口和目的端口一样,则只去服务端口表中匹配一次,ip地址大的是服务端,对应的端口是服务端口;如果源端口和目的端口都不在tcp服务端口表中,比较源端口与目的端口的大小,端口小的为服务端口,对应的ip就是服务端,如果源端口和目的端口一样,则比较ip地址,ip地址大的是服务端,对应的端口是服务端口;最后调用置信度计算子模块,计算服务端口的置信度。
[0107]
优选地,在上述任意实施例中,计算所述服务端口的置信度具体为:
[0108]
调用置信度计算子模块计算所述服务端口的置信度。
[0109]
优选地,在上述任意实施例中,所述调用置信度计算子模块计算服务端口的置信度具体为:
[0110]
计算服务端口不同维度的维度置信度,并根据每个维度对应的权重,将每个维度的维度置信度叠加得出总置信度,当总置信度达到第二阈值时,不再对该端口进行置信度计算;
[0111]
其中,维度置信度c的计算公式如下:
[0112]
c=100
×
(1

0.4
x
)
×
w
[0113]
其中,x为满足识别条件的次数且x达到第一阈值时则不再继续增加,w为权重。
[0114]
实施例1,置信度计算子模块:服务端口识别的维度有多个,但每个维度对服务端口置信度的影响不通,也就是权重不同,最后总的置信度由各个维度的置信度累加得出,服务端口识别的维度和每个维度的权重表1及表2所示:
[0115]
表1
[0116][0117]
表2
[0118][0119]
维度置信度c的计算公式如下:
[0120]
c=100
×
(1

0.4
x
)
×
w
[0121]
x代表满足条件的次数,w代表权重,c代表置信度,最终置信度是c1 c2 c3...,最高为100分。其中预置的知名服务端口的置信度是人为设置的,如果未设置则默认为0,其他项置信度的初始值都为0,当满足对应的识别条件时会在计数上加一,也就是公式中的x 1,相同主机(源ip、目的ip相同)之间的通信只加一次,随着x的增加,置信度会越来越高。公式中括号内的部分是一个从0无限趋近于1的函数,因此,每项置信度永远小于100*w,而且括号内的部分随着x的增加会增长的越来越慢。为了防止程序一直计算,当某个识别维度的x达到一定阈值时不再对该识别维度进行累加计算,并且当某个端口的总体置信度大于一定阈值时,认为此端口已经可信,不再对任何项进行计算。
[0122]
优选地,在上述任意实施例中,还包括:
[0123]
完成识别后,在存储数据库中查找是否存在与识别出的服务端口的客户端ip地址
以及识别出的服务端口的服务端ip地址相反的历史服务端口,若不存在,则将识别出的服务端口存储至存储数据库中,若存在,则判断识别出的服务端口的置信度是否小于历史服务端口的置信度,若小于,则判定识别出的服务端口错误,不进行存储,若大于,则判定历史服务端口错误,在存储数据库中删除历史服务端口相关数据,将识别出的服务端口存储至存储数据库。
[0124]
需要说明的是,有些时候服务端口识别会出现错误,例如:一个tcp连接建立成功后才开始抓包进行服务端口识别,此时是抓不到本次连接的syn或synack包的,并且如果该连接使用的服务端口在服务端口表中还没有记录,此时只能依靠端口大小来进行服务端口的识别,但是根据端口大小识别出来的服务端口有可能是错的,此时就需要错误纠正机制来进行纠正。每识别出一个服务端口时,都会记录下此连接的源ip、目的ip、服务端口和客户端口,记录形式如表3所示:
[0125]
表3
[0126]
连接客户端ip客户端port服务端ip服务端port备注a1.1.1.1100011.1.1.210000识别错误b1.1.1.1100011.1.1.29000识别错误c1.1.1.280001.1.1.110001识别正确
[0127]
每次新增记录时,都会在已有记录中查找是否存在与当前记录客户端ip和服务端ip相反的数据,这些数据中如果有客户端口等于新记录的服务端口并且服务端口的置信度小于新记录的服务端口置信度的,则认为已有记录中存在识别错误的服务端口,删除识别错误的服务端口;这些数据中如果有服务端口等于新记录的客户端口并且服务端口的置信度大于新记录的服务端口置信度的,则认为新记录的服务端口识别错误,删除识别错误的服务端口。其中,相反的数据指的是两个会话的服务端和客户端相反,会话b的客户端ip等于会话a的服务端ip,会话b的服务端ip等于会话a的客户端ip,例如:会话a的客户端ip是1.1.1.1,服务端ip是1.1.1.2,会话b的客户端ip是1.1.1.2,服务端ip是1.1.1.1。
[0128]
在上述各实施例中,虽然对步骤进行进行了编号s1、s2等,但只是本技术给出的具体实施例,本领域的技术人员可根据实际情况调整s1、s2等的执行顺序,此也在本发明的保护范围内,可以理解,在一些实施例中,可以包含如上述各实施方式中的部分或全部。
[0129]
如图2所示,一种服务端口识别系统,包括:
[0130]
端口获取模块100,用于根据网络数据包得到的协议进行分类,再将所分类的协议类型对应的所述网络数据包进行识别处理,得到相应的服务端口并计算所述服务端口的置信度;
[0131]
端口学习模块200,用于将所述网络数据包输入至服务端口一对多学习子模块,通过所述服务端口一对多学习子模块识别得出第三服务端口,并计算所述第三服务端口的第三置信度;
[0132]
端口识别模块300,用于判断所述服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别。
[0133]
在一些可能的实施方式中,通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连
接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
[0134]
优选地,在上述任意实施例中,端口获取模块100具体用于:
[0135]
若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口并计算所述第一服务端口的第一置信度;
[0136]
若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口并计算所述第二服务端口的第二置信度。
[0137]
优选地,在上述任意实施例中,端口识别模块300具体用于:
[0138]
当服务端口为第一服务端口时,判断所述第一服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第一置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别;或
[0139]
当服务端口为第二服务端口时,判断所述第二服务端口与所述第三服务端口是否一致,若一致,则输出判断结果,完成识别,若不一致,则选取所述第二置信度以及所述第三置信度中置信度高的服务端口作为输出结果,完成识别。
[0140]
优选地,在上述任意实施例中,通过所述服务端口一对多学习子模块识别得出第三服务端口具体为:
[0141]
基于统计字典中,统计第一对应数量,所述第一对应数量为与所述网络数据包中的源端口有过连接的端口数量,以及统计第二对应数量,所述第二对应数量为与所述网络数据包中的目的端口有过连接的端口数量,判断所述第一对应数量以及所述第二对应数量是否大于阈值,如果只有第一对应数量大于阈值,则将源端口作为第三服务端口输出;如果只有第二对应数量大于阈值,则将目的端口作为第三服务端口输出;如果第一对应数量和第二对应数量均不大于阈值,则不输出第三服务端口;如果第一对应数量和第二对应数量均大于阈值,则比较第一对应数量和第二对应数量的大小,如果第一对应数量大,则将源端口作为第三服务端口输出,如果第二对应数量大,则将目的端口作为第三服务端口输出,如果第一对应数量和第二对应数量一样,则将目的端口作为第三服务端口输出,其中,所述统计字典由键值对组成,其中键为每个网络数据包中的源端口和目的端口,值为源端口或目的端口有过连接的端口数量。
[0142]
优选地,在上述任意实施例中,若协议类型为tcp协议类型,对所述网络数据包进行识别处理,得到第一服务端口具体为:
[0143]
将识别出来的tcp网络数据包输入至tcp通信服务端口识别子模块,所述tcp通信服务端口识别子模块判断所述网络数据包类型;
[0144]
若判断类型为syn数据包,则所述网络数据包中的目的端口即为第一服务端口;
[0145]
若判断类型为synack数据包,则所述网络数据中的源端口即为第一服务端口;
[0146]
若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源端口与目的端口不相等,则在tcp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第一服务端口,若只搜索到目的端口,则目的端口即为第一服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第一服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第一服务端口;
[0147]
若判断类型为既不是syn数据包也不是synack数据包,且所述网络数据包中的源端口与目的端口相等,则,比较所述网络数据包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
[0148]
优选地,在上述任意实施例中,若协议类型为udp协议类型,对所述网络数据包进行识别处理,得到第二服务端口具体为:
[0149]
将识别出来的udp网络数据包输入至udp通信服务端口识别子模块,所述udp通信服务端口识别子模块判断目的mac地址的第一个字节的最低位是否为1;
[0150]
若为1,则通信为多播通信,所述网络数据包中的目的端口即为第二服务端口;
[0151]
若不为1,且所述网络数据包中的源端口与目的端口不相等,则,在udp服务端口表中搜索所述网络数据包中的源端口与目的端口,若只搜索到源端口,则源端口即为第二服务端口,若只搜索到目的端口,则目的端口即为第二服务端口,若源端口及目的端口均搜索到,则比较所述源端口及目的端口的置信度,置信度高的端口即为第二服务端口,若置信度一致,则源端口和目的端口中端口号小的端口即为第二服务端口;
[0152]
若不为1,且所述网络数据包中的源端口与目的端口相等,则,比较所述网络数据包中的源ip地址和目的ip地址的大小,如果源ip地址大,则源端口为第一服务端口,如果目的ip地址大,则目的端口为第一服务端口。
[0153]
优选地,在上述任意实施例中,计算所述服务端口的置信度具体为:
[0154]
调用置信度计算子模块计算所述服务端口的置信度。
[0155]
优选地,在上述任意实施例中,所述调用置信度计算子模块计算服务端口的置信度具体为:
[0156]
计算服务端口不同维度的维度置信度,并根据每个维度对应的权重,将每个维度的维度置信度叠加得出总置信度,当总置信度达到第二阈值时,不再对该端口进行置信度计算;
[0157]
其中,维度置信度c的计算公式如下:
[0158]
c=100
×
(1

0.4
x
)
×
w
[0159]
其中,x为满足识别条件的次数且x达到第一阈值时则不再继续增加,w为权重。
[0160]
优选地,在上述任意实施例中,还包括:
[0161]
错误自检模块,用于完成识别后,在存储数据库中查找是否存在与识别出的服务端口的客户端ip地址以及识别出的服务端口的服务端ip地址相反的历史服务端口,若不存在,则将识别出的服务端口存储至存储数据库中,若存在,则判断识别出的服务端口的置信度是否小于历史服务端口的置信度,若小于,则判定识别出的服务端口错误,不进行存储,若大于,则判定历史服务端口错误,在存储数据库中删除历史服务端口相关数据,将识别出的服务端口存储至存储数据库。
[0162]
一种存储介质,所述存储介质中存储有指令,当计算机读取所述指令时,使计算机执行如上述任一项所述的一种服务端口识别方法。
[0163]
在一些可能的实施方式中,通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
[0164]
一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的程序,处理器执行所述程序时实现如上述任一项所述的一种服务端口识别方法。
[0165]
在一些可能的实施方式中,通过对网络数据包分类,进而进行服务端口识别,可以使识别效率更快准确度更高,尤其服务端口一对多学习子模块,解决了udp通信和tcp长连接通信的服务端口难以识别的问题;另外,通过对置信度的计算,解决源端口和目的端口都是满足相同条件时识别不准确的问题,极大的提高了服务端口识别的准确率。
[0166]
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0167]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例仅仅是示意性的,例如,步骤的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个步骤可以结合或者可以集成到另一个步骤,或一些特征可以忽略,或不执行。
[0168]
上述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

onlymemory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0169]
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜