1.本技术涉及信息安全技术领域,特别是涉及一种镜像报文的传输方法、系统。
背景技术:2.企业为了信息系统安全,会将实际业务产生的报文进行镜像得到镜像报文,并将镜像报文发送至安全分析设备进行安全分析。
3.相关技术中,是通过在报文外层封装gre(generic routing encapsulation,通用路由封装)包头的方式实现镜像报文的远程传输,具体而言,对每个镜像报文增加4字节大小的gre头部以及20字节大小的ip头部,然后对封装了gre头部及ip头部的镜像报文进行传输。
4.这种镜像报文传输的方式,由于是给每个镜像报文都添加gre头部和ip头部,增加了传输的消耗,降低了传输效率,尤其在小报文(如报文大小小于150字节)占比较高的场景下,传输效率低的缺点更为明显。
技术实现要素:5.基于此,有必要针对上述技术问题,提供一种能够增加传输效率镜像报文的传输方法、系统。
6.第一方面,本技术提供了一种镜像报文的传输方法,所述方法应用于发送端,所述方法包括:
7.获取待传输镜像报文;
8.在所述待传输镜像报文的大小未达到第一预设阈值的情况下,将所述待传输镜像报文缓存至缓存区;
9.在所述缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定所述各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述各待传输镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文;所述第二预设阈值不小于所述第一预设阈值;
10.将所述拼接报文发送至接收端。
11.在其中一个实施例中,所述报文分隔信息包括各待传输镜像报文之间的分隔符信息;
12.所述确定各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述若干个镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文,包括:
13.获取预设的分隔符信息;
14.将所述各待传输镜像报文进行拼接,并为每相邻的两个待传输镜像报文间添加所述分隔符信息,得到所述各待传输镜像报文对应的初始拼接报文;
15.为所述初始拼接报文添加第一多报文标识,得到所述各待传输镜像报文对应的拼接报文。
16.在其中一个实施例中,所述为所述各待传输镜像报文拼接得到的报文添加多报文标识,包括:
17.为所述各待传输镜像报文拼接得到的报文添加标识报文头;所述标识报文头的第一字段用于表征多报文标识,所述标识报文头的第二字段用于表征所述拼接报文包含的待传输镜像报文数量,以使所述接收端校验所述拼接报文分割结果。
18.在其中一个实施例中,所述报文分隔信息包括各待传输镜像报文的头部分割数据;
19.所述确定各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述若干个镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文,包括:
20.确定所述各待传输镜像报文的拼接次序信息;
21.针对每个待传输镜像报文,根据所述待传输镜像报对应的拼接次序信息和第二多报文标识,构成所述待传输镜像报文的头部分割数据;
22.为所述添加有头部分割数据的各待传输镜像报文依序进行拼接,得到所述各待传输镜像报文对应的拼接报文。
23.第二个方面,本技术还提供了一种镜像报文的传输方法,所述方法应用于接收端,所述方法包括:
24.接收发送端发送的拼接报文;所述拼接报文为所述发送端基于报文分隔信息、对报文大小未达到第一预设阈值的各待传输镜像报文进行拼接处理得到报文;
25.识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接报文分割为多个镜像报文。
26.在其中一个实施例中,在所述报文分隔信息包含各镜像报文之间的分隔符信息的情况下,所述识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接报文分割为多个镜像报文,包括:
27.识别所述拼接报文的第一多报文标识,以及所述拼接报文中,各相邻的镜像报文间的分隔符信息;
28.根据识别的各相邻的镜像报文间的分隔符信息,将所述拼接报文分割为多个镜像报文。
29.在其中一个实施例中,所述拼接报文包括标识报文头,所述标识报文头的第一字段用于表征第一多报文标识,所述标识报文头的第二字段用于表征所述拼接报文包含的镜像报文数量;所述拼接报文携带有多报文标识为识别所述拼接报文的标识报文头的第一字段得到;
30.所述方法还包括:
31.识别所述拼接报文的标识报文头的第二字段,确定所述拼接报文包含的第一镜像报文数量;
32.确定所述拼接报文分割得到镜像报文的第二镜像报文数量;
33.根据所述第一镜像报文数量和所述第二镜像报文数量,确定所述分割得到的各像报文的校验结果。
34.在其中一个实施例中,在所述报文分隔信息包含各镜像报文的头部分割数据的情况下,所述识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接
报文分割为多个镜像报文,包括:
35.识别所述拼接报文中各镜像报文的第二多报文标识以及拼接次序信息;
36.基于所述各镜像报文的多报文标识以及拼接次序信息,将所述拼接报文依序分割为多个镜像报文。
37.第三发面,本申还提供了一种镜像报文的传输系统,所述传输系统包括发送端、接收端,其中:
38.所述发送端,用于获取待传输镜像报文;在所述待传输镜像报文的大小未达到第一预设阈值的情况下,将所述待传输镜像报文缓存至缓存区;在所述缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定所述各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述若干个镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文;所述第二预设阈值不小于所述第一预设阈值;将所述拼接报文发送至接收端;
39.所述接收端,用于接收发送端发送的所述拼接报文;识别所述拼接报文携带的所述报文分隔信息,并根据所述报文分隔信息,将所述拼接报文分割为多个镜像报文。
40.第四方面,本技术还提供了一种镜像报文的传输装置,所述装置应用于发送端,所述装置包括:
41.获取模块,用于获取待传输镜像报文;
42.缓存模块,用于在所述待传输镜像报文的大小未达到第一预设阈值的情况下,将所述待传输镜像报文缓存至缓存区;
43.拼接模块,用于在所述缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定所述各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述各待传输镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文;所述第二预设阈值不小于所述第一预设阈值;
44.发送模块,用于将所述拼接报文发送至接收端。
45.第五方面,本技术还提供了一种镜像报文的传输装置,所述装置应用于接收端,所述装置包括:
46.接收模块,用于接收发送端发送的拼接报文;所述拼接报文为所述发送端基于报文分隔信息、对报文大小未达到第一预设阈值的各待传输镜像报文进行拼接处理得到报文;
47.分割模块,用于识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接报文分割为多个镜像报文。
48.第六方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
49.获取待传输镜像报文;
50.在所述待传输镜像报文的大小未达到第一预设阈值的情况下,将所述待传输镜像报文缓存至缓存区;
51.在所述缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定所述各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述各待传输镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文;所述第二预设阈
值不小于所述第一预设阈值;
52.将所述拼接报文发送至接收端。
53.第七方面本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
54.接收发送端发送的拼接报文;所述拼接报文为所述发送端基于报文分隔信息、对报文大小未达到第一预设阈值的各待传输镜像报文进行拼接处理得到报文;
55.识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接报文分割为多个镜像报文。
56.第八方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
57.获取待传输镜像报文;
58.在所述待传输镜像报文的大小未达到第一预设阈值的情况下,将所述待传输镜像报文缓存至缓存区;
59.在所述缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定所述各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述各待传输镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文;所述第二预设阈值不小于所述第一预设阈值;
60.将所述拼接报文发送至接收端。
61.第九方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
62.接收发送端发送的拼接报文;所述拼接报文为所述发送端基于报文分隔信息、对报文大小未达到第一预设阈值的各待传输镜像报文进行拼接处理得到报文;
63.识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接报文分割为多个镜像报文。
64.第十方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
65.获取待传输镜像报文;
66.在所述待传输镜像报文的大小未达到第一预设阈值的情况下,将所述待传输镜像报文缓存至缓存区;
67.在所述缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定所述各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述各待传输镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文;所述第二预设阈值不小于所述第一预设阈值;
68.将所述拼接报文发送至接收端。
69.第十一方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
70.接收发送端发送的拼接报文;所述拼接报文为所述发送端基于报文分隔信息、对报文大小未达到第一预设阈值的各待传输镜像报文进行拼接处理得到报文;
71.识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接
报文分割为多个镜像报文。
72.上述的镜像报文的传输方法、系统,在对镜像报文进行发送时,将多个较小报文拼接为一个较大报文进行传输,减少了部分为添加报文头带来的传输开销,从而提升了传输效率。
附图说明
73.图1为本说明书根据一个实施例示出的镜像报文的传输方法的应用环境图;
74.图2为本说明书根据一个实施例示出的应用于发送端的、镜像报文的传输方法的流程示意图;
75.图3为本说明书根据一个实施例示出的应用于接收端的、镜像报文的传输方法的流程示意图;
76.图4为本说明书根据一个具体实施例示出的应用于发送端的、镜像报文的传输方法的流程示意图;
77.图5为本说明书根据一个具体实施例示出的应用于接收端的、镜像报文的传输方法的流程示意图;
78.图6为本说明书根据一个实施例示出的应用于发送端的、镜像报文的传输装置的结构示意图;
79.图7为本说明书根据一个实施例示出的应用于接收端的、镜像报文的传输装置的结构示意图;
80.图8为本说明书根据一个实施例示出的计算机设备的内部结构图。
具体实施方式
81.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
82.相关技术中,在实现镜像报文的传输时,使用的是erspan(encapsulated remote switched port analyzer)技术,可以跨广域网传输,是端口镜像span/rspan(switched port analyzer/remote switched port analyzer)技术的扩展。普通的远程span,镜像数据报文只能在二层内传输,无法经过路由的网络(即上述的无法跨广域网传输),而封装远程端口镜像(erspan)却可以将镜像报文在路由的网络间传输,该技术将所有的被镜像报文通过一个gre(generic routing encapsulation,通用路由封装)隧道封装成ip报文,路由到远端镜像设备的目的端口,因此,该技术使得镜像报文可以跨广域网传输。
83.具体而言,erspan是通过在数据包外层封装gre包头的方式实现流量镜像和远程传输,针对每个待传输的镜像报文,都需增加gre头部(4字节)和ip(网际互连协议,internet protocol)头部(20字节),因此造成网络传输开销增加,降低了传输效率,这一缺点在小待传输镜像报文(报文长度小于150字节)占比较高的场景下尤为明显。
84.本说明书示出的镜像报文的传输方法是基于上述的第二种场景改进得到的,即,本说明书所示的镜像报文的传输方法用于实现跨广域网的镜像报文的传输。
85.基于上述的场景以及问题,本说明书提出一种应用于发送端的镜像报文的发送方
法,获取待传输镜像报文,在待传输镜像报文的大小未达到第一预设阈值的情况下,将待传输镜像报文缓存至缓存区。在缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定各待传输镜像报文对应的报文分隔信息,并基于报文分隔信息对各待传输镜像报文进行拼接处理,得到各待传输镜像报文对应的拼接报文,其中,第二预设阈值不小于第一预设阈值。最后,将拼接报文发送至接收端。
86.还提供了与之对应的,应用于接收端的镜像报文的接收方法,接收发送端发送的拼接报文,其中,拼接报文为所述发送端基于上述的镜像报文的发送方法发送至接收端的。识别拼接报文携带的报文分隔信息,并根据报文分隔信息,将拼接报文分割为多个镜像报文。
87.通过本说明书的镜像报文的发送方法,由于将多个大小未达到第一预设阈值的镜像报文进行拼接后传输,减少了添加报文头带来的传输消耗,一方面,节约了传输镜像报文的带宽,另一方面,增加了传输镜像报文的效率。
88.本说明书提供了一种镜像报文的发送方法、接收方法,以及对应的装置、计算机设备、计算机可读存储介质,一种镜像系统。
89.首先对本说明书提供的镜像报文的发送、接收方法的应用环境进行说明。如图1所示,为本说明书示出的镜像报文的传输方法的应用环境的结构示意图。站点1与站点2不在同一局域网中,通过互联网连接。站点2的发送端、交换机、终端1、终端2在同一局域网中,终端1、终端2的报文传输需要经过交换机,交换机将终端1、终端2的报文进行镜像,发送至发送端,发送端将接收的镜像报文通过互联网发送至接收端,再由接收端发送至安全分析设备,之后,安全分析设备就可以通过接收端发送的镜像报文,对终端1、终端2的报文进行安全性分析,实现对终端1、终端2的远程安全监测。
90.其中,一个站点可以包括多个终端,多个交换机,多个终端发送、接收的报文被镜像至该站点的进行报文发送端。
91.实际应用中,发送端、接收端可以但不限于是各种个人计算机、三层交换机、路由器、笔记本电脑、智能手机、平板电脑、物联网设备等。
92.接下来对本说明书示出的应用于发送端的一种镜像报文的传输方法进行详细的说明,如图2所示,为本说明书示出的应用于发送端的、一种镜像报文的传输方法的流程示意图,应用于如图2所示的发送端,包括以下步骤:
93.步骤201、获取待传输镜像报文。
94.其中,镜像报文可以是使用span技术或者rspan技术获得,即,是通过复制或者镜像得到的报文,而非原本就需要发送至发送端的报文。镜像技术可参照相关技术中对镜像技术的描述,本说明书不在此处进行详细的赘述。待传输镜像报文一般是与发送端处于同一局域网的设备发送而来,如图1所示的站点2的交换机。需要说明的是,待传输镜像报文是指发送端还没有发送至接收端的镜像报文,已经发送至接收端的镜像报文不是本说明书所说的待传输镜像报文。
95.步骤203、在待传输镜像报文的大小未达到第一预设阈值的情况下,将待传输镜像报文缓存至缓存区。
96.其中,第一预设阈值一般是发送端的最大传输单元可承载数据的最大字节数对应的大小,若待传输镜像报文的大小大于第一预设阈值,发送端在传输该待传输镜像报文时,
会进行分片传输,分片传输可参照相关技术中的描述,此处不进行详细的赘述。例如,最大传输单元为1500字节,ip报文头会占用20字节,用户数据报协议(udp,user datagram protocol)报文头会占用8字节,可承载数据的最大字节数为1500字节-20字节-8字节。
97.在一个实施例中,发送端获取到一个待传输镜像报文后,计算该待传输镜像报文的大小,确定该待传输镜像报文的大小是否达到预设阈值。若该待传输报文的大小不小于第一预设阈值,由于发送端在传输该待传输镜像报文时,本身就需要进行分片传输,因此将该待传输镜像报文与其它镜像报文进行拼接后传输,并没有减少报文头的增添所带来的传输消耗。所以,发送端在确定该待传输镜像报文的大小已达到第一预设阈值后,直接将该待传输镜像报文发送至接收端。
98.若该待传输报文的大小未达到第一预设阈值,可以该待传输镜像报文与其它镜像报文进行拼接后传输,以减少报文头的增添所带来的传输消耗。所以,发送端在确定该待传输镜像报文的大小未达到第一预设阈值后,将该待传输镜像报文缓存至缓存区。
99.步骤205、在缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定各待传输镜像报文对应的报文分隔信息,并基于报文分隔信息对所述若干个镜像报文进行拼接处理,得到各待传输镜像报文对应的拼接报文。
100.其中,第二预设阈值一般大于或等于发送端的最大传输单元可承载数据的最大字节数对应的大小。第一预设阈值一般小于或等于发送端的最大传输单元可承载数据的最大字节数对应的大小。
101.例如,发送端所在设备的网卡的最大传输单元(maximum transmission unit,mtu)可承载数据的最大字节数对应的值,一般是1472字节,因此第一预设阈值可以小于或等于1472字节,为1472字节或者750字节,再或者500字节等;第二阈值可以大于或等于1472字节,为1472字节或者1500字节等。
102.其中,设备的最大传输单元是根据实际需要设置的,是可以发送的最大的报文的大小,超过该大小,设备会将报文进行分片传输,即,将报文分为两个或多个报文进行传输。最大传输单元可承载数据的最大字节数是除去发生报文必须要添加的报文头的消耗。
103.在一个实施例中,发送端可以实时统计缓存区中缓存的各待传输镜像报文的大小的总值,并判断该总值是否达到第二预设阈值。在达到第二预设阈值的情况下,发送端可以根据预设的报文分隔信息的生成策略,确定各待传输镜像报文对应的报文分隔信息。其中,报文分隔信息用于确定拼接报文中各镜像报文之间的分割点,可以采用预设字符(如特殊字符、数字等),以区分于报文数据。然后,发送端可以基于报文分隔信息对所述若干个镜像报文进行拼接处理,得到各待传输镜像报文对应的拼接报文。例如,可以在各镜像报文之间添加分隔符信息,并对添加有分隔符信息的各镜像报文进行拼接处理,得到一个完整的报文,然后为该完整的报文添加多报文标识,得到封装后的报文,即拼接报文。又如,还可以为每个镜像报文添加头部分割数据,然后经添加了头部分割数据的进行报文进行拼接,得到一个完整的报文,即拼接报文。
104.在缓存区中缓存的各待传输镜像报文的大小的总值没有达到第二预设阈值的情况下,一方面,此时对缓存的各待传输镜像报文进行拼接处理,并不能最大程度减少添加报文头的传输消耗,另一方面,缓存区缓存的待传输镜像报文的数量可能为一个,并不能进行拼接处理。因此,发送端在判断缓存区中缓存的各待传输镜像报文的大小的总值达到第二
预设阈值的情况下,不执行拼接的操作。
105.在一个实施例中,缓存区缓存的待传输镜像报文为三个或三个以上时,可减少至少一个报文头的消耗。因此,第一阈值可设置为最大传输单元最大传输单元可承载数据的最大字节数的二分之一、三分之一。其中,在实际应用中,报文分隔信息平均至每个待传输镜像报文可以为一个字节,使得拼接报文增加报文头后传输时所占的带宽,与各待传输镜像报文分别添加报文头后传输所占的带宽,有所减少。
106.步骤207、将所述拼接报文发送至接收端。
107.在一个实施例中,完成对待传输进行报文的拼接后,发送端可以通过调用发送模块,将拼接完成的报文发送至接收端,以使接收端对拼接报文进行分割,并将分割得到的多个镜像报文发送至安全分析设备。
108.在一个实施例中,发送端在将待传输镜像报文或拼接报文发送至接收端时,并不需要接收端的响应,因此,发送端可以通过调用udp对应的socket将待传输镜像报文或拼接报文发送至接收端,此时,会对待传输镜像报文或拼接报文进行udp、ip头部的封装。
109.图1为本说明书示出的其中一个应用场景的示意图,在一个实施例中,还可以有多个发送端,一个接收端,发送端一般不在同一个站点,即,属于不同的局域网。即,多个发送端分别位于不同的子公司所在的局域网中,接收端位于母公司所在的局域网中,实现母公司对各个子公司的远程安全监测,无需各个子公司搭建安全监测系统。
110.通过该实施例的镜像报文的传输方法,由于将多个小报文(大小未达到第一预设阈值的报文)拼接为一个拼接报文进行传输,减少了每个镜像报文都添加报文头带来的传输开销,从而提升了传输效率。
111.实际应用中,在添加报文分隔信息时,可根据实际应用进行设置,本说明书示例性的给出两种方式:
112.方式1:在待传输镜像报文间添加特殊序列的分隔符信息。
113.方式2:为每个待传输镜像报文添加预设的头部分割数据。
114.因此,在一个实施例中,若使用方式1添加报文分隔信息,步骤205可以具体包括:
115.步骤205a、获取预设的分隔符信息。
116.其中,分隔符信息可以是接收端与发送端预先约定的,例如是一个字节的0,又如一个字节的1,再如是一个字节的特殊序列。分隔符还可以是相关人员根据实际业务场景在发送端设置的,例如不同的业务场景设置不同的序列信息。
117.步骤205b、将各待传输镜像报文进行拼接,并为每相邻的两个待传输镜像报文间添加所述分隔符信息,得到各待传输镜像报文对应的初始拼接报文。
118.在一个实施例中,接收端将以镜像报文-分隔符信息-镜像报文的顺序,对各待传输镜像报文镜像进行拼接,得到头部与尾部为镜像报文,各个镜像报文间为分隔符信息的初始拼接报文。
119.在一个实施例中,假设缓存区中缓存有a、b、c、d四个待传输镜像报文,分隔符信息为x,进行拼接后即可得到axbxcxd,axbxcxd即为a、b、c、d这四个待传输镜像报文拼接得到的对应的初始拼接报文。
120.步骤205c、为初始拼接报文添加第一多报文标识,得到各待传输镜像报文对应的拼接报文。
121.其中,接收端对初始拼接报文添加的第一多报文标识,可以使其它设备确定携带有该第一多报文标识的报文中包含有多个镜像报文。需要说明的是,第一多报文标识是添加至初始拼接报文的标识。
122.在一个实施例中,为初始拼接报文添加第一多报文标识时,可以使用报文头的方式,即,为初始拼接报文添加用于表征第一多报文标识的报文头。
123.在此实施例中,在相邻的拼接报文间添加预设的分隔符信息,以实现拼接报文所携带的报文分隔信息。
124.为了使接收端能够确定对拼接报文的分割结果是否正确,即,校验对拼接报文的分割结果,在一个实施例中,上述的步骤205c可以具体包括:
125.为各待传输镜像报文拼接得到的初始拼接报文添加标识报文头。
126.其中,标识报文头的第一字段用于表征第一多报文标识,标识报文头的第二字段用于表征拼接报文包含的待传输镜像报文数量,以使接收端校验拼接报文分割结果。
127.在一个实施例中,接收端在确定缓存的待传输镜像报文的大小总值达到第二预设阈值后,确定缓存的待传输镜像报文的数量。之后,接收端根据缓存区缓存的待传输镜像报文的数量以及第一多报文标识,构建初始拼接报文的标识报文头,得到第一字段用于表征第一多报文标识,第二字段用于表征拼接报文包含的待传输镜像报文数量的标识报文头。
128.在一个实施例中,标识报文头可以是一字节八位,前两位用于表征多报文或单报文,在前两位用于表征多报文的情况下,后六位用于表征报文所包含的镜像报文的数量。在一个实施例中,可以是前两位为01表示报文为拼接报文,00表示报文为单报文。在前两位为01的情况下,后六位用于表征拼接报文所包含的镜像报文,如000111表示包含7个镜像报文。
129.例如,假设某报文的标识报文头为00000000,那么表示该报文只包含一个镜像报文。假设某报文的表示报文头为01000101,那么表示该报文包含多个镜像报文,所包含的镜像报文的数量为5。
130.在此实施例中,为拼接报文添加多报文标识的同时,添加拼接报文所携带的待传输的镜像报文的数量信息,以使接收端可以校验对拼接报文的分割结果。
131.此外,在一个实施例中,报文分隔信息包括各待传输镜像报文的头部分割数据,即,使用方式2添加报文分隔信息,此时,上述步骤205还可以具体包括:
132.步骤2051、确定各待传输镜像报文的拼接次序信息。
133.其中,缓存区缓存的待传输镜像报文一般按照时序进行排序,即,根据各待传输报文一般会有对应的时间戳进行排序。
134.在一个实施例中,发送端读取缓存区的各待传输镜像报文时,同时确定各待传输进行报文的时间戳,并以各待传输进行报文的时间戳,确定各待传输进行报文的拼接次序信息。
135.步骤2053、针对每个待传输镜像报文,根据待传输镜像报对应的拼接次序信息和第二多报文标识,构成该待传输镜像报文的头部分割数据。
136.其中,第二多报文标识用于标识该镜像报文处于拼接报文中。需要说明的是,第二多报文标识是添加至每个单独的待传输镜像的报文的,而非多个镜像报文拼接得到的初始拼接报文。
137.在一个实施例中,发送端根据每个待传输镜像报文的拼接次序信息以及第二多报文标识,构建该待传输镜像报文的头部分割数据,例如头部分割数据的第一字段用于表征第二多报文标识,第二字段用于表征拼接次序信息。又如,第一字段用于表征拼接次序信息,第二字段用于表征第二多报文标识。
138.在一个实施例中,接收端可以为每个待传输镜像报文添加一字节的头部分割数据,头部分割数据的前两位用于表征待传输镜像报文是以拼接报文的形式传输的,即第二多报文标识,后六位用于表征待传输报文在拼接报文中的拼接次序,即拼接次序信息。例如,某待传输镜像报文的头部分割数据为01000100,表示该待传输报文通过拼接报文的形式传输的,处于拼接报文的第4位,即,第四个待传输镜像报文。
139.步骤2055、将添加有头部分割数据的各待传输镜像报文依序进行拼接,得到各待传输镜像报文对应的拼接报文。
140.在一个实施例中,接收端为各待传输镜像报文添加头部分割数据后,将添加有头部分割数据的各待传输镜像报文按照上述的拼接次序信息依序进行拼接,得到一个完整的报文,即拼接报文。
141.在一个实施例中,假设有a、b、c、d四个待传输镜像报文,接收端为a、b、c、d四个待传输镜像报文确定的对应的头部分割数据分别为x1、x2、x3、x4,那么接收端为a、b、c、d这四个添加了头部分割数据后,分别为x1a、x2b、x3c、x4d,之后,接收端按拼接次序进行拼接后得到x1ax2bx3cx4d,即a、b、c、d这四个待传输镜像报文对应的拼接报文。
142.在此实施例中,为每个待传输的进行报文添加头部分割数据,以实现拼接报文所携带的报文分隔信息。
143.如图3所示,为本说明书示出的,与上述的应用于发送端的镜像报文的传输方法对应的,应用于接收端的镜像报文的传输方法的流程示意图,包括以下步骤:
144.步骤301、接收发送端发送的拼接报文。
145.其中,拼接报文为发送端利用上述的镜像报文的传输方法发送至接收端的。即,拼接报文为发送端基于报文分隔信息、对报文大小未达到第一预设阈值的各待传输镜像报文进行拼接处理得到报文。第一预设阈值的说明可参照上述镜像报文的发送方法中的说明。
146.在一个实施例中,若发送端通过调用udp对应的socket将待传输镜像报文或拼接报文发送至接收端,接收端也需要通过调用udp对应的socket接收待传输进行报文或拼接报文。
147.在一个实施例中,接收端接收到报文后,确定报文是否携带有多报文标识,如读取报文的前几个字节,是否表征多报文标识。若携带有多报文标识,说明该报文是拼接报文,接收端确定该报文需要进行分割处理,进一步地识别该报文所携带的报文分隔信息。若未携带有多报文标识,说明该报文是单独的镜像报文,接收端确定无需对该报文进行分割处理,直接发送至安全分析设备。
148.步骤303、识别拼接报文携带的报文分隔信息,并根据报文分隔信息,将拼接报文分割为多个镜像报文。
149.其中,拼接报文中携带的报文分隔信息可以参照上述对报文分隔信息的相关描述。
150.在一个实施例中,接收端接收到一个报文后,若确定该报文所携带的多报文标识
确定该报文是拼接报文,接收端可以对拼接报文进行逐个字节进行读取,识别拼接报文中携带的报文分隔信息,例如读取拼接报文中是否包含特殊的分隔符信息,或者读取拼接报文是否包含特殊格式的报文头结构。然后根据识别到的报文分隔信息,对拼接报文进行分割,得到拼接报文中所包含的多个镜像报文,最后将分隔得到的多个镜像报文发送至安全分析设备。安全分析设备接收到接收端发送的各镜像报文后,可以根据各镜像报文进行安全分析,完成对发送端所在的局域网的终端的远程安全监测。
151.在该实施例中,由于将多个小报文(大小未达到第一预设阈值的报文)拼接为一个拼接报文进行传输,减少了每个镜像报文都添加报文头带来的传输开销,从而提升了传输效率。
152.若发送端使用方式1所示的方式添加报文分隔信息,对应的,接收端的镜像报文的接收方法的步骤303可以具体包括:
153.步骤303a、识别拼接报文的第一多报文标识,以及拼接报文中,各相邻的镜像报文间的分隔符信息。
154.在一个实施例中,接收端每接收到一个报文,确定报文所携带的标识。若接收端识别报文携带有第一多报文标识,确定该报文中包含有多个镜像报文,是一个拼接报文,需要对该报文进行进一步的分割处理。然后,接收端对该拼接报文进行逐字节地读取,以识别拼接报文中各个镜像报文的分隔符信息。
155.其中,分隔符信息可以是接收端与发送端预先约定的,也可以是相关人员在接收端设置的。因此,在一个实施例中,在识别拼接报文的第一多报文标识前,可以先获取预先确定分隔符信息。
156.步骤303b、根据识别的各相邻的镜像报文间的分隔符信息,将拼接报文分割为多个镜像报文。
157.在一个实施例中,接收端根据拼接报文中的分隔符信息确定拼接报文的分割点,删除分隔符信息,然后得到对应的多个镜像报文。例如,拼接报文为axbxcxd,分隔符信息为x,删除后即可得到a、b、c、d四个镜像报文。
158.若发送端通过为各待传输镜像报文拼接得到的初始拼接报文添加标识报文头的方式表征拼接报文的多报文标识,即,标识报文头的第一字段用于表征第一多报文标识,标识报文头的第二字段用于表征拼接报文包含的待传输镜像报文数量,那么对应的,上述的应用于接受端的镜像报文的传输方法的步骤303a具体包括:
159.识别拼接报文的标识报文头的第一字段以确定拼接报文的第一多报文标识,并识别拼接报文中各相邻的镜像报文间的分隔符信息。
160.此时,上述的镜像报文的接收方法还可以包括:
161.步骤305、识别拼接报文的标识报文头的第二字段,确定拼接报文包含的第一镜像报文数量。
162.其中,第一镜像报文数量是指拼接报文的标识报文头所表征的镜像报文数量,即,拼接报文实际包含的镜像报文数量。
163.在一个实施例中,根据标识报文头的大小,读取拼接报文的前几个字节,以获得拼接报文的标识报文头,然后根据标识报文头的字段分布,确定标识报文头的第一字段以及第二字段,以得到拼接报文标识报文头第一字段以及第二字段所表征的含义。
164.步骤307、确定拼接报文分割得到镜像报文的第二镜像报文数量。
165.其中,第二镜像报文数量为接收端根据拼接报文所携带的报文分隔信息分隔得到的镜像报文的数量。
166.在一个实施例中,假设标识报文头为一个字节,前两位用于表征多报文或单报文,在前两位用于表征多报文的情况下,后六位用于表征报文所包含的镜像报文的数量。例如,可以是前两位为01表示报文为拼接报文,00表示报文为单报文。在前两位为01的情况下,后六位用于表征拼接报文所包含的镜像报文,如000111表示包含7个镜像报文。
167.步骤309、根据第一镜像报文数量和第二镜像报文数量,确定所述分割得到的镜像报文的校验结果。
168.接收端在确定第一镜像报文数量与第二镜像报文数量相同的情况下,说明对拼接报文的分割结果是正确的,相应的,接收端在确定第一镜像报文数量与第二镜像报文数量不同的情况下,说明对拼接报文的分割结果并不正确。
169.若发送端是以方式2添加报文分隔信息,那么对应的,上述的应用于接收端的镜像报文的传输方法的步骤303还可以具体包括:
170.步骤3031、识别拼接报文中各镜像报文的头部分割数据所包含的多报文标识以及拼接次序信息。
171.在一个实施例中,接收端接收到发送端的发生的报文后,若报文是按照步骤2051、2053、2055得到的拼接报文,那么接收端对该拼接报文进行逐字节读取时,会读取到该拼接报文的第一个镜像报文的头部分割数据。根据该拼接报文的第一个镜像报文的头部分割数据所携带的第二多报文标识以及拼接次序信息,接收端可以确定该拼接报文包含多个镜像报文并且读取到该拼接报文的第一个镜像报文。之后,接收端根据读取到的拼接报文中各镜像报文的头部分割数据,逐步确定读取到拼接报文中的第二个、第三个......个镜像报文。
172.步骤3033、基于各镜像报文的第二多报文标识以及拼接次序信息,将拼接报文依序分割为多个镜像报文。
173.如上述,可以通过识别拼接报文中各镜像报文的头部分割数据所在的位置,以确定拼接报文中各镜像报文的分割点,并且还可以根据每个镜像报文的拼接次序信息,确定分割是否正确。
174.在一个实施例中,接收端在读取拼接报文中各个进行报文的头部分割数据后,先将各个镜像报文分割开,然后将各镜像报文的头部分割数据删除,得到各镜像报文的原始镜像报文,即,未经任何处理的镜像报文。例如,假设拼接报文为x1ax2bx3cx4d,接收端会识别到各镜像报文的头部分割数据x1、x2、x3、x4,然后将拼接报文分割为x1a、x2b、x3c、x4d,删除各头部分割数据,得到原始镜像报文a、b、c、d。
175.此外,为了保证传输的安全性,在传输报文前,还可以对拼接报文进行加密。
176.因此,在一个实施例中,接收端得到各待传输镜像报文对应的拼接报文后,对拼接报文进行加密,得到加密拼接报文,然后将加密拼接报文发送至接收端。
177.相应的,接收端接收到发送端发送的加密拼接报文后,首先进行解密处理,然后识别解密后的拼接报文携带的报文分隔信息,并根据识别得到的报文分隔信息,将解密后的拼接报文分割为多个镜像报文。
178.如图4所示,为本说明书根据一具体实施例示出的一种镜像报文的发送方法的流程示意图。
179.在此实施例中,记最大传输单元可承载数据的最大字节数为a(此实施例中,第一阈值、第二阈值都为a),待传输镜像报文的大小为b,缓存区缓存的各待传输镜像报文的大小总值为c。其中,标识报文头为一字节八位,前两位用来标识单报文或多报文,后六位在前两位标识多报文的情况下,表示包含的镜像报文的数量。
180.具体执行过程如下:
181.1、获取网卡mtu值(最大传输单元),通过mtu计算一个ip数据包可承载数据的最大字节数,记为a。例如mtu为1500byte,a=1500byte-8byte(udp头部)-20byte(ip头部)-1byte(数据头部)=1471byte。
182.2、监听从交换机上镜像出的镜像报文,即,交换机发送至发送端的镜像报文,计算该镜像报文的大小,记为b。
183.3、比较a和b大小,如果b≥a,将该报文添加标识报文头后执行步骤5;此时需将标识报文头置为00000000,表示报文中仅包含一个原始镜像报文;如果b《a,为该报文添加当前时间戳后存入发送缓存区,将发送缓存区数据大小记为c,此时c=c+b。
184.4、比较a和c大小,如果c≥a,将缓存区缓存的多个镜像报文进行拼接后,执行步骤5;此时需将拼接报文的标识报文头前2位置为01,后6位为发送缓存区内的原始镜像报文数量,例如发送缓存区内有15个原始数据包,则标识报文头后6位为001111;如果c《a,继续执行步骤2、3,直到c≥a。
185.5、对添加了标识报文头的报文进行加密,得到密文m。
186.6、将密文m通过调用udp socket发出,发送至接收端。
187.如图5所示,为本说明书根据一具体实施例示出的一种镜像报文的接收方法的流程示意图,与图4相对应。
188.1、通过udp socket接收发送端发送的密文m。
189.2、按照预先设定的加解密算法(上述步骤5对应的加密算法)对密文m进行解密,得到明文t。
190.3、提取明文t的标识报文头,即明文t中第一个字节的前2位,如果前2位为00,说明明文t中仅包含一个原始镜像报文,此时将明文t去除第一个字节后即可还原出原始镜像报文,再将原始镜像报文发送至安全分析设备。如果前两位01,说明明文t中包含多个原始镜像报文,再提取后6位,根据后6位可得出明文t中共包含多少个原始镜像报文,再逐一还原出时间戳和原始镜像报文,再根据时间戳记录的时间先后顺序将原始镜像报文发送至安全分析设备。
191.本说明书还提供了一种镜像报文的传输系统,镜像系统包括发送端、接收端,其中,发送端用于执行上述的镜像报文的发送方法,接收端用于执行上述的进行报文的接收方法。
192.在一个实施例中,发送端,用于获取待传输镜像报文;在待传输镜像报文的大小未达到第一预设阈值的情况下,将待传输镜像报文缓存至缓存区;在缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定各待传输镜像报文对应的报文分隔信息,并基于报文分隔信息对所述若干个镜像报文进行拼接处理,得到各待传输镜像报文
对应的拼接报文;第二预设阈值不小于所述第一预设阈值;将拼接报文发送至接收端。
193.接收端,用于接收发送端发送的拼接报文;识别拼接报文携带的所述报文分隔信息,并根据报文分隔信息,将拼接报文分割为多个镜像报文。
194.在此实施例中,发送端、接收端所执行的方法可参照上述发送端、接收端所指向的镜像报文的传输方法的相关说明,此处不进行详细赘述。
195.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
196.基于同样的发明构思,本技术实施例还提供了用于实现上述所涉及的镜像报文的传输方法对应的装置。装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个镜像报文的传输装置实施例中的具体限定可以参见上文中对于镜像报文的传输方法的限定,在此不再赘述。
197.在一个实施例中,如图6所示,提供了一种镜像报文的传输装置,应用于发送端,包括:获取模块601、缓存模块603、拼接模块605和发送模块607,其中:
198.获取模块601,用于获取待传输镜像报文;
199.缓存模块603,用于在所述待传输镜像报文的大小未达到第一预设阈值的情况下,将所述待传输镜像报文缓存至缓存区;
200.拼接模块605,用于在所述缓存区缓存的各待传输镜像报文的大小总值达到第二预设阈值的情况下,确定所述各待传输镜像报文对应的报文分隔信息,并基于所述报文分隔信息对所述各待传输镜像报文进行拼接处理,得到所述各待传输镜像报文对应的拼接报文;所述第二预设阈值不小于所述第一预设阈值;
201.发送模块607,用于将所述拼接报文发送至接收端。
202.在一个实施例中,所述报文分隔信息包括各待传输镜像报文之间的分隔符信息;
203.所述拼接模块605具体用于:
204.获取预设的分隔符信息;
205.将所述各待传输镜像报文进行拼接,并为每相邻的两个待传输镜像报文间添加所述分隔符信息,得到所述各待传输镜像报文对应的初始拼接报文;
206.为所述初始拼接报文添加第一多报文标识,得到所述各待传输镜像报文对应的拼接报文。
207.在一个实施例中,所述拼接模块605具体用于:
208.获取预设的分隔符信息;
209.将所述各待传输镜像报文进行拼接,并为每相邻的两个待传输镜像报文间添加所述分隔符信息,得到所述各待传输镜像报文对应的初始拼接报文;
210.所述初始拼接报文添加标识报文头,得到所述各待传输镜像报文对应的拼接报文;其中,所述标识报文头的第一字段用于表征第一多报文标识,所述标识报文头的第二字
段用于表征所述拼接报文包含的待传输镜像报文数量,以使所述接收端校验所述拼接报文分割结果。
211.在一个实施例中,所述报文分隔信息包括各待传输镜像报文的头部分割数据;
212.所述拼接模块605具体用于:
213.确定所述各待传输镜像报文的拼接次序信息;
214.针对每个待传输镜像报文,根据所述待传输镜像报对应的拼接次序信息和第二多报文标识,构成所述待传输镜像报文的头部分割数据;
215.为所述添加有头部分割数据的各待传输镜像报文依序进行拼接,得到所述各待传输镜像报文对应的拼接报文。
216.在一个实施例中,如图7所示,提供了一种镜像报文的传输装置,应用于接收端,包括:接收模块701和分割模块703,其中:
217.接收模块701,用于接收发送端发送的拼接报文;所述拼接报文为所述发送端基于报文分隔信息、对报文大小未达到第一预设阈值的各待传输镜像报文进行拼接处理得到报文;
218.分割模块703,用于识别所述拼接报文携带的报文分隔信息,并根据所述报文分隔信息,将所述拼接报文分割为多个镜像报文。
219.在一个实施例中,在所述报文分隔信息包含各镜像报文之间的分隔符信息的情况下,所述分割模块703具体用于:
220.识别所述拼接报文的第一多报文标识,以及所述拼接报文中,各相邻的镜像报文间的分隔符信息;
221.根据识别的各相邻的镜像报文间的分隔符信息,将所述拼接报文分割为多个镜像报文。
222.在一个具体实施例中,所述拼接报文包括标识报文头,所述标识报文头的第一字段用于表征第一多报文标识,所述标识报文头的第二字段用于表征所述拼接报文包含的镜像报文数量;所述拼接报文携带有多报文标识为识别所述拼接报文的标识报文头的第一字段得到;
223.所述装置还包括:
224.识别模块705(图中未示出),用于识别所述拼接报文的标识报文头的第二字段,确定所述拼接报文包含的第一镜像报文数量;
225.确定模块707(图中未示出),用于确定所述拼接报文分割得到镜像报文的第二镜像报文数量;
226.校验模块709(图中未示出),用于根据所述第一镜像报文数量和所述第二镜像报文数量,确定对分割得到的镜像报文的校验结果。
227.在一个实施例中,在所述报文分隔信息包含各镜像报文的头部分割数据的情况下,所述分割模块703具体用于:
228.识别所述拼接报文中各镜像报文的头部分割数据所包含的第二多报文标识以及拼接次序信息;
229.基于所述各镜像报文的第二多报文标识以及拼接次序信息,将所述拼接报文依序分割为多个镜像报文。
230.上述镜像报文的传输装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
231.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、移动蜂窝网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种镜像报文的传输方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
232.本领域技术人员可以理解,图8中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
233.在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
234.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
235.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
236.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
237.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
238.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。