CN102761517B - 一种高速网络的内容还原方法 - Google Patents

一种高速网络的内容还原方法 Download PDF

Info

Publication number
CN102761517B
CN102761517B CN201110103817.8A CN201110103817A CN102761517B CN 102761517 B CN102761517 B CN 102761517B CN 201110103817 A CN201110103817 A CN 201110103817A CN 102761517 B CN102761517 B CN 102761517B
Authority
CN
China
Prior art keywords
session
tcp
packet
restructuring
reduction method
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110103817.8A
Other languages
English (en)
Other versions
CN102761517A (zh
Inventor
魏亮
谢玮
邓东丰
杨剑锋
祝卓
田慧蓉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Academy of Information and Communications Technology CAICT
Original Assignee
Research Institute of Telecommunications Transmission Ministry of Industry and Information Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Research Institute of Telecommunications Transmission Ministry of Industry and Information Technology filed Critical Research Institute of Telecommunications Transmission Ministry of Industry and Information Technology
Priority to CN201110103817.8A priority Critical patent/CN102761517B/zh
Publication of CN102761517A publication Critical patent/CN102761517A/zh
Application granted granted Critical
Publication of CN102761517B publication Critical patent/CN102761517B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及高速网络的内容还原方法,包括步骤1:将捕获的数据包放入环形缓冲;步骤2:读取数据包并解析获得IP多元组,再计算得到散列值;步骤3:判断散列值是否是新的,若是,执行步骤4,若否,执行步骤5;步骤4:存储报文;步骤5:使用IP多元组在解决冲突的拉链中查找对应的TCP连接会话,若没有找到,解决散列值冲突后返回步骤4,否则执行步骤6;步骤6:进行数据包内容连接,将连接成功的放入排好序的链表中,将连接失败的放入失序的链表等待下一次的重组,然后返回步骤1,同时多个线程分别将各自分段处理的已经完成的重组内容写入硬盘。本发明能够在高速网络环境下,高效、实时地进行高速网络内容还原。

Description

一种高速网络的内容还原方法
技术领域
本发明涉及互联网及物联网的信息管理领域,特别是涉及一种IP报文及基于该IP报文的信息处理方法及装置。
背景技术
TCP/IP(传输控制协议/网际协议)起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代已发展成为计算机全球互联网的基本通信语言和协议。TCP/IP是一个四层的协议系统,每一层负责不同的功能且包含多种协议:
1)链路层:处理与电缆(或其他任何传输媒介)的物理接口细节。
2)网络层:处理分组在网络中的活动,具体包括IP协议、ICMP协议、IGMP协议等。
3)传输层:为互联网中两个端点提供高可靠的数据通信,传输层将应用程序交付的数据分成合适的小块交给并网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。包括TCP协议、UDP协议等。
4)应用层:负责处理特定的应用程序细节,包括HTTP协议、WSP协议等。随着互联网应用范围的扩大,越来越多的新的应用协议被开发并应用于其中。
传输层的TCP协议是一种面向连接的协议,其为互联网用户提供了可靠的数据传输,同时,互联网中大多数流行的应用层协议,如FTP、SMTP、HTTP、WSP等都采用了TCP传输协议。
当前,以TCP/IP为基础建立起来的互联网已经遍布世界的各个角落,作为一种自由、开放的网络结构,在为人们带来便利的同时,网络中的不良信息也随之开始大肆地传播,严重威胁到国家与社会的稳定,如何有效管控这些网络不良信息的网络传播,已成为社会各界普遍关注的主题。
计算机中常用的操作系统(如:Windows、Linux等)都已自带TCP/IP协议栈,在接入到互联网中时,可以十分轻松地处理本地的互联网请求。但是,随着互联网用户呈几何样的增长后,若想在高速网络流量中的超大并发互联网用户环境下对这些非法信息进行有效管控,仅仅依靠单机操作系统中实现的TCP/IP协议栈已经远远不能达到预期的目的,需要重新设计一种新的解决方案来解决此问题。
发明内容
针对现有技术中存在的缺陷和不足,本发明的目的是通过一种高速网络的内容还原方法,能够在高速互联网的环境中快速、正确还原互联网中用户上网访问内容信息和行为特征信息,而且能保证在高速互联网络环境下用户上网访问内容信息和行为特征信息的还原性能,为互联网应用层数据信息的实时还原提供一种非常好的解决方案。
为了实现上述目的,本发明提出一种高速网络的内容还原方法,包括以下步骤:
步骤1:将捕获的数据包放入预先分配好的环形缓冲;
步骤2:从环形缓冲中读取数据包并进行解析,获得TCP连接会话的IP多元组,再通过散列函数计算得到散列值;
步骤3:判断所述散列值是否是新的,若是,执行步骤4,若否,执行步骤5;
步骤4:存储报文并记录该报文的序列号或应答号,然后返回步骤1;
步骤5:使用IP多元组在解决冲突的拉链中查找对应的TCP连接会话,若没有找到对应的TCP连接会话,解决散列值冲突后返回步骤4,否则执行步骤6;
步骤6:根据TCP协议以及步骤4中记录的序列号或应答号进行数据包内容的连接,将连接成功的放入排好序的链表中,将连接失败的放入失序的链表等待下一次的重组,然后返回步骤1,其中,下一次的重组在下一次连接成功后被触发;
同时,多个线程分别将各自分段处理的已经完成的重组内容写入硬盘,并保留排好序的最后一个数据包;当该TCP连接会话全部重组完毕,将保留的最后一个数据包写入硬盘。
作为上述技术方案的优选,所述IP多元组中包括:源IP、源端口、目的IP和目的端口。
作为上述技术方案的优选,所述步骤5中解决散列值冲突的方法使用拉链法。
作为上述技术方案的优选,所述步骤4中从服务器端握手阶段发出的SYN/ACK数据报文开始存储。
作为上述技术方案的优选,所述TCP连接会话全部重组完毕的判断条件具体为:
条件1:查看该TCP连接会话的应用数据是否全部接收完毕,如是,则该TCP连接会话的应用数据已全部接收并重组完毕;
或者,条件2:为该TCP连接会话设定T1定时器和会话权重,若在T1时间内有新的数据包到达则会话权重加w2,若在T1时间内没有新的数据包到达则会话权重减w1,且w2≥w1,当会话权重减小到小于设定的会话权重时,则该TCP连接会话全部接收并重组完毕;
作为上述技术方案的优选,在所述条件2中增加T2定时器且T2≥T1,所述T2定时器在有新的数据包重组后复位,当等待时间T2到达时,则该TCP连接会话全部接收并重组完毕。
作为上述技术方案的优选,在所述步骤6中将已经完成的重组内容写入硬盘之前,根据应用层协议,预先处理重组的TCP连接会话。
作为上述技术方案的优选,所述预先处理包括:提取TCP连接会话中包含的包括文本、图像、音频、和视频的应用数据文件以及包含URL、IP地址、端口、时间戳用户的网络访问行为信息。
作为上述技术方案的优选,设置两种目录存储所述应用数据文件,其中第一目录用于临时存储部分重组的TCP连接会话的应用数据文件,第二目录用于最终存储完整重组的TCP连接会话的应用数据文件以及对应的网络访问信息。
作为上述技术方案的优选,当该TCP连接会话全部重组完毕时,将所述第一目录中临时存储的部分应用数据文件转移到所述第二目录,并将保留的最后一个数据包中的应用数据文件写入所述第二目录。
本发明提出的高速网络的内容还原方法能够在高速网络环境下,高效、实时地进行高速网络内容还原。
并且,本发明的更进一步的优点在于,可以根据不同的应用协议,分别提取并生成图像、文本、音频、视频等内容信息进行高速存储,方便后期进行分析处理。能够实时留存多个并发用户的上网时的提交的URL、IP地址、端口、时间戳等信息,将方便后期分析用户上网行为,方便查询用户的上网行为等。而且,通过本发明提供的方法,并结合其他内容监控方面的处理将可进行高速网络中内容的实时监管,并阻止非法信息的网络传播。
下面结合附图,对本发明的具体实施方式作进一步的详细说明。对于所属技术领域的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。
附图说明
图1为本发明提出的内容还原方法的第一优选实施例的示意图;
图2为本发明提出的内容还原方法的具体实施例的流程图;
图3为具体实施例中数据包的内存重组的流程图;
图4为具体实施例中提出重组后的TCP会话处理的流程图;
图5为具体实施例中提出TCP连接会话的应用层处理的流程图。
具体实施方式
本发明提出一种高速网络的内容还原方法,如图1所示,本发明提出的高速网络的内容还原方法可以包括以下步骤:
步骤1:将捕获的数据包放入预先分配好的环形缓冲;
步骤2:从环形缓冲中读取数据包并进行解析,获得TCP连接会话的IP多元组,再通过散列函数计算得到散列值;
步骤3:判断所述散列值是否是新的,若是,执行步骤4,若否,执行步骤5;
步骤4:存储报文并记录该报文的序列号或应答号,然后返回步骤1;
步骤5:使用IP多元组在解决冲突的拉链中查找对应的TCP连接会话,若没有找到对应的TCP连接会话,解决散列值冲突后返回步骤4,否则执行步骤6;
步骤6:根据TCP协议以及步骤4中记录的序列号或应答号进行数据包内容的连接,将连接成功的放入排好序的链表,将连接失败的放入失序的链表等待下一次的重组,然后返回步骤1,其中,下一次的重组在下一次连接成功后被触发;
同时,多个线程分别将各自分段处理的已经完成的重组内容写入硬盘,并保留排好序的最后一个数据包;当该TCP连接会话全部重组完毕,将保留的最后一个数据包写入硬盘。
以下以一具体实施例详细说明如何实现本发明所提出的内容还原方法。如图2所示,实现本发明提出的内容还原方法的具体方法可以包括以下几个步骤:
1.开始高速网络内容还原流程;
2.启动程序后,将初始化各种参数;
3.当监控到网卡中有网络数据包到达时,读取数据包并放入到程序预先分配的环形缓冲;
4.数据包内存重组感知到环形缓冲中已有捕获到的数据时,将从其中读取并开始内存重组的过程,为保证重组的性能本发明采用多线程的程序设计模式并且采用了一种分段无锁的多线程处理内存重组的方法;
5.为避免系统的内存空间由于存放重组的数据包而被消耗尽,将采用部分重组数据包写入硬盘的技术;
6.在写入硬盘的过程中,可以调用TCP连接会话的应用分析过程,从TCP会话中分别提取出用户上网访问内容信息(包括文本、图像、音频、视频等)和行为特征信息(包括访问的URL、IP地址、端口、时间戳等)分别进行存储;
7.如果收到了停止信号,则处理过程终止,否则将继续读取下一个数据包进行处理。
在上述具体实施例中,步骤3需要联机读取网络数据包,比较常用的捕获网络数据包技术有NDIS技术、原始套接字技术、Libpcap/WinPcap技术等。
其中NDIS技术比较复杂、原始套接字技术只能捕获网络层以上的数据,
Libpcap是由Berkeley大学的Van Jacobson,Craig Leres和StevenMcCanne编写的。该函数库应用广泛,是一个平台独立的网络数据包捕获开发包,并且支持Linux、Solaris和BSD等操作系统平台,几乎只要涉及到网络数据包的捕获功能,都可以使用Libpcap开发包。Libpcap作为一种高层的编程接口,隐藏了操作系统的细节,可以捕获网络上的所有数据包,包括到达其他主机的数据包,且Libpcap中使用了BPF过滤机制,这部分是基于内核的过滤模块,他使Libpcap具有捕获特定数据包的功能,可以滤掉网络上不需要的数据包,而只捕获用户感兴趣的数据包。使用Libpcap可以把从网络上捕获到的数据包存储到一个文件中,还可以把数据包信息从文件中读出,读出的结果与从网络上捕获数据包的结果是一样的。
Winpcap是在BSD许可证下发布的,它主要由加利福尼亚大学的Lawrence Berkeley Laboratory开发。Winpcap是windows平台下一个专业网络数据包捕获开发包,是为Libpcap在windows平台下实现数据包的捕获而设计的,在设计Winpcap时参照了Libpcap,使用方法与Libpcap相似。
Libpcap/WinPcap技术不仅方便在不同操作系统间的程序移植,而且可以高效捕获到链路层以上的数据包,利用其提供的接口函数非常容易进行数据包的解析处理,因此,本实施例采用Libpcap/WinPcap作为捕获数据包的技术,当调用其提供的高层编程接口后,能够通过设置BPF(如:由于HTTP或WSP的传输层都采用TCP传输协议,因此可以设置仅仅捕获端口为80的数据包)来获得需要的网络数据包。然后将获取的数据包放入预先分配好的环形缓冲当中等待内容还原过程的处理,当内容还原过程获知环形缓冲区域中已有待处理的数据时,将从其中读取数据包进行内存重组。若接收到信号或出现异常,则停止获取数据包并退出。
步骤4中从环形缓存中读取TCP数据包后,利用Libpcap/WinPcap提供的函数解析数据包,得到IP四元组:源IP、源端口、目的IP、目的端口,并将IP四元组输入到预先设计好的散列函数进行散列存储,计算得出的散列函数值将均匀分布到整个散列数组表中,并且处理散列函数值冲突的方法采用链表拉链的方式。
散列数组的每一个散列节点包含有两个以链表的方式存储的两种不同意义的TCP数据包队列,其中一条存储部分重组完毕的TCP会话连接中的数据,另外一条存储本TCP会话连接中发生了乱序错误的TCP数据包,并且每一个TCP会话在重组一个新到来的数据包后,都将对已存储的乱序错误的TCP数据包的链表进行一次扫描,试图将已乱序的TCP数据包链接入部分重组好的链表中,尽可能地使其完整,此外对于重传的数据包,系统在判断是重传数据后对其进行丢弃处理。由于所有操作都使用指针操作,因此并未影响到系统的性能。
当新的TCP会话经Libpcap/WinPcap函数库进行解析后,通过散列函数的计算,得出的散列值与现有已存储的TCP连接会话的散列值相冲突的后,将在对应此散列值的散列节点位置链表中新插入一个相同散列值的散列节点,同时依据新插入的TCP连接会话的数据包有可能在短时间内连续到来,因此为了快速接收本会话后续的数据包以完成重组,将总是在本TCP连接会话冲突链表的队头插入这个新的TCP连接会话节点,以保证本条TCP连接会话的后续数据包到达后的快速重组。
数据包的内存重组的具体流程如图3所示:
(1)开始TCP数据包的内存重组过程;
(2)从环形缓冲中读取PCAP数据包并解析TCP数据报文;
(3)解析后获得某一个TCP连接会话的IP四元组:源IP、源端口、目的IP、目的端口;当然,这里可以获得关于TCP连接会话的更多或其他的属性;
(4)将四元组输入预先设计好的散列函数后计算得到散列值,也即插入散列数组的位置;
(5)在散列数组中判断是否是新一个新的散列值,若是,则转向(6),若不是,则转向(7);
(6)为减少处理的TCP数据包,TCP的三次握手阶段报文客户端发送的SYN、ACK等数据包将不被系统存储,系统仅仅针对服务器端握手阶段发出的SYN/ACK数据报文开始存储,并记录此时的序列号seq,将其作为客户端接收应用数据开始的基数iBase=seq+1,并初始化应用数据的长度字段AppLen=0,完成后则转向(1);
(7)若与散列数组中已有的散列值有冲突,则使用四元组在解决冲突的拉链中查找四元组对应的TCP连接会话,转向(8);
(8)若四元组在拉链中没有找到对应的TCP连接会话,则转向(9),否则转向(10);
(9)采用拉链的方式解决散列值冲突,即在每一个冲突的散列值队列的队头插入一个新的散列节点,插入完后则转向(6);
(10)根据TCP协议进行数据包内容的连接,成功连接的放入排好序的链表中,失败的放入失序的链表,等待下一次的重组;
(11)对于每次接收到一个服务器端发送来的应用数据,在重组的同时,计算其应用数据的长度并累加到AppLen当中,并记录seq或ack的序号,便于后续数据包的处理;
(12)乱序的TCP数据报文将被存储到程序临时分配的内存空间,继续等待新一轮的TCP数据报文的重组;
(13)判断是否满足条件进行后续的操作,若是则转(14),否则转(1);
(14)进行重组后的TCP会话处理等操作。
上述具体实施例中的步骤5是将重组完成的数据包写入硬盘的步骤:
高速网络当中同时存在多个并发的TCP连接会话,系统的有限内存如果不加以充分利用终究会被耗尽,为解决这一问题,本发明采取了内存分析和部分写入的技术,来避免系统内存空间的不足。具体处理方法如下:
若某一个TCP连接会话已经重组了部分数据,并放置于排好序的链表当中,则应当尽快将这一部分数据写入硬盘,这种做法将避免内存空间被耗尽并充分提高性能,假设已经重组了某个TCP连接会话的n个TCP数据报文,则将重组好的前n-1个TCP数据报文经分析后写入到硬盘当中,但是此时本条TCP连接会话的散列节点将记录下第n个TCP的报文的序号号(seq)和应答号(ack),便于后续的报文排序;
对于新读取到n+1个TCP数据报文,判断完是否重传数据包后,将进行重组过程。由于系统已经记录了第n个报文的序列号(seq)与应答号(ack),从而可以按照TCP协议栈的规定进行后续报文的重组工作;
重组完第n+1个TCP数据报文后,临时分配的系统内存空间中存储的乱序的TCP数据报文的将被触发进行重组排序,若到来的第n+1个报文没有重组成功,则连接入存放乱序的TCP数据报文的链表中,等待下一次的重组。
为提高内容还原的效率,本发明采用多线程技术,但是多个线程对同一个散列数组进行操作时,势必引起对共享资源的竞争使用,为减少死锁的出现和提高系统的性能,特别地设计了多线程分段的处理方式,即将整个散列数组分解为若干个需要线程管理的段,每一个线程使用同样的功能但只管理预先分配的散列数组段,这样很好地避免了多个线程间资源的竞争问题,在没有影响内容还原效率和没有引起死锁的情况下消除了共享资源的共用问题。对于每一个线程的分段处理域范围[ThreadStartIpos,ThreadEndIpos)由以下公式预先计算得到:
ThreadStartIpos=int((i*MAXHASHLENGTH)/ThreadStartNum);
ThreadEndIpos=int(((i+1)*MAXHASHLENGTH)/ThreadStartNum);
其中,i表示第i个线程,i=0,1,...n,n为整数;ThreadStartIpos是第i个线程的处理域起点散列数组下标;ThreadEndIpos是第i个线程的处理域散列数组终点下标,MAXHASHLENGTH是散列数组的最大长度;ThreadStartNum是当前系统中开启的线程数,int为取整函数。
重组后的TCP会话处理将遵循图4的处理流程:
(1)开始重组后的TCP会话处理;
(2)多个线程分别读取并分析各自段内的TCP连接会话已完成的重组部分;
(3)各线程分别将本段内负责的已经完成的部分重组内容写入硬盘(写入之前可以根据应用层协议分别解析出文本、图像、音频、视频等内容),同时保留排好序的最后一个TCP数据包中包含的信息,后续重组以此包为基准;
(4)判断是否满足TCP连接会话全部重组完毕的条件,只要满足条件1或2当中的任何一个即可断定此TCP连接会话全部重组完毕,可以进行下一步操作,条件1和2分别如下:
条件1:通过查看某一个TCP连接会话的应用数据全部接收完毕与否,来判断此条TCP连接会话的应用数据是否已经全部接收完毕。若此时接收到了TCP协议中用户关闭会话的数据包FIN(无论服务器/客户端发出)或RST数据包,将记录下其中的序列号(seq)或应答号(ack),此时最终接收到的序列号(iEnd)=序列号(seq)或应答号(ack)。若此时iEnd-iBase>=AppLen,则认为服务器端的数据已经接收完毕,则转向(5),否则转向(2);
条件2:为及时将重组完的TCP连接会话写入硬盘,增加T1定时器与会话权重,当T1时间内有新的包到达时,则会话权重加w2,若在T1时间内没有新包到达则会话权重减w1,且w2>=w1,当某一个TCP连接会话的权重减小到小于预先设定的值时,则转向(5),否则转向(2);
高速网络中捕获数据包有可能出现丢包现象而导致某一TCP连接会话长期等待,导致系统系能下降,增加T2定时器且T2>=T1,T2定时在有新的TCP数据包重组后复位,则当等待时间T2到达时,认为服务器端的数据已经接收完毕,则转向(5),否则转向(2);
(5)线程将某一个TCP连接会话在内存中保留的最后一个数据包写入硬盘;
(6)当接收到停止或错误信号后,则停止,否则继续转向(2)。
本实施例在将部分重组的TCP连接会话写入硬盘之前,可以根据应用层协议预先处理重组的TCP连接会话,依据相应的应用协议分别提取出其中包含的文本、图像、音频、视频等信息内容以及URL、IP地址、端口、时间戳等用户的网络访问行为信息,之后写入硬盘中。
本实施例设计两种不同的目录暂时存放经分析过程处理后的应用数据,其包括文本、图像、音频、视频等信息内容,两种目录分别为A型目录和B型目录。
A型目录=(A1,A2,...,An);0<n<11,n为整数。
B型目录=(B1,B2,...,Bn);n>0,n为整数。
A型目录为临时存放某一个TCP连接会话的某一个部分应用数据的目录,A型目录一般设置的数目不多(本实施例规定A型目录的数目小于等于10),线程在选择将部分数据文件缓存到哪一个A型的目录中时,可以通过如下的计算公式得到A型的目录的具体位置:
Dir1Ipos=mod(nHashPos,Dir1Num)+1;
其中,Dir1Ipos:A型目录的编号,nHashPos:此TCP连接会话在整个散列表中的存储位置,Dir1Num:为A型目录的预先设置的目录数量,mod为取模函数。
B型目录为存放还原后的某一个完整TCP连接会话的所有的应用数据文件及其对应的网络访问信息。A型目录的引入主要是为了加快每次查找指定A型目录中部分应用数据文件的速度,方便后续应用数据的快速写入,A型目录的设置将保证每次查找的时间效率不变,否则随着目录中部分应用数据文件的增多,A型目录中将产生大量的部分应用数据文件,严重影响到每一次的文件查找效率,从而导致系统整体性能下降。当某一个TCP连接会话的应用数据文件全部接受完毕后或满足导出条件时,本条TCP连接会话就需要写入硬盘,将把它对应的已完成的部分应用数据文件从A型目录中转移到最终的B型目录中进行存放,同时把此应用数据文件的最后一个应用数据内容写入到文件当中,考虑到B型目录中的文件数目也不能过大,则当某个B型目录中已有的应用数据文件超过预先规定的最大数目时,将转换到另一个B型目录中进行存储。
预先处理重组的TCP连接会话的具体步骤如图5所示:
(1)开始TCP连接会话的应用层处理;
(2)线程读取内存中已经暂存的并且重组完毕的TCP连接会话;
(3)应用层协议分析,根据TCP连接会话中携带的应用层信息进行应用数据解析,解析得到URL、IP地址、端口、时间戳、应用数据内容等信息;
(4)判断应用数据是否是全部的已经完成还原的应用数据文件,若完成则转(6),否则转(5);
(5)计算将要存放的A型目录的具体位置,将部分应用数据写入到相应的A型目录当中;
(6)将部分应用数据文件从缓存A型目录的目录中移动至最终的存放B型目录当中,并且将最后一个应用数据内容写入到相应的数据文件当中,并且,在B型目录存储应用数据的同时,将其对应的网络访问信息也存储下来,因此,每一个B型目录都有其存储的应用数据对应的网络访问信息;
(7)当接收到停止或错误信号时,则程序终止,否则转向(2)。
本发明是一种还原高速、并发网络数据流量的方法,考虑到当前高速网络巨大的并发量,对原有的TCP/IP协议栈进行了进一步的优化,减去了一些影响还原性能的协议栈功能,与此同时也能保证实时地针对网络中的用户应用数据进行还原,并留存相关用户的上网行为信息,确保了还原的正确性和还原的性能。
本发明中使用了多线程无锁处理散列数组的技术。多线程的加解锁将有效保证多线程设计的程序的安全运行,避免对共享资源的争用,但是频繁地使用线程锁,将会消耗掉大量的CPU资源,造成系统运行效率低下,本发明充分考虑了多线程锁带来的负面效应,采用将散列数组分段的方法消除了多线程间的加解锁,不但避免了线程死锁发生的可能性,也节省了大量的CPU资源,提高了整个系统的性能。
本发明还采用了部分重组数据的写入技术。本发明采用部分写入的技术,在依据应用协议处理完部分重组完的应用数据内容信息后,当内存中TCP连接会话达到预定的条件1、条件2时,将TCP会话中最后一个在内存中存储的数据包写入到对应的应用数据文件当中,这种方法有效地减少了对内存的占用并提高了系统的处理能力。
本发明还设置了多类型目录。本发明采用了两种不同的目录进行还原的应用数据文件的存储,A型目录为暂存某一条TCP连接会话的部分还原的应用数据的目录,B型目录为最终存放某一条TCP连接会话完整还原的应用数据的目录,A型目录的每一个目录中的文件数目总是保持在一个相对平稳的数量,这样可以有效提高系统每次查找部分还原应用数据文件的效率从而提高整体写磁盘的效率,每一个B型目录中存放的文件数目也将预先规定一个最大取值,在避免目录崩溃的同时也方便了后期其他过程对其进行分析处理。
虽然,本发明已通过以上实施例及其附图而清楚说明,然而在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的变化和修正,但这些相应的变化和修正都应属于本发明的权利要求的保护范围。

Claims (10)

1.一种高速网络的内容还原方法,其特征在于,包括以下步骤:
步骤1:将捕获的数据包放入预先分配好的环形缓冲;
步骤2:从环形缓冲中读取数据包并开始内存重组并进行解析,获得TCP连接会话的IP多元组,再通过散列函数计算得到散列值;
步骤3:判断所述散列值是否是新的,若是,执行步骤4,若否,执行步骤5;
步骤4:存储报文并记录该报文的序列号或应答号,然后返回步骤1;
步骤5:使用IP多元组在解决冲突的拉链中查找对应的TCP连接会话,若没有找到对应的TCP连接会话,解决散列值冲突后返回步骤4,否则执行步骤6;
步骤6:根据TCP协议以及步骤4中记录的序列号或应答号进行数据包内容的连接,将连接成功的放入排好序的链表中,将连接失败的放入失序的链表等待下一次的重组,然后返回步骤1,其中,下一次的重组在下一次连接成功后被触发;
同时,多个线程分别将各自分段处理的已经完成的重组内容写入硬盘,并保留排好序的最后一个数据包;当该TCP连接会话全部重组完毕,将保留的最后一个数据包写入硬盘;
其中,采用分段无锁的多线程处理内存重组的方法,对重组后的数据采用部分重组数据包写入硬盘的技术。
2.根据权利要求1所述的内容还原方法,其特征在于,所述IP多元组中包括:源IP、源端口、目的IP和目的端口。
3.根据权利要求1所述的内容还原方法,其特征在于,所述步骤5中解决散列值冲突的方法使用拉链法。
4.根据权利要求1所述的内容还原方法,其特征在于,所述步骤4中从服务器端握手阶段发出的SYN/ACK数据报文开始存储。
5.根据权利要求1所述的内容还原方法,其特征在于,所述TCP连接会话全部重组完毕的判断条件具体为:
条件1:查看该TCP连接会话的应用数据是否全部接收完毕,如是,则该TCP连接会话的应用数据已全部接收并重组完毕;
或者,条件2:为该TCP连接会话设定T1定时器和会话权重,若在T1时间内有新的数据包到达则会话权重加w2,若在T1时间内没有新的数据包到达则会话权重减w1,且w2≥w1,当会话权重减小到小于设定的会话权重时,则该TCP连接会话全部接收并重组完毕。
6.根据权利要求5所述的内容还原方法,其特征在于,在所述条件2中增加T2定时器且T2≥T1,所述T2定时器在有新的数据包重组后复位,当等待时间T2到达时,则该TCP连接会话全部接收并重组完毕。
7.根据权利要求1所述的内容还原方法,其特征在于,在所述步骤6中将已经完成的重组内容写入硬盘之前,根据应用层协议,预先处理重组的TCP连接会话。
8.根据权利要求7所述的内容还原方法,其特征在于,所述预先处理包括:提取TCP连接会话中包含的包括文本、图像、音频、和视频的应用数据文件以及包含URL、IP地址、端口、时间戳用户的网络访问行为信息。
9.根据权利要求8所述的内容还原方法,其特征在于,设置两种目录存储所述应用数据文件,其中第一目录用于临时存储部分重组的TCP连接会话的应用数据文件,第二目录用于最终存储完整重组的TCP连接会话的应用数据文件以及对应的网络访问信息。
10.根据权利要求9所述的内容还原方法,其特征在于,当该TCP连接会话全部重组完毕时,将所述第一目录中临时存储的部分应用数据文件转移到所述第二目录,并将保留的最后一个数据包中的应用数据文件写入所述第二目录。
CN201110103817.8A 2011-04-25 2011-04-25 一种高速网络的内容还原方法 Active CN102761517B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110103817.8A CN102761517B (zh) 2011-04-25 2011-04-25 一种高速网络的内容还原方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110103817.8A CN102761517B (zh) 2011-04-25 2011-04-25 一种高速网络的内容还原方法

Publications (2)

Publication Number Publication Date
CN102761517A CN102761517A (zh) 2012-10-31
CN102761517B true CN102761517B (zh) 2015-06-24

Family

ID=47055839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110103817.8A Active CN102761517B (zh) 2011-04-25 2011-04-25 一种高速网络的内容还原方法

Country Status (1)

Country Link
CN (1) CN102761517B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103780610A (zh) * 2014-01-16 2014-05-07 绵阳师范学院 基于协议特征的网络数据恢复方法
CN104333533B (zh) * 2014-09-12 2017-09-08 北京华电天益信息科技有限公司 一种用于工业控制系统网络的数据包零拷贝获取方法
CN104601583B (zh) * 2015-01-21 2017-11-10 国家计算机网络与信息安全管理中心 一种ip流数据在线实时匿名化系统和方法
CN105260378A (zh) * 2015-09-08 2016-01-20 上海上讯信息技术股份有限公司 数据库审计的方法和设备
CN105491158B (zh) * 2016-01-15 2018-12-25 成都科来软件有限公司 一种基于网络数据流的http内容还原方法及系统
CN109246117A (zh) * 2018-09-27 2019-01-18 郑州云海信息技术有限公司 一种pcap数据报文的分析方法、系统及相关装置
CN109040323B (zh) * 2018-10-19 2021-03-16 盛科网络(苏州)有限公司 负载均衡装置
CN109672589A (zh) * 2018-12-29 2019-04-23 江苏博智软件科技股份有限公司 一种基于dpi的数据报文深度识别的实现方法
CN110049037B (zh) * 2019-04-15 2021-12-14 兰州理工大学 一种基于数据链路层的网络视频数据获取方法
CN109995632B (zh) * 2019-05-16 2021-11-02 阳光电源股份有限公司 多机通信系统的通信方法、装置及系统
CN110868422B (zh) * 2019-11-20 2023-04-18 杭州安恒信息技术股份有限公司 一种Http站点检测方法、装置、设备、介质
CN111935102B (zh) * 2020-07-16 2022-08-05 重庆京像微电子有限公司 数据处理方法及装置
CN111629074B (zh) * 2020-07-29 2020-10-30 武汉思普崚技术有限公司 一种网关设备的会话排序方法及装置
CN112685368A (zh) * 2020-12-30 2021-04-20 成都科来网络技术有限公司 超大数据包文件完整会话处理方法、系统及可读存储介质
CN114466079B (zh) * 2022-02-09 2024-02-06 星环信息科技(上海)股份有限公司 请求处理方法、装置、代理服务器及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1937574A (zh) * 2005-09-19 2007-03-28 北京大学 对网络流进行分类、状态跟踪和报文处理的装置和方法
CN1953453A (zh) * 2006-10-25 2007-04-25 北京交通大学 一种IPv6数据高速捕获和快速存储系统及实现方法
CN101068229A (zh) * 2007-06-08 2007-11-07 北京工业大学 一种基于网络过滤器的内容过滤网关实现方法
CN101795230A (zh) * 2010-02-23 2010-08-04 西安交通大学 一种网络流量还原方法
CN101854391A (zh) * 2010-05-25 2010-10-06 南京邮电大学 一种基于对等网络的阿瑞斯协议分析系统的实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002045380A2 (en) * 2000-11-30 2002-06-06 Lancope, Inc. Flow-based detection of network intrusions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1937574A (zh) * 2005-09-19 2007-03-28 北京大学 对网络流进行分类、状态跟踪和报文处理的装置和方法
CN1953453A (zh) * 2006-10-25 2007-04-25 北京交通大学 一种IPv6数据高速捕获和快速存储系统及实现方法
CN101068229A (zh) * 2007-06-08 2007-11-07 北京工业大学 一种基于网络过滤器的内容过滤网关实现方法
CN101795230A (zh) * 2010-02-23 2010-08-04 西安交通大学 一种网络流量还原方法
CN101854391A (zh) * 2010-05-25 2010-10-06 南京邮电大学 一种基于对等网络的阿瑞斯协议分析系统的实现方法

Also Published As

Publication number Publication date
CN102761517A (zh) 2012-10-31

Similar Documents

Publication Publication Date Title
CN102761517B (zh) 一种高速网络的内容还原方法
US10229144B2 (en) NSP manager
US9391892B2 (en) Method and apparatus for managing transport operations to a cluster within a processor
US6854117B1 (en) Parallel network processor array
CN101252591B (zh) 实现上下行数据分离的方法和装置
CN101488960B (zh) 基于并行处理的tcp协议及其数据还原装置及方法
CN108363621B (zh) numa架构下的报文转发方法、装置、存储介质及电子设备
US20100010965A1 (en) Query Management Systems
EP2369751A2 (en) Receiver for error-protected packet-based frame
CN104821924A (zh) 一种网络数据包处理方法、装置和网络处理设备
CN104866528B (zh) 多平台数据采集方法及系统
CN101155122A (zh) 一种基于数据特征的流媒体内容下载方法
CN102158406B (zh) 面向计算机网络链路的智能选路方法
CN104113599B (zh) 一种缓存方法、装置及代理服务器
CN104170349A (zh) 在分组网关上的策略控制实施
WO2014180397A1 (zh) 网络数据包的发送方法及装置
CN109905720B (zh) 命名数据网络下基于视频点播系统的缓存替换方法
US9716673B2 (en) Packet storage method and packet storage apparatus
CN102761608A (zh) Udp会话复用的方法和负载均衡设备
WO2020177379A1 (zh) 分级存储方法、装置、电子设备及计算机可读存储介质
CN112261142A (zh) 一种rdma网络的数据重传方法、装置及fpga
CN109951532B (zh) 一种基于dpdk的流量模型自动变换装置
CN106713462A (zh) 一种网络数据包处理方法和装置
CN102546659A (zh) 面向远过程调用的持久tcp连接方法
CN108075977B (zh) 网络系统控制方法及网络系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211230

Address after: 100191 No. 40, Haidian District, Beijing, Xueyuan Road

Patentee after: CHINA ACADEMY OF INFORMATION AND COMMUNICATIONS

Address before: 100191 block B, No. 52 Huayuan North Road, Haidian District, Beijing

Patentee before: The Research Institute of Telecommunications Transmission MIIT

TR01 Transfer of patent right