数据包信息存储方法及系统
技术领域
本发明属于通信技术领域,涉及一种数据包信息存储方法及系统。
背景技术
在现有技术中,分析用户的上网行为主要通过采集用户的使用浏览器时产生的报文数据,抓取用户发送至服务器的报文数据包,解析报文数据包的内容,将报文数据包的内容记录下,并存储到日志中。
用户经路由器上报给服务器的上行文件中的报文数据包,可分为三类:
第一类,超文本传输协议(HTTP,HyperText Transfer Protocol)GET报文数据包和超文本传输协议POST报文数据包;
第二类,超文本传输协议中除了GET报文和POST报文之外的其他类型报文数据包;
第三类,基于安全套接层协议的超文本传输协议(HTTPS,Hyper Text TransferProtocol over Secure Socket Layer)报文数据包。
这些三类报文数据包都能够获取到路由器的MAC地址、用户设备的MAC地址和用户设备的IP地址等基本数据。而路由器上报给服务器的数据包中,仅有不到15%的数据属于第一类报文数据包的数据,而其他两类报文数据包的占比超过85%。目前,能够分析出用户行为数据的也只有第一类报文数据包数据;而其他两类报文数据包的占比超过85%的超量数据,对于计算路由器的日用户在线量、用户流失率和用户新增量等数据的统计显得至关重要。
对于第二类报文数据包和第三类报文数据包由于仅需存储路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳,具有极高的重复性。
现有技术的用户数据分析和统计中,这三类报文数据包均是整条存储在数据库中的。由于大量冗余数据的存在,要求提供大的存储空间来存储上述报文数据包的数据,带来存储成本和体积的增加,增加的存储部件甚至会影响设备的散热性能。另外,大量冗余数据的存储无形中增加了数据库的检索难度,降低了数据处理和使用的效率。
发明内容
本发明为了解决上述技术问题,提出一种数据包信息存储方法,适用于路由器上报给服务器的上行文件数据包的存储,其特征在于,包括:
步骤S1,获取待分析的数据包,所述数据包包括第一类型数据包和第二类型数据包;
步骤S2,当所述数据包类型为第一类型数据包时,按照预定规则为所述数据包生成检索信息;
步骤S3,根据所述检索信息在超量数据映射表中检索所述数据包的统计信息;如果检索成功,则更新所述超量数据映射表中所述数据包的所述统计信息;如果检索失败,则将所述数据包的统计信息添加至所述超量数据映射表中。
作为优选,所述第一类型数据包包括基于安装套接层的超文本传输协议数据包。
作为优选,所述第一类型数据包包括所述第一类型数据包包括超文本传输协议HEAD数据包、超文本传输协议PUT数据包、超文本传输协议DELETE数据包、超文本传输协议CONNECT数据包、超文本传输协议OPTIONS数据包、超文本传输协议TRACE数据包。
作为优选,所述第二类型数据包包括超文本传输协议GET数据包和超文本传输协议POST数据包。
作为优选,步骤S2中,根据所述数据包的路由器物理地址信息、设备物理地址信息、设备物联网协议地址信息、时间戳信息,按照预定规则为所述数据包生成检索信息。
作为优选,所述检索信息为包括所述路由器物理地址信息、设备物理地址信息、设备物联网协议地址信息、时间戳信息的检索字符串。
作为优选,所述统计信息包括具有相同的所述检索信息的数据包在统计周期内出现的频次。
作为优选,所述超量数据映射表为键-值存储数据库,所述步骤S3中,以所述数据包的检索信息作为键,以所述数据包的统计信息作为与所述键对应的值,将所述数据包的统计信息添加至所述超量数据映射表中。
本发明还提供一种数据包存储系统,适用于路由器上报给服务器的上行文件数据包的存储,其特征在于,包括:
数据包获取模块,获取待分析的数据包,所述数据包包括第一类型数据包和第二类型数据包;
数据存储模块,存储超量数据映射表;所述超量存储数据映射表为以所述数据包的检索信息作为键,以所述数据包的统计信息作为所述键对应的值的键-值存储数据库;
检索信息生成模块,当所述数据包类型为第一类型数据包时,按照预定规则为所述数据包生成检索信息;
检索模块,根据所述检索信息在超量数据映射表中检索所述数据包的统计信息;
信息更新模块,更新所述超量数据映射表中所述数据包的所述统计信息或者则将所述数据包的统计信息添加至所述超量数据映射表中。
作为优选,所述检索信息生成模块根据所述数据包的路由器物理地址信息、设备物理地址信息、设备物联网协议地址信息、时间戳信息,按照预定规则为所述数据包生成所述检索信息。
本发明采用映射表机制(key-value),对第一类型数据包的四个字段组成的字符串作为key,出现的频次作为value,从而成倍减少协议解析结果数据存储空间。
附图说明
图1是本发明实施例一的数据包存储系统示意图;
图2是本发明实施例一的数据包存储系统的流程图;
图3是本发明的数据包存储系统的超量数据映射表结构图;
图4是本发明实施例二的数据包存储系统示意图;
图5是本发明实施例二的数据包存储系统的流程图;
图6为本发明实施例一的数据包存储方法步骤图;
图7为本发明实施例二的数据包存储方法步骤图。
具体实施方式
以下具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。
实施例一
如图1所示,一种数据包存储系统,适用于路由器上报给服务器的上行文件数据包的存储。包括:
数据包获取模块,用于获取经路由器上报至服务器的报文数据包路由器上报给服务器的上行文件中的数据包超文本传输协议(HTTP,HyperText Transfer Protocol)数据包和基于安全套接层协议的超文本传输协议(HTTPS,Hyper Text Transfer Protocolover Secure Socket Layer)数据包。超文本传输协议是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。超文传输协议报文是面向文本的,报文中的每一个字段都是一些ASCII码串。超文本传输协议有两类报文:请求报文和响应报文。其中,按照请求方法的不同,可以将超文本传输协议请求报文分为:超文本传输协议请求GET报文、超文本传输协议请求POST报文、超文本传输协议请求HEAD报文、超文本传输协议请求PUT报文、超文本传输协议请求DELETE报文、超文本传输协议请求OPTIONS报文、超文本传输协议请求TRACE报文、超文本传输协议请求CONNECT报文。
基于安全套接层协议的超文本传输协议,以安全套接层(SSL,Secure SocketLayer)作为安全基础,相对于超文本传输协议具有更高的安全性。
超文本传输协议和基于安全套接层协议的超文本传输协议报文的都能够获取到路由器的物理(MAC,Media Access Control或者Medium Access Control)地址、通过路由器发送该超文本传输协议请求报文的用于设备的物理地址、通过路由器发送该超文本传输协议请求报文的用户设备的网络协议(IP,Internet Protocol Address)地址、以及该超文本传输协议请求报文的时间戳。
但是,并不是所有的报文数据对于用户行为分析和统计均是有用信息。现有技术将上述所有的报文数据打包存储起来,占用了大量的存储空间。例如,基于超文本传输协议HEAD报文、超文本传输协议请求PUT报文、超文本传输协议请求DELETE报文等超文本传输协议中除了GET和POST报文以外的其他报文和基于安全套接层协议的超文本传输协议报文对于计算路由器的日用户在线量、用户流失率、用户新增量数据的统计显得至关重要,本实施例中将路由器上报至服务器的上行文件中的该部分超文本传输协议报文的数据包定义为第一类型数据包,本实施例中还将路由器上报至服务器的上行文件中的超文本传输协议GET报文和超文本传输协议POST报文定义为第二类型数据包。
数据获取模块还包括数据解析单元,数据解析单元检测数据模块获取的数据包的请求报文中是否存在‘GET’字段或者‘POST’字段,如果没有检测到,则该数据包属于第一类型数据包;如果有检测到,则该数据包属于第二类型数据包。
数据存储模块,包括一个或者多个超量存储数据映射表。超量存储数据映射表为存储在该数据存储模块中的键-值存储数据库。超量存储数据映射表可以有多个,多个超量存储数据映射表分别存储对应不同统计时间段的数据包的相关信息。如图3,每个超量数据映射表P包括键(key)-值(value)对,每个键key对应有一value值,key集(P.key())包含存储在超量数据映射表P中的所有key,key(p)存储数据包的检索信息,key(p)对应的value值为i(p)用于存储数据包的统计信息。本实施例中的统计信息为该数据包的出现频次。
检索信息生成模块,分析由数据包获取模块获取的数据包,当数据包类型为第一类型数据包时,按照预定规则为所述数据包生成检索信息。本实施例中,检索信息生成模块生成检索信息的方法为:解析第一类型数据包,提取包含在数据包中的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳。由于超文本传输协议和基于安全套接层协议的超文本传输协议都是面向文本的,报文中的每一个字段都是一些ASCII码串。本实施例中,检索信息生成模块可以直接根据第一类型数据,将数据包的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳组成字符串作为该数据包的检索信息。
检索模块,根据检索信息在超量数据映射表中检索数据包的统计信息。将检索信息作为key_temp的值,检测key_temp是否存在于超量数据映射表的key集(P.keys())中。
信息更新模块,更新超量数据映射表中数据包的统计信息或者则将数据包的统计信息添加至超量数据映射表中。如果检索模块检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将超量数据映射表中key(p)对应的i(p)执行增1操作,即执行i(p)++。如果检索模块没有检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将key(p)加入到超量数据映射表中,并将key(p)映射的对应i(p)赋值1。
如图6,基于上述数据包存储系统的数据包存储方法:
步骤S1,获取待分析的数据包PAG,由数据获取模块获取数据包集cathpkt文件并且从cathpkt文件读取一个待分析的数据包PAG。数据获取模块首先判断该数据包PAG是否为空,如果为空则重新执行步骤S1分析下一个数据包。如果不为空则通过数据分析单元解析该数据包PAG,检测该数据包PAG中是否存在‘GET’或者‘POST’,如果存在则表明该数据包为超文本传输协议GET报文或者超文本传输协议POST报文,属于第二类数据包。重新执行步骤S1分析下一个数据包。
步骤S2,当数据包类型为第一类型数据包时,按照预定规则为数据包生成检索信息。检索信息生成单元,解析第一类型数据包,提取包含在数据包中的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳。由于超文本传输协议和基于安全套接层协议的超文本传输协议都是面向文本的,报文中的每一个字段都是一些ASCII码串。本实施例中,检索信息生成模块可以直接根据第一类型数据,将数据包的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳组成字符串作为该数据包的检索信息。
步骤S3,检索信息模块根据检索信息在超量数据映射表中检索数据包的统计信息;如果检索成功,则统计更新模块更新超量数据映射表中数据包的统计信息;如果检索失败,则信息更新模块将数据包的统计信息添加至超量数据映射表中。信息更新模块,更新超量数据映射表中数据包的统计信息或者则将数据包的统计信息添加至超量数据映射表中。如果检索模块检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将超量数据映射表中key(p)对应的i(p)执行增1操作,即执行i(p)++。如果检索模块没有检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将key(p)加入到超量数据映射表中,并将key(p)映射的对应i(p)赋值1。
实施例二
如图4所示,一种数据包存储系统,适用于路由器上报给服务器的上行文件数据包的存储。包括:
数据包获取模块,用于获取经路由器上报至服务器的报文数据包路由器上报给服务器的上行文件中的数据包超文本传输协议数据包和基于安全套接层协议的超文本传输协议数据包。
超文本传输协议和基于安全套接层协议的超文本传输协议报文的都能够获取到路由器的物理地址、通过路由器发送该超文本传输协议请求报文的用于设备的物理地址、通过路由器发送该超文本传输协议请求报文的用户设备的网络协议地址、以及该超文本传输协议请求报文的时间戳。
基于超文本传输协议HEAD报文、超文本传输协议请求PUT报文、超文本传输协议请求DELETE报文等超文本传输协议中除了GET和POST报文以外的其他报文和基于安全套接层协议的超文本传输协议报文对于计算路由器的日用户在线量、用户流失率、用户新增量数据的统计显得至关重要,本实施例中将路由器上报至服务器的上行文件中的该部分超文本传输协议报文的数据包定义为第一类型数据包;基于超文本传输协议报文中的超文本传输协议GET报文和超文本传输协议POST报文能够分析出用户行为,本实施例中将路由器上报至服务器的上行文件中的该部分超文本传输协议报文的数据包定义为第二类型数据包。
数据获取模块还包括数据解析单元,数据解析单元检测数据模块获取的数据包的请求报文中是否存在‘GET’字段或者‘POST’字段,如果没有检测到,则该数据包属于第一类型数据包;如果有检测到,则该数据包属于第二类型数据包。
数据存储模块,包括一个或者多个超量存储数据映射表以及用户分析数据表。超量存储数据映射表为存储在该数据存储模块中的键-值存储数据库。超量存储数据映射表可以有多个,多个超量存储数据映射表分别存储对应不同统计时间段的数据包的相关信息。如图3,每个超量数据映射表P包括键(key)-值(value)对,每个键key对应有一value值,key集(P.key())包含存储在超量数据映射表P中的所有key,key(p)存储数据包的检索信息,key(p)对应的value值为i(p)用于存储数据包的统计信息。本实施例中的统计信息为该数据包的出现频次。用户分析数据表存储第二类型数据包的所有数据,以为用户行为分析提供数据支持。
检索信息生成模块,分析由数据包获取模块获取的数据包,当数据包类型为第一类型数据包时,按照预定规则为所述数据包生成检索信息。本实施例中,检索信息生成模块生成检索信息的方法为:解析第一类型数据包,提取包含在数据包中的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳。由于超文本传输协议和基于安全套接层协议的超文本传输协议都是面向文本的,报文中的每一个字段都是一些ASCII码串。本实施例中,检索信息生成模块可以直接根据第一类型数据,将数据包的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳组成字符串作为该数据包的检索信息。
检索模块,根据检索信息在超量数据映射表中检索数据包的统计信息。将检索信息作为key_temp的值,检测key_temp是否存在于超量数据映射表的key集(P.keys())中。
信息更新模块,更新超量数据映射表中数据包的统计信息或者则将数据包的统计信息添加至超量数据映射表中。如果检索模块检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将超量数据映射表中key(p)对应的i(p)执行增1操作,即执行i(p)++。如果检索模块没有检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将key(p)加入到超量数据映射表中,并将key(p)映射的对应i(p)赋值1。当数据包类型为第二类型数据包时,信息更新模块将该数据添加至用户分析数据表中。
如图7,基于上述数据包存储系统的数据包存储方法:
步骤S1,获取待分析的数据包PAG,由数据获取模块获取数据包集cathpkt文件并且从cathpkt文件读取一个待分析的数据包PAG。数据获取模块首先判断该数据包PAG是否为空,如果为空则重新执行步骤S1分析下一个数据包。如果不为空则通过数据分析单元解析该数据包PAG,检测该数据包PAG中是否存在‘GET’或者‘POST’,如果存在则表明该数据包为超文本传输协议GET报文或者超文本传输协议POST报文,属于第二类数据包,则进入步骤S3。
步骤S2,当数据包类型为第一类型数据包时,按照预定规则为数据包生成检索信息。检索信息生成单元,解析第一类型数据包,提取包含在数据包中的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳。由于超文本传输协议和基于安全套接层协议的超文本传输协议都是面向文本的,报文中的每一个字段都是一些ASCII码串。本实施例中,检索信息生成模块可以直接根据第一类型数据,将数据包的路由器MAC地址、用户设备MAC地址、用户设备IP地址和时间戳组成字符串作为该数据包的检索信息。
步骤S3,对于第一类型数据包,信息模块根据检索信息在超量数据映射表中检索数据包的统计信息;如果检索成功,则统计更新模块更新超量数据映射表中数据包的统计信息;如果检索失败,则信息更新模块将数据包的统计信息添加至超量数据映射表中。信息更新模块,更新超量数据映射表中数据包的统计信息或者则将数据包的统计信息添加至超量数据映射表中。如果检索模块检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将超量数据映射表中key(p)对应的i(p)执行增1操作,即执行i(p)++。如果检索模块没有检测到key_temp存在于超量数据映射表的key集中,则信息更新模块将key(p)加入到超量数据映射表中,并将key(p)映射的对应i(p)赋值1。对于第二类型数据包,信息更新模块将数据包添加至用户分析数据表。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。