一种基于HTTP协议的数据还原方法及系统与流程

文档序号:12693579阅读:288来源:国知局
一种基于HTTP协议的数据还原方法及系统与流程

本发明涉及网络数据监控技术领域,尤其涉及一种基于HTTP协议的数据还原方法及系统。



背景技术:

随着网络的发展,上网已经成为人们生活中的一部分。人们几乎每天都要通过网络进行信息查询、在线聊天、线上购物、社交互动等活动。然而,在网络给人们的生活带来便利的同时,其也显露出了一些弊端。例如,基于网络应用的丰富性、用户群体的复杂性,经常有人利用网络传播一些影响人们身心健康或危及社会稳定、破坏公共安全的信息。因此,必须对网络数据进行监控,以杜绝这些有害信息的传播。

近年来,基于HTTP协议的Web应用在所有网络应用中所占的比例越来越高,因此对HTTP协议内容进行还原可以起到很好的网络数据监控的目的。一般来说,现有的数据还原方法大都是设计两个报文队列,一个存放正常到来的报文,另一个存放失序到来的报文。当TCP断开这个socket(套接字)的连接时,将正常报文队列和失序报文队列中的数据合并起来,以完成重组。具体重组方法是取出正常报文队列最后一个报文的序列号和TCP Segment Len(TCP报文段长度),在失序报文队列中查找属于它的后续报文。该方法虽能够实现报文重组,但是其在数据包重组效率和存储空间利用率上存在不足,不能很好的满足在大网络流量背景下实时还原网络数据的需要。

针对现有数据还原方法存在的缺陷,亟需一种能够提高数据包重组效率、提高内存空间利用率的基于HTTP协议的数据还原方法及系统,以满足高速、大流量网络环境下的数据还原需求。



技术实现要素:

本发明的目的在于提出一种新的基于HTTP协议的数据还原方法及系统,以提高数据包重组效率、提高内存空间利用率、满足高速、大流量网络环境下的数据还原需求。

本发明提供流了一种基于HTTP协议的数据还原方法,包括以下步骤:

S1、捕获网络中的数据包;

S2、从捕获的数据包中过滤出TCP协议数据包;

S3、计算所述TCP协议数据包的TCP会话哈希值、并将得出的TCP会话哈希值存至哈希表中;将TCP会话哈希值相同的数据包存储至二叉排序树中;对所述二叉排序树进行中序遍历得到重组后的TCP数据包;

S4、从重组后的TCP数据包中过滤出HTTP协议数据包;

S5、对所述HTTP协议数据包进行内容还原。

优选的,步骤S1包括:网卡初始化;数据包捕获程序初始化;网卡通过DMA方式将接收的数据包写入网卡驱动中的内存空间,数据包捕获程序将所述内存空间中的数据包映射至用户空间。

优选的,在步骤S3中,计算所述TCP协议数据包的TCP会话哈希值,包括:从TCP协议数据包中提取TCP会话连接四元组;对所述TCP会话连接四元组进行异或位移哈希运算,并将运算获取的TCP会话哈希值存至哈希表中。

优选的,所述TCP会话连接四元组包括:源IP地址、目的IP地址、源端口号、目的端口号。

优选的,步骤S5包括:解析所述HTTP协议数据包的头部,获取模板匹配所需的头部信息;将所述头部信息与模板库中各模板的对应信息进行匹配,找到与所述HTTP协议数据包相对应的模板结构体;根据模板结构体中的特征值对HTTP协议数据包进行内容提取。

优选的,所述模板匹配所需的头部信息为由请求类型Get/Post、Host、URL、Referer字段构成的四元组信息。

优选的,所述方法还包括:S6、将还原后的数据内容保存成bcp文件并输出。

本发明还提供了一种基于HTTP协议的数据还原系统,包括:

数据包捕获模块,用于捕获网络中的数据包;

第一过滤模块,用于从捕获的数据包中过滤出TCP协议数据包;

数据包重组模块,用于计算所述TCP协议数据包的TCP会话哈希值、并将得出的TCP会话哈希值存至哈希表中;将TCP会话哈希值相同的数据包存储至二叉排序树中;对所述二叉排序树进行中序遍历得到重组后的TCP数据包;

第二过滤模块,用于从重组后的TCP数据包中过滤出HTTP协议数据包;

数据还原模块,用于对所述HTTP协议数据包进行内容还原。

优选的,数据包捕获模块包括:初始化单元,用于对网卡、数据包捕获单元进行初始化;数据包捕获单元,用于将网卡驱动的内存空间中的数据包映射至用户空间;其中,所述网卡驱动的内存空间中的数据包是网卡通过DMA方式写入的。

优选的,数据包重组模块在计算所述TCP协议数据包的TCP会话哈希值时,包括:从TCP协议数据包中提取TCP会话连接四元组;对所述TCP会话连接四元组进行异或位移哈希运算,并将运算获取的TCP会话哈希值存至哈希表中。

优选的,所述TCP会话连接四元组包括:源IP地址、目的IP地址、源端口号、目的端口号。

优选的,所述数据还原模块包括:解析单元,用于解析所述HTTP协议数据包的头部,获取模板匹配所需的头部信息;模板匹配单元,用于将所述头部信息与模板库中各模板的对应信息进行匹配,找到与所述HTTP协议数据包相对应的模板结构体;内容提取单元,用于根据模板结构体中的特征值对HTTP协议数据包进行内容提取。

优选的,所述模板匹配所需的头部信息为由请求类型Get/Post、Host、URL、Referer字段构成的四元组信息。

优选的,所述系统还包括:结果输出模块,用于将还原后的数据内容保存成bcp文件并输出。

从以上技术方案可以看出,本发明通过计算TCP会话哈希值生成哈希表,能够快速定位大量并发会话连接。本发明通过二叉排序树完成数据包的重组,使得在接收到乱序的数据包后无需将数据包放入失序报文队列,而是直接根据TCP数据包的序列号将数据包放到二叉排序树的相应节点,待数据包接收完毕后对二叉排序树进行中序遍历,得到重组后的数据包,这样一来,能够快速完成数据包的查找和重组,提高内存空间利用率。本发明通过模板结构体的特征值或解析识别码对HTTP协议数据包进行内容提取,能够提高数据还原效率。通过以上技术手段,使得本发明的数据还原技术方案能够满足高速、大流量网络情况下的数据还原需求。

附图说明

通过以下参照附图而提供的具体实施方式部分,本发明的特征和优点将变得更加容易理解,在附图中:

图1是本发明实施例中的基于HTTP协议的数据还原方法的流程示意图;

图2是本发明实施例中的数据包捕获步骤的流程示意图;

图3是本发明实施例中TCP协议数据包重组与过滤步骤的流程示意图;

图4是本发明实施例中的数据还原步骤的流程示意图;

图5是本发明实施例中的基于HTTP协议的数据还原系统的组成框图;

图6是本发明实施例中的数据包捕获模块的组成框图;

图7是本发明实施例中的数据还原模块的组成框图;

1、数据包捕获模块;2、第一过滤模块;3、数据包重组模块;4、第二过滤模块;5、数据还原模块;101、初始化单元;102、数据包捕获单元;501、解析单元;502、模板匹配单元;503、内容提取单元。

具体实施方式

下面参照附图对本发明的示例性实施方式进行详细描述。对示例性实施方式的描述仅仅是出于示范目的,而绝不是对本发明及其应用或用法的限制。

在现有技术中,基于HTTP协议的数据还原方法有很多种,但是这些还原方法在数据包重组的效率以及存储空间利用率上有所欠缺。鉴于此,本发明的发明人提出了一种新的基于HTTP协议的数据还原方法及系统。本发明通过利用基于哈希表的二叉排序树的方式实现同一TCP会话的多个乱序数据包的重组,加快了数据包的重组过程,提高了系统的数据处理性能,进而能够满足高速、大流量网络情况下的数据还原需求。

下面结合附图和具体实施例对本发明的技术方案进行详细说明。图1是本发明实施例中的基于HTTP协议的数据还原方法的流程示意图。从图1可见,该数据还原方法具体包括步骤S1~步骤S5。

步骤S1、捕获网络中的数据包。

在具体实施时,抓取网络实时流量形成原始数据包的方法有很多。图2为本发明实施例所采用的一种优选的捕获网络数据包的流程示意图。由图2可见,该网络数据包的捕获流程具体包括步骤S101至步骤S103。

在步骤S101中,对网卡进行初始化,主要包括:加载网卡驱动,并为网卡驱动分配内存空间。

在步骤S102中,对数据包捕获程序进行初始化,主要包括:建立存储空间表,将步骤S101中分配的内存空间映射到用户空间,对中断函数和DMA(直接内存访问)缓存分配函数进行初始化。

在步骤S103中、网卡通过DMA方式将接收的数据包写入网卡驱动中的内存空间,数据包捕获程序将所述内存空间中的数据包映射至用户空间。

步骤S2、从捕获的数据包中过滤出TCP协议数据包。

一般来说,常见的网络协议包括:位于传输层的TCP协议、UDP协议,位于应用层的HTTP协议、DNS协议,位于网络层的ARP协议、ICMP协议。在本实施例中,在捕获网络数据包以后,可以将捕获的数据包按照网络协议的封装顺序逐层进行识别,并将包含TCP协议的数据包过滤出来。

步骤S3、计算所述TCP协议数据包的TCP会话哈希值、并将得出的TCP会话哈希值存至哈希表中;将TCP会话哈希值相同的数据包存储至二叉排序树中;对所述二叉排序树进行中序遍历得到重组后的TCP数据包。

步骤S4、从重组后的TCP数据包中过滤出HTTP协议数据包。

图3示出了本发明实施例中TCP协议数据包重组与过滤步骤的流程示意图。从图3可见,本实施例中计算TCP会话哈希值的方法具体为:先对TCP协议数据包的头部进行解析,提取TCP会话连接四元组。其中,所述TCP会话连接四元组为:源IP地址、目的IP地址、源端口号、目的端口号。然后,对所述TCP会话连接四元组进行异或位移哈希运算,并将运算获取的TCP会话哈希值存至哈希表中。在根据以上方法计算得到TCP会话哈希值之外,将属于同一TCP会话(即具有相同TCP会话哈希值)的TCP协议数据包按照序列号存储在二叉排序树中。其中,二叉排序树的每个节点都包含TCP数据包的ACK(确认号)、数据包长度、连接状态等信息。之后,对二叉排序树进行中序遍历以得到重组后的数据包,即相当于对属于同一TCP会话的数据包进行排序。在进行数据包重组之后,再从重组后的TCP数据包中过滤出HTTP协议数据包。

在本发明实施例中,根据TCP会话连接四元组的特性使用基于异或位移的哈希算法来计算哈希值,该算法在执行效率和哈希值均匀性两个方面都有较好的适应性;通过哈希表能够快速定位大量并发会话连接,使得本发明能够满足高速、大流量网络情况下的数据还原需求。进一步的,通过二叉排序树完成数据包的重组,使得在接收到乱序的数据包后无需将数据包放入失序报文队列,而是直接根据TCP数据包的序列号将数据包放到二叉排序树的相应节点,待数据包接收完毕后对二叉排序树进行中序遍历,得到重组后的数据包。这样一来,能够快速完成数据包的查找和重组,提高内存空间利用率。

步骤S5、对所述HTTP协议数据包进行内容还原。

图4示出了本发明实施例所采用的一种数据还原步骤的流程示意图。从图4可见,数据还原流程具体包括步骤S501至步骤S503。

在步骤S501中,解析HTTP协议数据包的头部,获取模板匹配所需的头部信息。

在本实施例中,所述模板匹配所需的头部信息为由请求类型Get/Post、Host(请求主机)、URL(统一资源定位符)、Referer(参考)字段构成的四元组信息。在具体实施时,本领域技术人员还可对所述模板匹配所需的头部信息进行改动。比如,将所述模板匹配所需的头部信息修改为由请求类型Get/Post、Host、URL构成的三元组信息。只要不影响本发明的实施,任何对所述模板匹配所需的头部信息的改动都在本发明的保护范围内。

在步骤S502中,将所述头部信息与模板库中各模板的对应信息进行匹配,找到与所述HTTP协议数据包相对应的模板结构体。

在本实施例中,将步骤S501中得到的四元组信息与系统模板库中各模板对应的四元组信息进行逐一匹配,直到找到与HTTP协议数据包相匹配的模板结构体。在具体实施时,可根据需要在模板库中设置多种模板。比如,设置163邮箱、新浪邮箱等邮箱模板,设置Facebook、微博等社交平台模板。

在步骤S503中,根据模板结构体中的特征值对HTTP协议数据包进行内容提取。

在该步骤中,不同的模板结构体可对应不同的特征值。例如,在邮箱类的模板结构体中,其特征值可以为:Domain(域)、From Address(发件地址)、To Address(收件地址)、Subject(主题)。在具体实施时,本领域技术人员还可根据需要选取其他模板特征值。只要不影响本发明的实施,任何对所述特征值所作的改动都在本发明的保护范围内。

在本发明实施例中,通过步骤S501至步骤S503,能够基于预设模板对HTTP协议数据包进行内容提取,提高了HTTP协议数据包的还原效率。而且,还可通过增加模板的方式适应更多的HTTP协议,以提高数据还原的灵活性。

在另一个实施例中,除了步骤S1至步骤S5,基于HTTP协议的数据还原方法还包括:步骤S6、将还原后的数据内容保存成bcp文件并输出。

下面对本发明实施例中的基于HTTP协议的数据还原系统进行详细描述。从图5可见,该实施例中的数据还原系统具体包括:数据包捕获模块1、第一过滤模块2、数据包重组模块3、第二过滤模块4、数据还原模块。

数据包捕获模块1,用于捕获网络中的数据包。由图6可见,本发明实施例中的数据包捕获模块1具体包括:初始化单元101、数据包捕获单元102。初始化单元101用于对网卡、数据包捕获单元进行初始化。其中,对网卡进行初始化主要包括:加载网卡驱动,并为网卡驱动分配内存空间;对数据包捕获单元102进行初始化主要包括:建立存储空间表,将网卡驱动中分配的内存空间映射到用户空间,对中断函数和DMA(直接内存访问)缓存分配函数进行初始化。数据包捕获单元102,用于将网卡驱动的内存空间中的数据包映射至用户空间。其中,所述网卡驱动的内存空间中的数据包是网卡通过DMA方式写入的。

第一过滤模块2,用于从捕获的数据包中过滤出TCP协议数据包。具体来说,数据包捕获模块1将捕获的网络数据包传给第一过滤模块2,第一过滤模块2对捕获的数据包按照网络协议的封装顺序逐层进行识别,以将包含TCP协议的数据包过滤出来。

数据包重组模块3,用于计算TCP协议数据包的TCP会话哈希值、并将得出的TCP会话哈希值存至哈希表中;将TCP会话哈希值相同的数据包存储至二叉排序树中;对所述二叉排序树进行中序遍历得到重组后的TCP数据包。

具体来说,数据包重组模块3在计算所述TCP协议数据包的TCP会话哈希值时可采用以下方式:数据包重组模块3先对TCP协议数据包的头部进行解析,提取TCP会话连接四元组。其中,所述TCP会话连接四元组为:源IP地址、目的IP地址、源端口号、目的端口号。然后,数据包重组模块3对提取的TCP会话连接四元组进行异或位移哈希运算,并将运算获取的TCP会话哈希值存至哈希表中。在计算得到TCP会话哈希值之外,数据包重组模块3还将属于同一TCP会话(即具有相同TCP会话哈希值)的TCP协议数据包按照序列号存储在二叉排序树中。其中,二叉排序树的每个节点都包含TCP数据包的ACK(确认号)、数据包长度、连接状态等信息。之后,数据包重组模块3对二叉排序树进行中序遍历以得到重组后的数据包。在本发明实施例中,通过计算哈希值生成哈希表能够快速定位大量并发会话连接,使得数据还原系统能够满足高速、大流量网络情况下的数据还原需求。进一步的,通过二叉排序树完成数据包的重组,能够快速完成数据包的查找和重组,提高内存空间利用率。

第二过滤模块4,用于从重组后的TCP数据包中过滤出HTTP协议数据包。

数据还原模块5,用于对所述HTTP协议数据包进行内容还原。由图7可见,本发明实施例中的数据还原模块具体包括:解析单元501、模板匹配单元502、内容提取单元503。

解析单元501,用于解析所述HTTP协议数据包的头部,获取模板匹配所需的头部信息。

其中,所述模板匹配所需的头部信息为由请求类型Get/Post、Host(请求主机)、URL(统一资源定位符)、Referer(参考)字段构成的四元组信息。在具体实施时,本领域技术人员还可对所述模板匹配所需的头部信息进行改动。比如,将所述模板匹配所需的头部信息修改为由请求类型Get/Post、Host、URL构成的三元组信息。只要不影响本发明的实施,任何对所述模板匹配所需的头部信息的改动都在本发明的保护范围内。

模板匹配单元502,用于将所述头部信息与模板库中各模板的对应信息进行匹配,找到与所述HTTP协议数据包相对应的模板结构体。

具体地,模板匹配单元502将解析单元501获取的数据包的四元组信息与系统模板库中各模板对应的四元组信息进行逐一匹配,直至找到与数据包相匹配的模板结构体。在具体实施时,可根据需要在模板库中设置多种模板。比如,设置163邮箱、新浪邮箱等邮箱模板,设置Facebook、微博等社交平台模板。

内容提取单元503,用于根据模板结构体中的特征值对HTTP协议数据包进行内容提取。

具体来说,内容提取单元503可根据模板匹配单元502匹配出的模板结构体对对应的HTTP协议数据包进行内容提取。其中,不同的模板结构体可对应不同的特征值。例如,在邮箱类的模板结构体中,其特征值可以为:Domain(域)、From Address(发件地址)、To Address(收件地址)、Subject(主题)。在具体实施时,本领域技术人员还可根据需要选取其他模板特征值。只要不影响本发明的实施,任何对所述特征值所作的改动都在本发明的保护范围内。

在本发明实施例中,通过解析单元501、模板匹配单元502、内容提取单元503的配合,能够基于预设模板对HTTP协议数据包进行内容提取,提高了HTTP协议数据包的还原效率。而且,还可通过增加模板的方式适应更多的HTTP协议,以提高数据还原的灵活性。

在另一个实施例中,基于HTTP协议的数据还原系统还包括:结果输出模块。结果输出模块,用于将还原后的数据内容保存成bcp文件并输出。

虽然参照示例性实施方式对本发明进行了描述,但是应当理解,本发明并不局限于文中详细描述和示出的具体实施方式,在不偏离权利要求书所限定的范围的情况下,本领域技术人员可以对所述示例性实施方式做出各种改变。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1