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

流量获取方法、装置、电子设备和存储介质与流程

2022-06-29 22:27:31 来源:中国专利 TAG:


1.本发明涉及网络安全技术领域,尤其涉及一种流量获取方法、装置、电子设备和存储介质。


背景技术:

2.随着人们安全意识的提升,现在基本所有的网站都会采用超文本传输安全协议(hyper text transfer protocol over securesocket layer,https),使用https协议使恶意攻击者无法从网络流量中破解出通信数据,但是这样也造成了一个问题,就是公司内部的流量检测设备也无法对流量内容进行检测。
3.相关技术中,如图1所示,通过将客户端与全球广域网(world wide web,web)服务器之间通信的流量镜像到流量检测设备,并且将web服务器的证书私钥配置在流量检测设备上,流量检测设备通过web服务器的证书私钥来解密流量,再检测流量中的数据。
4.但上述相关技术中,流量检测设备通过web服务器的证书私钥只能解密使用rsa加密算法加密的流量,无法解密使用密钥交换协议(diffie-hellman,dh)算法等加密的流量,从而降低了流量检测设备对网站的防护。


技术实现要素:

5.针对现有技术存在的问题,本发明提供一种流量获取方法、装置、电子设备和存储介质。
6.本发明提供一种流量获取方法,应用于解密设备,所述解密设备串联在客户端和服务器的通信连接之间;包括:
7.接收所述客户端发送的原始通信数据;其中,所述原始通信数据为所述客户端通过所述解密设备向所述服务器转发的数据,或者所述服务器通过所述解密设备向所述客户端返回的数据;
8.对所述原始通信数据进行解密,得到解密后的流量数据;
9.基于所述流量数据生成流量日志文件;
10.将所述流量日志文件转化为流量数据包;
11.将所述流量数据包发送至流量检测设备。
12.根据本发明提供的一种流量获取方法,所述解密设备包括envoy架构,所述envoy架构配置有监听模块;
13.所述接收所述客户端发送的原始通信数据,包括:
14.通过所述监听模块接收所述客户端发送的所述原始通信数据。
15.根据本发明提供的一种流量获取方法,所述envoy架构还配置有日志生成模块和集群管理模块;所述原始通信数据为所述客户端依次通过所述监听模块和所述集群管理器后向所述服务器转发的数据;
16.所述基于所述流量数据生成流量日志文件,包括:
17.通过所述日志生成模块按照预设格式将所述流量数据生成所述流量日志文件。
18.根据本发明提供的一种流量获取方法,所述解密设备还包括流量构造模块;所述流量构造模块包括依次连接的文件监控子模块、解码子模块、数据包构造子模块和发送子模块;
19.所述将所述流量日志文件转化为流量数据包,包括:
20.通过所述文件监控子模块监控所述流量日志文件,并将所述流量日志文件存储在文件队列中;
21.通过所述解码子模块从所述文件队列中获取所述流量日志文件,根据所述预设格式将所述流量日志文件进行解析,并将解析得到的结构化数据发送至所述数据包构造子模块;
22.通过所述数据包构造子模块基于所述结构化数据构造所述流量数据包;
23.所述将所述流量数据包发送至流量检测设备,包括:
24.通过所述发送子模块从数据包队列中获取所述流量数据包,并将所述流量数据包发送至所述流量检测设备。
25.根据本发明提供的一种流量获取方法,所述解码子模块包括文件监控子模块和解析子模块;
26.所述通过所述解码子模块从所述文件队列中获取所述流量日志文件,根据所述预设格式将所述流量日志文件进行解析,并将解析得到的结构化数据发送至所述数据包构造子模块,包括:
27.通过所述文件监控子模块对所述文件队列进行监控,在监控到所述文件队列中写入所述流量日志文件时,获取所述流量日志文件,并将所述流量日志文件发送至所述解析子模块;
28.通过所述解析子模块根据所述预设格式对所述流量日志文件进行解析,并将解析得到的结构化数据发送至所述数据包构造子模块。
29.根据本发明提供的一种流量获取方法,所述通过所述数据包构造子模块基于所述结构化数据构造所述流量数据包,包括:
30.通过所述数据包构造子模块基于网卡的最大传输单元和滑动窗口将所述结构化数据进行切割;
31.基于切割后的通信数据构造所述流量数据包。
32.根据本发明提供的一种流量获取方法,所述基于切割后的通信数据构造所述流量数据包,包括:
33.将所述切割后的通信数据填充到第一用户数据字段中,并构造第一以太网头部、第一ip头部和第一tcp头部,得到tcp流量数据包。
34.根据本发明提供的一种流量获取方法,所述基于切割后的通信数据构造所述流量数据包,包括:
35.将所述切割后的通信数据填充到第二用户数据字段中,并构造第二以太网头部、第二ip头部、gre头部、第三ip头部和第二tcp头部,得到gre流量数据包。
36.本发明还提供一种流量获取装置,应用于解密设备,所述解密设备串联在客户端和服务器的通信连接之间;包括:
37.接收单元,用于接收所述客户端发送的原始通信数据;其中,所述原始通信数据为所述客户端通过所述解密设备向所述服务器转发的数据,或者所述服务器通过所述解密设备向所述客户端返回的数据;
38.解密单元,用于对所述原始通信数据进行解密,得到解密后的流量数据;
39.生成单元,用于基于所述流量数据生成流量日志文件;
40.转化单元,用于将所述流量日志文件转化为流量数据包;
41.发送单元,用于将所述流量数据包发送至流量检测设备。
42.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述流量获取方法的步骤。
43.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述流量获取方法的步骤。
44.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述流量获取方法的步骤。
45.本发明提供的一种流量获取方法、装置、电子设备和存储介质,在客户端和服务器的通信连接之间串联解密设备,通过解密设备将客户端发送的原始通信数据转发至服务器,解密设备在接收到客户端发送的原始通信数据时,对原始通信数据进行解密,并基于解密后得到的流量数据生成流量日志文件,最后将流量日志文件转化为流量数据包后发送至流量检测设备。这样,流量检测设备获取到的流量数据包为非加密的数据包,能够实现对流量数据的检测,从而提高了流量检测设备对网站的防护。
附图说明
46.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1是现有技术中流量获取架构的结构示意图;
48.图2是本发明提供的流量获取方法的流程示意图之一;
49.图3是本发明提供的流量获取架构的结构示意图之一;
50.图4是本发明提供的envoy架构的结构示意图;
51.图5是本发明提供的tcp数据包在网络中传输的数据格式的示意图;
52.图6是本发明提供的可变长度的proto buffer格式的示意图;
53.图7是本发明提供的流量日志文件的格式示意图;
54.图8是本发明提供的流量构造模块的结构示意图;
55.图9是本发明提供的流量获取方法的流程示意图之二;
56.图10是本发明提供的实时读取流量日志文件的流程示意图;
57.图11是本发明提供的基于最大传输单元和滑动窗口机制发送数据的示意图;
58.图12是本发明提供的gre流量数据包的格式示意图;
59.图13是本发明提供的流量获取架构的结构示意图之二;
60.图14是本发明提供的流量获取装置的结构示意图;
61.图15是本发明提供的电子设备的实体结构示意图。
具体实施方式
62.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.下面结合图2-图13描述本发明的流量获取方法,应用于基于https协议的通信场景。
64.图2是本发明提供的流量获取方法的流程示意图之一,应用于解密设备,所述解密设备串联在客户端和服务器的通信连接之间;服务器可以为web服务器,如图2所示,该流量获取方法包括以下步骤:
65.步骤201、接收所述客户端发送的原始通信数据。
66.其中,所述原始通信数据为所述客户端通过所述解密设备向所述服务器转发的数据,或者所述服务器通过所述解密设备向所述客户端返回的数据。
67.示例地,图3是本发明提供的流量获取架构的结构示意图之一,如图3所示,客户端通过解密设备与服务器连接,流量检测设备与解密设备连接,且解密设备还与流量检测设备连接;客户端在向服务器发送原始通信数据时,首先发送给解密设备,由解密设备再将原始通信数据转发给服务器。也就是说,解密设备可以看作为服务器的一层代理,可以通过解密设备转发数据完成客户端与服务器之间的通信,保证服务器的正常工作;解密设备在转发原始通信数据的过程中,也就获取到了客户端的原始通信数据。
68.需要说明的是,实际应用中,解密设备可以部署在服务器端,也可以为单独的设备,本发明对此不作限定。
69.步骤202、对所述原始通信数据进行解密,得到解密后的流量数据。
70.示例地,在现有技术中,是通过将客户端和服务器之间通信的流量镜像到流量检测设备,并且需要将服务器的证书私钥配置在流量检测设备上,然后流量检测设备通过证书私钥来解密镜像得到的流量,再检测流量中的数据;但是流量检测设备在通过证书私钥解密流量时,只能解密使用rsa加密算法的流量,而无法解密dh加密算法的流量,具体原因如下:
71.首先介绍rsa加密算法的https通信原理:可以分为以下几个步骤:
72.1)客户端发送client hello包,并随机生成一个client random的随机数,将其发送给服务器;
73.2)服务器返回带公钥的服务器证书,以及随机生成一个server random的随机数,将其返回给客户端;
74.3)客户端收到服务器证书,服务器证书校验通过后会随机生成一个premaster secret秘钥;
75.4)客户端提取服务器证书中的公钥,并通过公钥加密premaster secret,然后将其发送给服务器;
76.5)服务器收到后可以通过证书私钥解密数据,获取premaster secret秘钥。至此,服务器与客户端都已经保存client random,server random,premaster secret这3个随机数。然后服务器和客户端两边可以通过约定的算法,通过这3个数来生成会话使用的秘钥session key;
77.6)客户端和服务器都有了这个session key后就可以通过对称加密来发送数据。
78.通过以上通信过程可以看出,如果想要破解通信的数据,那么就需要有这个session key来解密,或者需要获得client random,server random,premaster secret这3个随机数,然后再来生成session key。过程中的前两个步骤的通信都是明文情况,所以在有通信流量的情况下,client random,server random这两个随机数是可以拿到的,主要问题就是premaster secret这个随机秘钥了,因为这个premaster secret秘钥在通信过程中只会出现一次,就是客户端通过证书公钥将其加密发送给服务器。在没有服务器证书私钥的情况下,即使有通信的流量,也没有办法解密出这个premaster secret。所以,流量检测设备上要检测https流量就必须得配置上服务器证书私钥。流量检测设备配置了服务器证书私钥后,就可以解密出premaster secret,至此,已经从流量中获取了client random,server random,premaster secret这3个随机数,就可以生成session key这个对称秘钥,通过生成的session key就可以解密客户端和服务器互相发送的数据了。
79.再介绍dh加密算法,首先对dh加密算法进行简单概述:
80.1)a随机生成一个数,作为自己的私钥a,计算公钥xa=gamod p,然后将xa告诉b。
81.2)b随机生成一个数,作为自己的私钥b,计算公钥xb=gbmod p,然后将xb告诉a。
82.3)b根据xa和b,计算出秘钥
83.k1=xabmod p
84.4)a根据xb和a,计算出秘钥
85.k2=xbamod p
86.换算可以得出:
87.k1=xabmod p=(gamod p)bmod p=g
ab
mod p
88.k2=xbamod p=(gbmod p)amod p=g
ab
mod p
89.k1==k2
90.可以看到,两边计算出的秘钥k1是等于k2的,私钥a,b不被外部所知,只有xa、xb、g、p是公开的。而仅仅知道这几个数,是没有办法算出秘钥的。
91.了解了dh加密算法后,再介绍hd加密算法的https通信原理:可以分为以下几个步骤:
92.1)客户端发送client hello包,并且随机生成一个client random的随机数,将其发送给服务器;
93.2)服务器返回带公钥的服务器证书,以及随机生成一个server random的随机数,将其返回给客户端;
94.3)服务器发送server dh参数,对应上面dh加密算法的描述,若b是服务器,则发送的数据有xb,p,g。此处发送数据会使用证书私钥签名;
95.4)客户端使用公钥验证签名,校验通过后,给服务器发送client dh参数。对应上面dh算法描述,若a是客户端,则发送的是xa。并且发送的数据会使用公钥加密;
96.5)此时客户端和服务器都拥有所有的dh参数,可以通过这些参数计算出秘钥,计算出的秘钥即为premaster key;
97.6)客户端和服务器都通过client random,server random,premaster secret三个随机值计算出后续通信所使用的对称秘钥session key;
98.7)客户端和服务器都有了这个session key后就可以通过对称加密来发送数据。
99.从上述步骤中可以看到,与rsa加密算法相同的是,服务器和客户端都是通过client random,server random,premaster secret这3个随机数来计算后续通信使用的对称秘钥,但是使用dh算法后premaster secret将不会通过网络传输。即使在有服务器证书私钥的情况下,能够从网络流量中还原出来的信息,也只有client random,server random和dh参数,仅仅依靠这些信息不足以计算出premaster secret,更没法计算出后面通信的加密密钥session key。
100.另外,由于流量检测设备为第三方设备,而解密设备实质可以为服务器中的一个软件,且本发明是为了对客户端与服务器之间的通信数据进行安全防护,所以,服务器本身的安全性高于第三方的流量检测设备;所以在解密设备中存储预先与客户端协商好的解密算法的安全性可以得到保证,若将预先与客户端协商好的解密算法存储在第三方设备,安全性无法保证。
101.鉴于此,本发明在客户端和服务器之间串联解密设备,对原本服务器做一层代理,解密设备在代理的过程中可以接收到客户端发送的原始通信数据,并基于预先与客户端协商好的解密算法对原始通信数据进行解密,得到解密后的流量数据;具体基于解密算法对原始通信数据的解密方法可参考相关技术,本发明在此不再赘述。
102.需要说明的是,解密算法可以为采用rsa加密算法的https协议对应的解密算法,也可以为采用dh加密算法的https协议对应的解密算法,还可以为采用其他加密算法的https协议对应的解密算法,本发明对此不作限定。
103.步骤203、基于所述流量数据生成流量日志文件。
104.示例地,在解密得到流量数据时,将该流量数据以日志文件的形式存储下来,也就是基于流量数据生成流量日志文件,并将该流量日志文件存储在对应位置。
105.步骤204、将所述流量日志文件转化为流量数据包。
106.示例地,由于流量检测设备只能检测数据包格式的流量,所以,在生成流量日志文件后,还需要将流量日志文件转化为流量数据包。
107.步骤205、将所述流量数据包发送至流量检测设备。
108.示例地,在将流量日志文件转化为流量数据包后,就可以将流量数据包发送至流量检测设备,便于流量检测设备对该流量数据包进行检测,完成对网站的防护。
109.本发明提供的一种流量获取方法,在客户端和服务器的通信连接之间串联解密设备,通过解密设备将客户端发送的原始通信数据转发至服务器,解密设备在接收到客户端发送的原始通信数据时,对原始通信数据进行解密,并基于解密后得到的流量数据生成流量日志文件,最后将流量日志文件转化为流量数据包后发送至流量检测设备。这样,流量检测设备获取到的流量数据包为非加密的数据包,能够实现对流量数据的检测,从而提高了流量检测设备对网站的防护。
110.可选地,所述解密设备包括envoy架构,所述envoy架构配置有监听模块,图2中的
步骤201具体可通过以下步骤实现:
111.通过所述监听模块接收所述客户端发送的所述原始通信数据。
112.示例地,图4是本发明提供的envoy架构的结构示意图,如图4所示,envoy架构配置有监听模块,envoy是专为大型现代面向服务架构(soa)设计的一个开源的l7代理。envoy是用c 11编写的,性能高效且开源;高级负载均衡,支持自动重试、熔断、通过外部速率限制服务的全局速率限制和请求映射等功能;而且envoy自带日志生成模块(traffic tapping),可以将原始通信数据以日志形式保存下来。
113.示例地,envoy架构支持在单个进程中启用任意数量的监听模块(listener),listener可以接收客户端的发送的原始通信数据,并且每个listener上可以配置多个过滤器,也可以不配置过滤器;在不配置过滤器时,listener将所有接收到的数据都路由到了集群管理模块。
114.可选地,如图4所示,所述envoy架构还配置有日志生成模块和集群管理模块,所述原始通信数据为所述客户端依次通过所述监听模块和所述集群管理器后向所述服务器转发的数据;图2中的步骤203具体可通过以下步骤实现:
115.通过所述日志生成模块按照预设格式将所述流量数据生成所述流量日志文件。
116.示例地,如图4所示,envoy架构除了配置有监听模块之外,还配置有日志生成模块和集群管理模块;其中,客户端依次通过监听模块和集群管理模块后与服务器连接,日志生成模块与监听模块的输出端连接,且日志生成模块与流量检测模块连接。
117.日志生成模块可以为envoy中配置的traffic tapping,traffic tapping的配置可通过代码实现;traffic tapping的本质是在原始通信数据转发的过程中,将原始通信数据按照预设格式以日志的形式进行记录,生成流量日志文件;具体流量日志文件的内容基于原始通信数据确定;https是基于传输控制协议(transmission control protocol,tcp)的应用层协议,tcp数据包在网络中传输的数据格式如图5所示,一个tcp数据包包含以太网头部、网际互连协议(internet protocol,ip)头部、tcp头部和tcp payload段的用户数据。客户端发送一条tcp消息,tcp消息会被切割成多个tcp payload段大小的内容,然后再封装成一个一个的数据包发送出去;内核中的网络协议栈会将接收到的每个数据包重组,提取tcp payload数据并组合。envoy记录的流量日志文件的内容即为这些组合后的tcp payload数据。
118.另外,日志格式有内容为字节数据的json格式、内容为字符串类型的json格式、proto buffer格式、可变长度的proto buffer格式和文本类型的proto buffer格式等,综合解析性能和流程生成的实时性,本发明的预设格式采用可变长度的proto buffer格式,图6是本发明提供的可变长度的proto buffer格式的示意图,数据的最前面是tag,tag包括field_number和write_type,其中,field_number表示第一个字段的编号,write_type表示接下来的编码格式;使用可变长度的proto buffer格式的话,write_type等于2;在tag之后是一个length,length代表后面的数据value长度,最后的value就是实际数据。由此可知,整个流量日志文件的格式如图7所示,包括多个tag、length和value的组合。
119.需要说明的是,监听模块还可以将客户端发送的原始通信数据(例如,用户请求),根据不同的统一资源定位系统(uniform resource locator,url)或者域名等条件路由到不同的集群管理模块(cluster)。在cluster中可以配置上服务器的原本服务。listener将
原始通信数据(例如,用户请求)路由到了cluster后,由cluster负责与后端真实的服务器建立连接;并且cluster支持负载均衡,可以配置多个https服务,通过指定的负载均衡策略将用户请求路由到不同的https服务。例如,envoy配置了一个名为service-https的cluster,该cluster中只配置了一个https服务https://10.91.3.83:443,客户端的用户请求经过listener路由到该cluster后,该cluster会直接将用户请求转发到https://10.91.3.83:443。
120.可选地,所述解密设备还包括流量构造模块;图8是本发明提供的流量构造模块的结构示意图,如图8所示,流量构造模块的输入为上述envoy产生的流量日志文件,流量构造模块的输出是发送至流量检测设备的流量数据包;所述流量构造模块包括依次连接的文件监控子模块(dirmontior)、解码子模块(filetailer)、数据包构造子模块(tcpflow)和发送子模块(pktsender)。
121.可选地,图9是本发明提供的流量获取方法的流程示意图之二,如图9所示,图2中的步骤204具体可通过以下步骤实现:
122.步骤2041、通过所述文件监控子模块监控所述流量日志文件,并将所述流量日志文件存储在文件队列中。
123.示例地,inotify是一个内核用于通知用户空间程序文件系统变化的机制。如文件创建、文件修改或者文件删除等事件,可以立刻让用户态得知;dirmontior可以通过inotify对envoy流量日志目录监控,获取日志目录内的文件创建事件,通过监控文件创建事件,可以获取到目录内新建的文件,即获取到流量日志文件,然后将流量日志文件加入到文件队列中。
124.步骤2042、通过所述解码子模块从所述文件队列中获取所述流量日志文件,根据所述预设格式将所述流量日志文件进行解析,并将解析得到的结构化数据发送至所述数据包构造子模块。
125.可选地,所述解码子模块包括文件监控子模块和解析子模块;步骤2042具体可通过以下方式实现:
126.通过所述文件监控子模块对所述文件队列进行监控,在监控到所述文件队列中写入所述流量日志文件时,获取所述流量日志文件,并将所述流量日志文件发送至所述解析子模块;
127.通过所述解析子模块根据所述预设格式对所述流量日志文件进行解析,并将解析得到的结构化数据发送至所述数据包构造子模块。
128.示例地,filetailer是针对单个日志文件的处理,并且可以同时开启多个filetailer并发处理多个日志文件。filetailer的输入是单路通信的流量日志文件,流量日志文件在一路链接建立时被创建,直到链接断开,该流量日志文件在此期间,会随时有数据写入;为了保证流量数据包生成的实时性,本发明采用类似linux tail-f的方式实时读取流量日志文件,图10是本发明提供的实时读取流量日志文件的流程示意图,如图10所示,filetailer首先启动文件监控协程监控日志文件变化事件,在监控到日志文件发生变化时,开始读取流量日志文件,并将读取到的内容发送到解析模块,通过解析模块根据预设格式对流量日志文件进行解析,并将解析得到的结构化数据发送至数据包构造子模块;当读取eof(eof表示已经读完流量日志文件的所有内容)时,则阻塞在此,等待信号再进行下一
步操作。等待的信号有两种,一种是文件监控协程发来的日志文件有新内容写入的信号,收到日志文件内容变更信号,则继续循环读取文件。另一个信号是tcpflow发送的通信已经结束的信号,tcpflow可以通过数据内容辨别是否通信结束,收到通信已经结束的信号后,则会删除该流量日志文件,因为该流量日志文件的内容已经全部转化为流量数据包发送至流量检测设备,日志文件已经没有存储的必要,并且由于流量日志文件量非常大,产生速度很快,不删除的话占用磁盘空间比较大。
129.具体地,预设格式如图7所示,解析模块根据预设格式对流量日志文件进行解析的过程为:首先读取tag和length,然后根据length的长度读取value值,然后将value反序列化为proto格式的结构化数据。
130.步骤2043、通过所述数据包构造子模块基于所述结构化数据构造所述流量数据包。
131.可选地,通过所述数据包构造子模块基于所述结构化数据构造所述流量数据包,具体可通过以下方式实现:
132.通过所述数据包构造子模块基于网卡的最大传输单元和滑动窗口将所述结构化数据进行切割;基于切割后的通信数据构造所述流量数据包。
133.示例地,在traffic tapping的描述中已经解释到,envoy记录下的通信数据是经过网络协议栈组包后的tcp payload段数据内容。现在我们需要将结构化数据还原成流量,首先是对结构化数据切割。结构化数据的切割取决于两个因素,网卡的最大传输单元(maximum transmission unit,mtu)和tcp的滑动窗口机制。
134.下面分别对网卡的最大传输单元mtu和tcp的滑动窗口机制进行解释:
135.mtu是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位),通常来说,各种设备上默认值为1500,但是为了避免有特殊设备,所以最好能配置mtu值,可以根据mtu值的大小来构造数据包;构造的数据包大小不能超过mtu值。
136.tcp的特性就是一种可靠的、流控的数据传输协议,使用tcp传输数据,会有消息确认机制,会需要确认每一个数据包对方都有收到,但是如果每个包都要响应,会大大的影响传输的性能,因此tcp引入了滑动窗口机制。滑动窗口通俗来讲就是一种流量控制技术,它本质上是描述接收方的tcp数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接收方的窗口大小为0的tcp数据报,那么发送方将停止发送数据,等到接收方发送窗口大小不为0的数据报的到来,才会继续发送。图10是本发明提供的基于最大传输单元和滑动窗口机制发送数据的示意图,如图11所示,假设发送方需要发送6000字节的数据,并且由于mtu限制,每个数据包只能最大携带1400字节数据。首先,发送方第一次发送时会根据链路带宽来计算出一个滑动窗口值,例如,滑动窗口值window为3000,发送方将数据以1400大小切割,发送两个1400后,window内只剩下200字节了,所以在没有得到接收方确认之前,发送方最多只会发送200字节,然后等待接收方确认。接收方回应确认收到3000字节,并且将window设置为2000;发送方收到确认后继续根据mtu和窗口大小切割数据,发送一个1400和一个600后等待接收方再次确认后再将剩余1000字节发送给接收方。
137.具体结构化数据的切割过程为:首先通过mtu将结构化数据进行切割,然后每一次切割时都会计算是否达到了滑动窗口的限制,若达到window滑动窗口的限制,则必须构造
一条接收方的确认字符(acknowledge character,ack)数据包,才能继续后面的切割;切割数据后,再基于切割开的通信数据构造对应类型的流量数据包。
138.具体地,基于切割后的通信数据构造流量数据包可通过以下两种方式实现:
139.第一种方式,将所述切割后的通信数据填充到第一用户数据字段中,并构造第一以太网头部、第一ip头部和第一tcp头部,得到tcp流量数据包;tcp流量数据包的格式如图5所示,图5中的以太网头部即为第一以太网头部,ip头部即为第一ip头部,tcp头部即为第一tcp头部。
140.第二种方式,将所述切割后的通信数据填充到第二用户数据字段中,并构造第二以太网头部、第二ip头部、通用路由封装(generic routing encapsulation,gre)头部、第三ip头部和第二tcp头部,得到gre流量数据包;gre流量数据包的格式如图12所示,相比于tcp流量数据包,gre流量数据包多了2层头部,多了一个gre头部和一个ip头部,需要在流量数据包中额外构造2层头部结构;其中第二ip头部指定gre流量发送的目的ip地址,第三ip头部的ip地址与tcp数据包一致,为通信双方的实际地址。
141.需要说明的是,数据包构造子模块在基于结构化数据构造流量数据包之后,还需要将流量数据包存储在数据包队列中,便于发送子模块获取流量数据包。
142.如图9所示,图2中的步骤205具体可通过以下步骤实现:
143.步骤2051、通过所述发送子模块从数据包队列中获取所述流量数据包,并将所述流量数据包发送至所述流量检测设备。
144.示例地,pktsender从数据包队列中获取流量数据包,并将流量数据包发送至流量检测设备;在流量检测设备与网卡直接连接时,流量数据包可以采用tcp流量数据包,pktsender将tcp流量数据包通过网卡发送至流量检测设备;在流量检测设备与网卡跨网络连接时,流量数据包可以采用gre流量数据包,pktsender将gre流量数据包通过网卡跨网络发送至流量检测设备,生成gre流量数据包的原因是因为流量数据包经过交换机会被修改数据包内的信息。
145.上述将本发明提供的流量获取方法进行了详细说明,这里再介绍一下本发明的使用场景:
146.图13是本发明提供的流量获取架构的示意图之二,如图13所示,解密设备串联在客户端和服务器的通信连接之间,且客户端与解密设备之间还依次设置有防火墙和负载均衡设备,解密设备还与流量监测设备连接;客户端的原始通信数据(用户请求)通过互联网到达防火墙,然后经过负载均衡设备将用户请求路由到解密设备,再由解密设备转发至真实的服务器上,实现客户端与服务器之间的正常工作;在此基础上,基于解密设备对原始通信数据进行解密,并将解密得到的流量数据转化为流量日志文件,再基于流量日志文件生成流量数据包,这时的流量数据包是没有加密的,将流量数据包发送至流量检测设备,便于流量检测设备对流量数据包进行检测,实现对网站的防护。可以看出,解密设备是负载均衡设备和真实的服务器之间做代理,如此即可使流量检测设备检测服务器的访问流量。
147.下面对本发明提供的流量获取装置进行描述,下文描述的流量获取装置与上文描述的流量获取方法可相互对应参照。
148.本发明提供的流量获取装置,应用于解密设备,所述解密设备串联在客户端和服务器的通信连接之间;图14是本发明提供的流量获取装置的结构示意图,如图14所示,该流
量获取装置包括接收单元1401、解密单元1402、生成单元1403、转化单元1404和发送单元1405;其中:
149.接收单元1401,用于接收所述客户端发送的原始通信数据;其中,所述原始通信数据为所述客户端通过所述解密设备向所述服务器转发的数据,或者所述服务器通过所述解密设备向所述客户端返回的数据;
150.解密单元1402,用于对所述原始通信数据进行解密,得到解密后的流量数据;
151.生成单元1403,用于基于所述流量数据生成流量日志文件;
152.转化单元1404,用于将所述流量日志文件转化为流量数据包;
153.发送单元1405,用于将所述流量数据包发送至流量检测设备。
154.本发明提供的一种流量获取装置,在客户端和服务器的通信连接之间串联解密设备,通过解密设备将客户端发送的原始通信数据转发至服务器,解密设备在接收到客户端发送的原始通信数据时,对原始通信数据进行解密,并基于解密后得到的流量数据生成流量日志文件,最后将流量日志文件转化为流量数据包后发送至流量检测设备。这样,流量检测设备获取到的流量数据包为非加密的数据包,能够实现对流量数据的检测,从而提高了流量检测设备对网站的防护。
155.基于上述任一实施例,所述解密设备包括envoy架构,所述envoy架构配置有监听模块;所述接收单元1401具体用于:
156.通过所述监听模块接收所述客户端发送的所述原始通信数据。
157.基于上述任一实施例,所述envoy架构还配置有日志生成模块和集群管理模块;所述原始通信数据为所述客户端依次通过所述监听模块和所述集群管理器后向所述服务器转发的数据;所述生成单元1403具体用于:
158.通过所述日志生成模块按照预设格式将所述流量数据生成所述流量日志文件。
159.基于上述任一实施例,所述解密设备还包括流量构造模块;所述流量构造模块包括依次连接的文件监控子模块、解码子模块、数据包构造子模块和发送子模块;所述转化单元1404具体用于:
160.通过所述文件监控子模块监控所述流量日志文件,并将所述流量日志文件存储在文件队列中;
161.通过所述解码子模块从所述文件队列中获取所述流量日志文件,根据所述预设格式将所述流量日志文件进行解析,并将解析得到的结构化数据发送至所述数据包构造子模块;
162.通过所述数据包构造子模块基于所述结构化数据构造所述流量数据包;
163.所述发送单元1405具体用于:
164.通过所述发送子模块从数据包队列中获取所述流量数据包,并将所述流量数据包发送至所述流量检测设备。
165.基于上述任一实施例,所述解码子模块包括文件监控子模块和解析子模块;所述转化单元1404具体用于:
166.通过所述文件监控子模块对所述文件队列进行监控,在监控到所述文件队列中写入所述流量日志文件时,获取所述流量日志文件,并将所述流量日志文件发送至所述解析子模块;
167.通过所述解析子模块根据所述预设格式对所述流量日志文件进行解析,并将解析得到的结构化数据发送至所述数据包构造子模块。
168.基于上述任一实施例,所述转化单元1404具体用于:
169.通过所述数据包构造子模块基于网卡的最大传输单元和滑动窗口将所述结构化数据进行切割;
170.基于切割后的通信数据构造所述流量数据包。
171.基于上述任一实施例,所述转化单元1404具体用于:
172.将所述切割后的通信数据填充到第一用户数据字段中,并构造第一以太网头部、第一ip头部和第一tcp头部,得到tcp流量数据包。
173.基于上述任一实施例,所述转化单元1404具体用于:
174.将所述切割后的通信数据填充到第二用户数据字段中,并构造第二以太网头部、第二ip头部、gre头部、第三ip头部和第二tcp头部,得到gre流量数据包。
175.图15是本发明提供的电子设备的实体结构示意图,如图15所示,该电子设备可以包括:处理器(processor)1510、通信接口(communications interface)1520、存储器(memory)1530和通信总线1540,其中,处理器1510,通信接口1520,存储器1530通过通信总线1540完成相互间的通信。处理器1510可以调用存储器1530中的逻辑指令,以执行流量获取方法,应用于解密设备,所述解密设备串联在客户端和服务器的通信连接之间;该方法包括:接收所述客户端发送的原始通信数据;其中,所述原始通信数据为所述客户端通过所述解密设备向所述服务器转发的数据,或者所述服务器通过所述解密设备向所述客户端返回的数据;
176.对所述原始通信数据进行解密,得到解密后的流量数据;
177.基于所述流量数据生成流量日志文件;
178.将所述流量日志文件转化为流量数据包;
179.将所述流量数据包发送至流量检测设备。
180.此外,上述的存储器1530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
181.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的流量获取方法,应用于解密设备,所述解密设备串联在客户端和服务器的通信连接之间;该方法包括:接收所述客户端发送的原始通信数据;其中,所述原始通信数据为所述客户端通过所述解密设备向所述服务器转发的数据,或者所述服务器通过所述解密设备向所述客户端返回的数据;
182.对所述原始通信数据进行解密,得到解密后的流量数据;
183.基于所述流量数据生成流量日志文件;
184.将所述流量日志文件转化为流量数据包;
185.将所述流量数据包发送至流量检测设备。
186.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的流量获取方法,应用于解密设备,所述解密设备串联在客户端和服务器的通信连接之间;该方法包括:接收所述客户端发送的原始通信数据;其中,所述原始通信数据为所述客户端通过所述解密设备向所述服务器转发的数据,或者所述服务器通过所述解密设备向所述客户端返回的数据;
187.对所述原始通信数据进行解密,得到解密后的流量数据;
188.基于所述流量数据生成流量日志文件;
189.将所述流量日志文件转化为流量数据包;
190.将所述流量数据包发送至流量检测设备。
191.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
192.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
193.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献