CN104253863B - 一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法 - Google Patents
一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法 Download PDFInfo
- Publication number
- CN104253863B CN104253863B CN201410468903.2A CN201410468903A CN104253863B CN 104253863 B CN104253863 B CN 104253863B CN 201410468903 A CN201410468903 A CN 201410468903A CN 104253863 B CN104253863 B CN 104253863B
- Authority
- CN
- China
- Prior art keywords
- packet
- timestamp
- sequence number
- value pair
- key
- 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
Links
Abstract
本发明公开了一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法,Map的输入键值对为<偏移量,二进制数据包>,输出键值对为<五元组,时间戳+序列号+数据包有效净荷>。“+”操作表示将时间戳、序列号,数据包有效净荷部分拼成一个大的字节数组,并最终将“时间戳+序列号+数据包有效净荷”保存为Hadoop自带的BytesWritable数据类型。Map的输出经过Shuffle中间过程,完成对输出键值对的分区、排序、合并等过程。将Map输出中相同五元组的“时间戳+序列号+数据包有效净荷”聚集在一起形成键值对<五元组,list(时间戳+序列号+数据包有效净荷)>作为Reduce的输入。最终Reduce的输出键值对为<五元组,重组数据>。本发明提高了运行效率,减少了开销。
Description
技术领域
本发明涉及网络大数据流量分析领域。具体在于一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法。
背景技术
TCP是面向连接的、可靠的传输层协议,在互联网以及对传输可靠性要求较高的网络中得到了广泛的应用。由于互联网协议栈层次复杂、单个数据包的长度有限,应用层数据很有可能被切分为多个片段,由多个数据包负责传输。因此在对应用层的数据进行分析之前,重组TCP会话是必要的前提。
传统的TCP重组技术应用链表、哈希表等数据结构,结合TCP的五元组、确认号、序列号、各个标识位(SYN,ACK,RST,FIN)等信息经过相关的运算来实现。
随着大数据时代的到来,带来了一系列的现实问题,如存储成本高、分析难度大、处理效率低等。有相关研究表明,2012年,全球互联网用户约为23亿,截至2013年全球有一万亿台设备接入互联网,整个互联网流量为56EB(1EB=10亿GB),更有甚者预计2020年全球互联网流量将达到惊人的350亿TB(1TB=1024GB),这一数字已经完全超越了传统TCP会话重组方法的承载能力。目前还缺乏在Hadoop平台实现TCP流重组的算法。
基于以上问题本发明提出了一种基于Hadoop的重组TCP流的MapReduce设计,Hadoop是目前应用最为广泛的分布式平台,尤其适合大数据的处理任务,由于开源、稳定、容错性高、可扩展等特性,深受各大企业的欢迎。HDFS(分布式存储系统)和MapReduce(分布式处理编程模型)是它最为关键的技术。Hadoop的优势在于可以利用HDFS,稳定、可靠、均匀且低成本的将数据复制到集群中的各个节点,根据项目需要灵活的编写MapReduce程序,以键值对的形式对数据进行并行处理,通过增加结点来满足更高要求的任务。与此同时,Hadoop还支持对数据的压缩、排序、聚合、衔接传统关系数据库等功能。
发明内容
针对以上现有技术中的不足,本发明的目的在于提供一种提高运行效率,减少开销的基于Hadoop平台和分布式处理编程模型的TCP流重组方法。本发明的技术方案如下:一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法,将分布式处理编程模型MapReduce分为Map阶段和Reduce阶段,其中数据以block的形式存储在分布式存储系统HDFS中,Map阶段的步骤为:
步骤A1、将数据包映射到键值对,形成输入键值对<偏移量,二进制数据包>;
步骤A2、提取数据包的五元组,包括源IP,目的IP,源端口,目的端口,传输层协议类型;
步骤A3、判断传输层协议是否为TCP协议,若该传输层协议不是TCP协议,则读取下一个键值对;若该传输层协议是TCP协议,则提取数据包的序列号、时间戳,有效净荷,并判断该有效净荷的长度,若有效净荷长度为零,则忽略该数据包,读取下一个键值对,否则跳转到步骤A4;
步骤A4、输出键值对<五元组,时间戳+序列号+数据包有效净荷>,“+”操作表示将时间戳、序列号,数据包有效净荷部分拼成一个大的字节数组,并最终将“时间戳+序列号+数据包有效净荷”保存;
Reduce阶段的步骤为:
步骤B1、Reduce之前平台Hadoop将Map阶段输出中相同五元组的“时间戳+序列号+数据包有效净荷”聚集在一起形成键值对<五元组,list(时间戳+序列号+数据包有效净荷)>作为Reduce的输入;
步骤B2、依据时间戳,按照时间先后的顺序对list进行排序,所述list包括时间戳+序列号+数据包有效净荷;
步骤B3、删除经过排序后的list中TCP序列号相同的多余记录;
步骤B4、将经过排序后list中每个记录的时间戳、序列号去掉,形成只包含数据包有效净荷的list;
步骤B5:按照顺序合并只包含数据包有效净荷的list中的每个记录,完成重组;
步骤B6:输出键值对<五元组,重组数据>,完成TCP流的重组。
进一步的,Map阶段的步骤中A1步骤中通过修改InputFormat完成分片到键值对的映射。
进一步的,步骤A4中的输出键值对<五元组,时间戳+序列号+数据包有效净荷>保存为Hadoop自带的BytesWritable数据类型。
本发明的优点及有益效果如下:
本发明利用Hadoop并行处理大数据的的优势和Reduce的数据汇总功能,将同一个TCP流的所有数据包的有效净荷汇总到一起排序、去重,合并来达到重组目的,无需链表或者哈希表之类的复杂数据结构,提高运行效率,减少开销。
附图说明
图1所示为本发明优选实施例的MapReduce流程图;
图2:Map阶段流程图;
图3:Reduce阶段流程图。
具体实施方式
下面结合附图给出一个非限定的实施例对本发明作进一步的阐述。但是应该理解,这些描述只是示例的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
如图1所示,本发明需要一个MapReduce任务,海量数据全部以block(默认64MB)的形式存储在HDFS中,修改InputFormat完成分片到键值对的映射,Map的输入键值对为<偏移量,二进制数据包>,输出键值对为<五元组,时间戳+序列号+数据包有效净荷>。Map的输出经过Shuffle中间过程,完成对输出键值对的分区、排序、合并等过程。将Map输出中相同五元组的“时间戳+序列号+数据包有效净荷”聚集在一起形成键值对<五元组,list(时间戳+序列号+数据包有效净荷)>作为Reduce的输入。最终Reduce的输出键值对为<五元组,重组数据>。
如图2所示,Map阶段具体过程如下:
步骤1:完成数据包到键值对的映射,形成输入键值对<偏移量,二进制数据包>。
步骤2:提取数据包的五元组(源IP,目的IP,源端口,目的端口,传输层协议类型)。
步骤3:判断传输层协议是否为TCP协议,若是则提取数据包的序列号、时间戳,有效净荷,若有效净荷长度为零,则忽略该数据包。
步骤4:输出键值对<五元组,时间戳+序列号+数据包有效净荷>。“+”操作表示将时间戳、序列号,数据包有效净荷部分拼成一个大的字节数组,并最终将“时间戳+序列号+数据包有效净荷”保存为Hadoop自带的BytesWritable数据类型。
如图3所示,Reduce阶段具体过程如下:
步骤1:Reduce之前Hadoop将Map输出中相同五元组的“时间戳+序列号+数据包有效净荷”聚集在一起形成键值对<五元组,list(时间戳+序列号+数据包有效净荷)>作为Reduce的输入。
步骤2:依据时间戳,按照时间先后的顺序对list(时间戳+序列号+数据包有效净荷)进行排序。
步骤3:删除经过排序后的list(时间戳+序列号+数据包有效净荷)中TCP序列号相同的多余记录。
步骤4:将经过排序后list(时间戳+序列号+数据包有效净荷)中每个记录的时间戳、序列号去掉,形成list(数据包有效净荷)。
步骤5:按照顺序合并list(数据包有效净荷)中的每个记录,完成重组。
步骤6:输出键值对<五元组,重组数据>。
本发明利用Hadoop并行处理大数据的的优势和Reduce的数据汇总功能,将同一个TCP流的所有数据包的有效净荷汇总到一起排序、去重,合并来达到重组目的,无需链表或者哈希表之类的复杂数据结构,提高运行效率,减少开销。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明方法权利要求所限定的范围。
Claims (3)
1.一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法,其特征在于:分布式处理编程模型MapReduce分为Map阶段和Reduce阶段,其中数据以分块block的形式存储在分布式存储系统HDFS中,Map阶段的步骤为:
步骤A1、将分块的数据包通过采用切片的方法进行分片,并映射到键值对,形成输入键值对<偏移量,二进制数据包>;
步骤A2、提取数据包的五元组,包括源IP,目的IP,源端口,目的端口,传输层协议类型;
步骤A3、判断传输层协议是否为TCP协议,若该传输层协议不是TCP协议,则读取下一个键值对;若该传输层协议是TCP协议,则提取数据包的序列号、时间戳,有效净荷,并判断该有效净荷的长度,若有效净荷长度为零,则忽略该数据包,读取下一个键值对,否则跳转到步骤A4;
步骤A4、输出键值对<五元组,时间戳+序列号+数据包有效净荷>,“+”操作表示将时间戳、序列号,数据包有效净荷部分拼成一个大的字节数组,并最终将“时间戳+序列号+数据包有效净荷”保存;
Reduce阶段的步骤为:
步骤B1、Reduce之前平台Hadoop将Map阶段输出中相同五元组的“时间戳+序列号+数据包有效净荷”聚集在一起形成键值对<五元组,list(时间戳+序列号+数据包有效净荷)>作为Reduce的输入;
步骤B2、依据时间戳,按照时间先后的顺序对list进行排序,所述list包括时间戳+序列号+数据包有效净荷;
步骤B3、删除经过排序后的list中TCP序列号相同的多余记录;
步骤B4、将经过排序后list中每个记录的时间戳、序列号去掉,形成只包含数据包有效净荷的list;
步骤B5:按照顺序合并只包含数据包有效净荷的list中的每个记录,完成重组;
步骤B6:输出键值对<五元组,重组数据>,完成TCP流的重组。
2.根据权利要求1所述的基于Hadoop平台和分布式处理编程模型的TCP流重组方法,其特征在于:Map阶段的步骤中A1步骤中通过修改InputFormat完成分片到键值对的映射。
3.根据权利要求1所述的基于Hadoop平台和分布式处理编程模型的TCP流重组方法,其特征在于:步骤A4中的输出键值对<五元组,时间戳+序列号+数据包有效净荷>保存为Hadoop自带的BytesWritable数据类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410468903.2A CN104253863B (zh) | 2014-09-15 | 2014-09-15 | 一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410468903.2A CN104253863B (zh) | 2014-09-15 | 2014-09-15 | 一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104253863A CN104253863A (zh) | 2014-12-31 |
CN104253863B true CN104253863B (zh) | 2017-07-28 |
Family
ID=52188386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410468903.2A Active CN104253863B (zh) | 2014-09-15 | 2014-09-15 | 一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104253863B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107294877B (zh) * | 2016-03-31 | 2020-05-08 | 阿里巴巴集团控股有限公司 | 一种tcp流重组方法和装置 |
CN107332753A (zh) * | 2017-07-24 | 2017-11-07 | 佛山易识科技有限公司 | 一种网络数据包乱序传输方法 |
CN108289125B (zh) * | 2018-01-26 | 2021-05-28 | 华南理工大学 | 基于流式处理的tcp会话重组与统计数据提取方法 |
CN109104426B (zh) * | 2018-08-21 | 2020-05-22 | 西安交通大学 | 一种基于发包速率的加密流量分析防御方法 |
CN109871948A (zh) * | 2019-03-26 | 2019-06-11 | 中国人民解放军陆军工程大学 | 一种基于二维卷积神经网络的应用层协议识别方法 |
CN114157730A (zh) * | 2021-10-26 | 2022-03-08 | 武汉光迅信息技术有限公司 | 一种报文去重的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488960A (zh) * | 2009-03-04 | 2009-07-22 | 哈尔滨工程大学 | 基于并行处理的tcp协议及其数据还原装置及方法 |
CN101841545A (zh) * | 2010-05-14 | 2010-09-22 | 中国科学院计算技术研究所 | 一种tcp流重组拼包方法和装置 |
CN102404340A (zh) * | 2011-12-16 | 2012-04-04 | 山东中创软件商用中间件股份有限公司 | 一种Tcp重组方法及装置 |
CN103117948A (zh) * | 2013-02-22 | 2013-05-22 | 桂林电子科技大学 | 基于fpga的分级并行高速网络tcp流重组方法 |
CN103888449A (zh) * | 2014-03-05 | 2014-06-25 | 亿赞普(北京)科技有限公司 | 一种报文重组方法和装置 |
-
2014
- 2014-09-15 CN CN201410468903.2A patent/CN104253863B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488960A (zh) * | 2009-03-04 | 2009-07-22 | 哈尔滨工程大学 | 基于并行处理的tcp协议及其数据还原装置及方法 |
CN101841545A (zh) * | 2010-05-14 | 2010-09-22 | 中国科学院计算技术研究所 | 一种tcp流重组拼包方法和装置 |
CN102404340A (zh) * | 2011-12-16 | 2012-04-04 | 山东中创软件商用中间件股份有限公司 | 一种Tcp重组方法及装置 |
CN103117948A (zh) * | 2013-02-22 | 2013-05-22 | 桂林电子科技大学 | 基于fpga的分级并行高速网络tcp流重组方法 |
CN103888449A (zh) * | 2014-03-05 | 2014-06-25 | 亿赞普(北京)科技有限公司 | 一种报文重组方法和装置 |
Non-Patent Citations (1)
Title |
---|
"采用云计算技术的网络流量监测";王小平等;《电讯技术》;20140628(第5期);650-655 * |
Also Published As
Publication number | Publication date |
---|---|
CN104253863A (zh) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104253863B (zh) | 一种基于Hadoop平台和分布式处理编程模型的TCP流重组方法 | |
CN104123280B (zh) | 文件比对方法和设备 | |
CN106844507B (zh) | 一种数据批处理的方法及设备 | |
CN103281213B (zh) | 一种网络流量内容提取和分析检索方法 | |
CN103970722B (zh) | 一种文本内容去重的方法 | |
CN103327052B (zh) | 数据存储方法和系统以及数据访问方法和系统 | |
CN107665191A (zh) | 一种基于扩展前缀树的私有协议报文格式推断方法 | |
CN104331435A (zh) | 一种基于Hadoop大数据平台的低影响高效率的海量数据抽取方法 | |
CN105989129A (zh) | 实时数据统计方法和装置 | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
CN107070897B (zh) | 入侵检测系统中基于多属性哈希去重的网络日志存储方法 | |
CN108255966A (zh) | 一种数据迁移方法及存储介质 | |
CN108804661A (zh) | 一种云存储系统中基于模糊聚类的重复数据删除方法 | |
CN103559017A (zh) | 基于gpu异构计算平台的字符串匹配方法及系统 | |
CN108399231A (zh) | 一种数据采集方法及Flume数据采集客户端 | |
CN115037543A (zh) | 一种基于双向时间卷积神经网络的异常网络流量检测方法 | |
CN112968872A (zh) | 基于自然语言处理的恶意流量检测方法、系统、终端 | |
CN106021285A (zh) | 一种基于Hadoop平台的海量数据增量抽取与分析方法 | |
CN103955517A (zh) | 将文档型数据库的数据转换至关系型数据库的方法及系统 | |
CN103617215B (zh) | 一种利用数据差异算法生成多版本文件的方法 | |
CN105677579B (zh) | 缓存系统中的数据访问方法和系统 | |
CN103095718B (zh) | 一种基于Hadoop的应用层协议特征提取方法 | |
CN103761298B (zh) | 一种基于分布式架构的实体匹配方法 | |
CN106161056B (zh) | 周期型数据的分布式缓存运维方法及装置 | |
CN103530297B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |