一种基于网络数据流的HTTP内容还原方法及系统
技术领域
本发明涉及网络管理技术,尤其是一种基于网络数据流的HTTP内容还原技术。
背景技术
在网络管理中,有时需要对上网用户访问的内容进行监控,具体做法是在客户端及服务端接入监测点,复制两者来往的数据流,从数据流中还原HTTP内容,达到监视上网内容的目的。
现有的技术方案包括的步骤有:抓取实时网络数据流;过滤HTTP协议的数据流;重组HTTP会话;搜索传输html的HTTP会话,并根据HTTP协议头解码二进制数据,然后保存数据为html文件;用浏览器打开html文件。
现有的技术方案存在这样的缺陷:
1.由于访问一个网站可能涉及到多个HTTP会话和多个TCP会话,如果只针对一个主要的传输html的HTTP会话进行内容还原,其还原出来的数据准确性差,或者还原出来的网页只有基础的文字信息。
2.由于是进行实时抓包,实时还原,设置超时时长便成为一个问题。超时时长设置长了,系统的性能会下降,系统需要更多的缓存来缓存数据;设置超时时长短了,会导致数据还原失败,或者还原出来的内容丢失部分数据。
发明内容
本发明的目的在于提供一种更准确、全面还原指定时间内指定客户端IP地址访问的HTTP内容的技术。
本发明提供的基于网络数据流的HTTP内容还原方法,包括数据包采集步骤及HTTP内容还原步骤;其中,
数据包采集步骤包括:
步骤a1:找到某局域网的出口交换机,复制出口交换机的Ipv4数据包到缓存区;
步骤a2:将缓存区中的Ipv4数据包分流到不同的IP会话中;
步骤a3:将分类结果及数据包存储到磁盘;
HTTP内容还原步骤包括:
步骤b1:接收用户通过控制台指定的时间范围及至少一个IP地址;
步骤b2:从所述磁盘中读取在指定时间范围内及指定IP地址的数据包;
步骤b3:识别出其中属于TCP会话的数据包;
步骤b4:对TCP会话的数据包进行重组,恢复各个数据包之间的正常顺序;
步骤b5:识别出重组后的TCP会话数据包属于HTTP会话的数据包;
步骤b6:将每条HTTP会话进行数据还原;
步骤b7:在还原得到的数据中区分出主HTML数据、子HTML数据及资源数据;并查找到各个主HTML数据关联的子HTML数据及资源数据;将还原得到的数据及其之间的关联关系发送给控制台。
进一步,所述数据包采集步骤及HTTP内容还原步骤在服务器上执行;所述控制台与服务器具有信号连接,所述控制台用于接收用户输入的所述时间范围及所述IP地址,向服务器发送HTTP数据还原请求以及接收并显示服务器返回的还原数据及各数据之间的关联关系。
所述步骤b4进一步包括将属于同一TCP会话中的数据包依据数据包的类型、发送序号及接收序号排序;
其中,数据包的类型包括客户端发送的数据包及服务器返回的数据包;
排序后的数据包至少满足这样的规则:排序在前的客户端发送的数据包的发送序号小于或等于排序在其后的服务器返回的数据包的接收序号。
本发明还提供了一种基于网络数据流的HTTP内容还原系统,包括数据包采集模块及HTTP内容还原模块;其中,
数据包采集模块包括:
复制子模块,用于找到某局域网的出口交换机,复制出口交换机的Ipv4数据包到缓存区;
分流子模块,将缓存区中的Ipv4数据包分流到不同的IP会话中;
存储子模块,用于将分类结果及数据包存储到磁盘;
HTTP内容还原模块包括:
还原参数接收子模块,用于接收用户通过控制台指定的时间范围及至少一个IP地址;
读取子模块,用于从所述磁盘中读取在指定时间范围内及指定IP地址的数据包;
TCP会话识别子模块,用于识别出其中属于TCP会话的数据包;
TCP会话重组子模块,用于对TCP会话的数据包进行重组,恢复各个数据包之间的正常顺序;
HTTP会话识别子模块,用于识别出重组后的TCP会话数据包属于HTTP会话的数据包;
HTTP会话还原子模块,用于将每条HTTP会话进行数据还原;
关联子模块,用于在还原得到的数据中区分出主HTML数据、子HTML数据及资源数据;并查找到各个主HTML数据关联的子HTML数据及资源数据;将还原得到的数据及其之间的关联关系发送给控制台。
进一步,还包括交互模块,用于接收用户输入的所述时间范围及所述IP地址,向服务器发送HTTP数据还原请求以及接收并显示服务器返回的还原数据及各数据之间的关联关系。
所述TCP会话重组子模块进一步用于将属于同一TCP会话中的数据包依据数据包的类型、发送序号及接收序号排序;
其中,数据包的类型包括客户端发送的数据包及服务器返回的数据包;
排序后的数据包至少满足这样的规则:排序在前的客户端发送的数据包的发送序号小于或等于排序在其后的服务器返回的数据包的接收序号。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明采用全流量存储、对每个HTTP会话进行逐一还原并将还原数据得到的主HTML数据、子HTML数据及资源数据进行关联,因此还原的准确性非常高;控制台完成交互工作,接收用户指定的还原参数、显示还原结果,其可视化展示使得结果一目了然;在进行HTTP数据还原时,可采用多任务模式处理,使得还原效率也比较高。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为本发明方法中数据包抓取步骤的流程图。
图2为本发明方法中HTTP内容还原步骤的流程图。
图3为本发明一个具体实施例中控制器与还原服务器的连接关系示意图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明提供的基于网络数据流的HTTP内容还原方法,包括数据包采集步骤及HTTP内容还原步骤。
参见图1,数据包采集步骤包括:
步骤a1:一般来说,HTTP内容访问监控是对局域网内的客户端计算机进行的,局域网中各个计算机与互联网服务器(提供浏览内容的,与本发明中的还原服务器相区别)之间的信息交互均要通过局域网的出口交换器,因此需要找到该局域网的出口交换机,复制出口交换机的Ipv4数据包到缓存区。
更具体的,从预先准备好的内存缓存队列中取出一块可用的数据包缓存区,判断该数据包是否是Ipv4数据包,如是则将数据包存入该缓存区,并将该缓存标记为当前缓存区,若不是则丢弃。新的Ipv4数据包到来时继续存入当前缓存区,如果当前缓存空间不够,则从缓存队列中取出新的缓存区存储数据包,并将新的缓存区标记为当前缓存;已存满的缓存区数据包存入处理队列,等待分析线程处理。
步骤a2:分析线程逐一查看数据包,根据数据包内容将其分到不同的IP会话中;
步骤a3:将分类结果,即各数据包所属的IP会话,及数据包存储到磁盘。
HTTP内容还原步骤包括:
步骤b1:接收用户通过控制台指定的时间范围及至少一个IP地址以便得到指定时间范围内,指定IP地址的主机接收或发出的数据包;在其他实施例中用户可以指定一个IP地址的范围,对多个主机进行监管。
步骤b2:从所述磁盘中读取在指定时间范围内及指定IP地址的数据包。
步骤b3:识别出其中属于TCP会话的数据包;在数据包中某些字段用于标识该数据包所属的会话,据此可以识别出属于TCP会话的数据包。
步骤b4:对TCP会话的数据包进行重组,恢复各个数据包之间的正常顺序。由于网络环境的复杂性,原始的TCP会话可能存在重传和乱序,重组是为了解决重传和乱序问题,以便于后续更准确的内容还原。
具体的,依据数据包的类型、发送序号及接收序号,分别对属于同一个TCP会话中的数据包进行排序。其中,数据包的类型包括客户端(局域网内的主机)发送的数据包及互联网服务器返回的数据包。
由于数据包是属于同一会话的数据包,上述两种数据包包括客户端发送给服务器的数据包,以及该服务器返回给该客户端的数据包。发送序号及接收序号是在一次会话中,为了标记发送的数据包的顺序而设置的序号。例如,TCP会话中的数据包的seq标识及ack标识,seq标识指的是发送端发送的数据包的序号,ack标识指的是发送端想要接收的数据包的序号。
经过排序的属于同一个TCP会话的数据包中,排序在前的客户端发送的数据包的发送序号小于或者等于排序在其后的互联网服务器端发送的数据包的接收序号。
具体来讲,客户端与互联网服务器端的数据交互是,客户端向互联网服务器端发送数据包,数据包中既包括发送序号也包括接收序号,发送序号是该数据包的序号,接收序号表明想要互联网服务器端返回的数据包的序号。当互联网服务器端接收到客户端发送的该数据包后,返回的数据包中的发送序号是客户端的接收序号,返回的数据包中的接收序号是客户端的发送序号加1或者加数据包的负载长度。
出口交换机是位于客户端与互联网服,本发明从出口交换机上能获取到上述两种类型的数据包,数据包是按照一定顺序经过出口交换机的。例如,客户端向互联网服务器发送数据包1,数据包1的发送序号为m,接收序号为n,互联网服务器返回数据包2,数据包2的发送序号为n,接收序号为m+1(或者m+数据包2的负载长度)。
需要说明的是,可能会存在数据包重传的情况,即客户端或者服务器重新发送以前发送过的某个数据包。这样,排序后的数据包,可能出现排在前面的客户端发送的数据包的发送序号等于排在其后的服务器返回的数据包的接收序号的情况。
步骤b5:识别出重组后的TCP会话数据包属于HTTP会话的数据包;同样,根据数据包中的某些字段可以识别。
步骤b6:将每条HTTP会话进行数据还原;满足条件的HTTP会话有很多个,此时,我们需要针对每个HTTP会话进行数据还原,还原原理根据HTTP协议(国际标准)来处理,在此不再赘述。
步骤b7:在还原得到的数据中区分出主HTML数据、子HTML数据及资源数据。还原出来的数据中,资源数据是图片格式,且具有特定文件名。主HTML数据不依附于其他数据,主HTML数据中会记载属于其的资源数据的文件名及子HTML数据的名称,根据这样的关系可以查找到各个主HTML数据关联的子HTML数据及资源数据。最后将还原得到的数据及其之间的关联关系发送给控制台。
至此,HTTP内容还原工作完毕。
在其他实施例中,可以采用多线程模式进行HTTP内容还原,可支持多个数据还原线程同时进行,提高数据还原效率。参见图2。
在本发明一个优选实施例中,所述数据包采集步骤及HTTP内容还原步骤在还原服务器上执行的;所述控制台与还原服务器具有信号连接,所述控制台用于接收用户输入的所述时间范围及所述IP地址,向服务器发送HTTP数据还原请求以及接收并显示服务器返回的还原数据及各数据之间的关联关系。本实施例提供了良好的交互界面,可视化展示还原结果。参见图3。
本发明还提供了一种与上述方法步骤一一对应的基于网络数据流的HTTP内容还原软系统。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。