CN107277095B - 会话分割方法及装置 - Google Patents
会话分割方法及装置 Download PDFInfo
- Publication number
- CN107277095B CN107277095B CN201610216672.5A CN201610216672A CN107277095B CN 107277095 B CN107277095 B CN 107277095B CN 201610216672 A CN201610216672 A CN 201610216672A CN 107277095 B CN107277095 B CN 107277095B
- Authority
- CN
- China
- Prior art keywords
- data
- data record
- time
- session
- access time
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种会话分割方法及装置。其中,该方法包括:获取客户端设备和服务器之间的网络流量;对所述网络流量按照以下信息进行分组,得到数据分组:所述客户端设备的IP地址和所述客户端设备所访问的所述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间;将从每个所述数据分组中选择的两个数据记录的访问时间进行取差运算,得到差值;并在所述差值大于预设阈值时,将所述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
Description
技术领域
本发明涉及网络安全领域,具体而言,涉及一种会话分割方法及装置。
背景技术
目前针对数据流的会话分割,例如HTTP流量数据,目前主要有两种实现方法:其中,一种方法是使用多次SQL查询和中间表存储的方法来实现会话分割的能力;另一种方法是使用SQL UDF函数编程来实现,无论哪种方法,在工程师的开发量、运行效率以及后期代码的维护成本上都是不太高效的方法,具体存在以下问题:
(1)无论是多次SQL查询和中间表存储还是SQL UDF函数编程,都需要开发比较多的代码,UDF函数更是需要使用SQL或者非SQL程序语言如Python等进行函数开发。
(2)运行效率不高,多次SQL查询和中间表存储方法需要查询多次,另外用户自定义UDF函数的方法,因为函数是用户自定义函数,所以在性能调优上很难做到最优,直接影响整体SQL查询的执行效率。
(3)代码后期的维护工作量大,两种方法都需要编写比较多的代码,所以后期维护成本比较高。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
根据本申请实施例的一个方面,提供了一种会话分割方法,包括:获取客户端设备和服务器之间的网络流量;对所述网络流量按照以下信息进行分组,得到数据分组:所述客户端设备的IP地址和所述客户端设备所访问的所述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间;将从每个所述数据分组中选择的两个数据记录的访问时间进行取差运算,得到差值;并在所述差值大于预设阈值时,将所述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
根据本申请实施例的另一方面,还提供了一种会话分割装置,包括:获取模块,用于获取客户端设备和服务器之间的网络流量;分组模块,用于对所述网络流量按照以下信息进行分组,得到数据分组:所述客户端设备的IP地址和所述客户端设备所访问的所述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间;分割模块,用于将从每个所述数据记录列表中选择的两个数据记录的访问时间进行取差运算,得到差值;并在所述差值大于预设阈值时,将所述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
在本申请实施例中,采用按照客户端设备的IP地址和服务器标识对接收的数据流进行分组,并将每个数据分组内两个数据记录之间的访问时间之差与预设阈值进行比较,在得到的差值大于预设阈值时,将该两个数据记录的访问时间作为一个会话的开始时间和结束时间,以实现对会话的分割,因此可以利用已有的分析函数来实现,从而减少开发工作量和维护工作量,并且,由于上述方法主要是利用数据记录的访问时间差实现会话分割,因此,可以利用相关技术中的已有方式获取上述访问时间(例如分析函数获取),可以对会话分割过程进行性能优化,进而解决了运行效率不高、开发工作量和维护工作量较大的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本申请实施例的一种会话分割方法的计算机终端的硬件结构框图。;
图2是根据本申请实施例的一种可选的会话分割方法的流程图;
图3是根据本申请实施例的一种可选的会话分割原理示意图;
图4是根据本申请实施例的另一种可选的会话分割流程示意图;
图5是根据本申请实施例的一种可选的会话分割装置的结构框图;
图6是根据本申请实施例的一种可选的计算机终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,现将本申请实施例中所涉及到的术语解释如下:
SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库***;
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库***,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
结构化查询语言包含6个部分:
一:数据查询语言(DQL:Data Query Language):
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
二:数据操作语言(DML:Data Manipulation Language):
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
三:事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGINTRANSACTION,COMMIT和ROLLBACK。
四:数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE或DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
六:指针控制语言(CCL):
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
分析函数:分析函数用来计算一组行的聚合值,与聚集函数不同的是分析函数为每组返回多条记录。这个由分析函数定义的行集就叫做窗口。对于每一行而言,在行上的滑动窗口是已定义的,窗口决定了对当前行而言进行计算的行的范围。窗口的大小则可能基于物理的行数或者逻辑间隔。
普通的聚合函数用GROUP BY分组,每个分组返回一个统计值,而分析函数采用PARTITION BY分组,并且每组每行都可以返回一个统计值。
开窗函数:开窗函数就是over([partition_by_clase]order_by_clause)。比如说,我采用sum求和,rank排序等等,但是我根据什么来呢?over提供一个窗口,可以根据什么分组,就用partition by,然后在组内根据什么进行内部排序,就用order by。
会话:在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session)。会话能够把用户与同一用户发出的不同请求之间关联起来。不同用户的会话应当是相互独立的。会话一旦建立就应当一直存在,直到用户空闲时间超过了某一个时间界限,容器才应当释放该会话资源。在会话的存活期间,用户可能给服务器发送了很多请求,该用户的这些请求信息都可以存储在会话中。
实施例1
根据本申请实施例,还提供了一种会话分割方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种会话分割方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的会话分割方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在上述运行环境下,本申请提供了如图2所示的会话分割方法。图2是根据本申请实施例1的会话分割方法的流程图。如图2所示,该方法包括:
步骤S202,获取客户端设备和服务器之间的网络流量;
步骤S204,对所述网络流量按照以下信息进行分组,得到数据分组:上述客户端设备的IP地址和上述客户端设备所访问的上述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间。
在本申请的一个可选实施例中,上述服务器又称为主机(host)。此时,由步骤S202-S204中的特征可以看出,本申请实施例是以host和源IP地址(即客户端设备的IP地址)为分割维度,对源IP访问相同主机的流量数据进行会话分割,可选地,可以每隔30分钟设置一个开始时间,结束时间以及会话标识,即将30分钟作为会话分割的最小时间单元。
需要说明的是,步骤S202中的网络流量可以为超文本传输协议(HypertextTransfer Protocol,简称为HTTP)数据流。此时,接收的数据流的数据结构如表1所示:
表1输入数据-原始流量数据http_flow表
字段名 | 类型 | 含义 |
host | string | 主机 |
src_ip | string | 源IP |
reqtime | date | 访问时间 |
url | string | 访问url |
步骤S206,将从每个数据分组中选择的两个数据记录的访问时间进行取差运算,得到差值;并在上述差值大于预设阈值时,将上述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
其中,上述“取差运算”的过程可以表现为以下实现形式,但不限于此:对于每个上述数据分组,将上述数据分组内的数据记录按照上述访问时间的先后顺序进行排序,得到数据记录列表;在所述数据记录列表内选择指定数据记录的上一条数据记录和下一条数据记录进行取差运算,得到所述差值。需要说明的是,上述指定数据记录可以为访问时间为***当前时间时所对应的数据记录,但不限于此。
需要注意的是,对于每个数据分组内的所有数据记录而言,由于所有数据记录均具有相同的服务器标识和源IP地址,但是具有不同的访问时间,因此,可以按照访问时间不同对数据分组内的数据记录进行排序。
可选地,上述下一条数据记录可以为与上述指定数据记录的访问时间相邻的数据记录,可以为从所述指定数据记录的后面数据记录中选择的一条数据记录,对于后者,可以通过以下方式确定:将上述上一条数据记录的访问时间与剩余数据记录的访问时间依次进行取差运算,将首次出现的大于上述预设阈值的差值所对应的剩余数据记录作为上述下一条数据记录,其中,上述剩余数据记录为上述数据记录列表中排在上述指定数据记录后的数据记录。也就是说,在计算上述差值的过程中,可以从上到下依次进行取差计算,如果与上述指定数据记录相邻的数据记录的访问时间与上述指定数据记录的访问时间之差大于预设阈值,则认定与上述指定数据记录相邻的数据记录为上述下一条数据记录,如果小于预设阈值,则在数据记录列表中继续选择下一数据记录所对应的访问时间与上述指定数据记录的访问时间进行取差运算。
需要说明的是,对于上述会话的起始时间的确定,在上述指定数据记录为数据记录列表中的排名首位的数据记录时,需要将上述指定数据记录的访问时间作为上述起始时间,具体地,可以通过以下处理过程实现:判断上述指定数据记录是否为上述数据记录列表中的第一条数据记录,其中,在判断结果为是时,将上述指定数据记录的访问时间作为一个会话的起始时间。
在本申请的一个可选实施例中,对数据流进行分组后得到的输出数据的数据结构如表2所示。需要说明的是,表2中的数据结构是基于具有表1所示数据结构的数据流得到的。
表2输出数据-会话分割数据http_session表
字段名 | 类型 | 含义 |
host | string | 主机 |
src_ip | string | 源IP |
starttime | date | 开始访问时间 |
endtime | date | 结束访问时间 |
sid | string | 会话标识ID |
本申请实施例中的上述处理过程,可以基于相关技术中的分析函数(例如LAG分析函数和LEAD分析函数)实现,这样,便可以使用分析函数在一个SQL语句中实现,减少程序开发的工作量。
其中,LAG(expression<,offset><,default>)分析函数可以访问组内当前行之前的行,而LEAD(expression<,offset><,default>)分析函数则正相反,可以反问组内当前行之后的行。参数offset是正整数,默认为1。因为在分组内第一条记录之前是没有数据的,最后一条记录之后也是没有数据的,所以参数default就是用于处理这样的情况,默认为空,即没有数据的时候默认取空值。本申请的可选实施例中,可以利用这两个LAG和LEAD分析函数实现流量数据的会话分割,这样使用LAG和LEAD两种分析函数便可以在一个SQL语句内实现流量数据的任意长度会话分割。
并且,上述分析函数是可以运行于相关技术中提供的数据平台的,例如OracleDatabase(又称为Oracle RDBMS,或简称Oracle)平台。是甲骨文公司的一款关系数据库管理***,Oracle数据库***是目前世界上流行的关系数据库管理***,***可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。该数据平台可以支持分析函数运算,利用分析函数的强大功能和灵活可编程特性,来解决数据分析工作中遇到的各种复杂的分析需求,比如上面所提到的会话分割的问题就可以巧妙的使用分析函数来实现。以下结合一个可选实施例详细说明会话分割的原理。如图3所示,会话分割原理如下:
(1)数据分组,按照host和src_ip字段对流量数据(即数据流)进行分组,并按照请求时间(即访问时间,reqtime)进行排序;
(2)会话分割,基于(1)中的数据分组,获取分组内按请求时间reqtime排序的当前数据行请求时间starttime,上一数据行请求时间lasttime以及最大的请求时间maxtime(即上述预设阈值,具体可以根据实际情况灵活设置);计算分组内当前数据行请求时间reqtime(starttime)与上一数据行请求时间lasttime的差值,即会话分割时长,通过过滤会话分割时长获取会话分割结束时间endtime。其中,分组后的输入数据的数据结构如表3所示,进行会话分割后的数据结构如表4所示。
表3
表4
host | src_ip | starttime | endtime |
a | 192.168.0.1 | 2016.01.25 16:21:00 | 2016.01.25 16:21:16 |
a | 192.168.0.2 | 2016.01.25 16:21:24 | 2016.01.25 16:21:24 |
b | 192.168.0.1 | 2016.01.25 16:21:00 | 2016.01.25 16:21:04 |
由此可见,综合使用分析函数LAG和LEAD,能够更高效的完成功能开发,同时减少开发工作量,提高SQL代码的可维护性。为便于理解,以下结合图4所示流程,对会话分割流程进一步说明。图4是根据本申请实施例的另一种可选的会话分割流程示意图;如图4所示,该流程包括:
步骤S402,首先使用分析函数lag获取reqtime访问时间对应的上一条访问时间lasttime,partition by host,src_ip的作用是确保是源IP访问相同主机,order byreqtime确保访问按照时间序列排序。
步骤S404,再进一步获取lasttime对应的下一条访问时间endtime,下一条访问时间之所以就是endtime是因为做了datediff(reqtime,lasttime,'mi')>30的过滤条件。其中,需要添加一些附加的判断过程,如lasttime is null,以及计算会话标识ID的代码unique_id()as sid。
步骤S406,完成源IP访问相同主机对应的starttime,endtime,sid的会话分割计算,得到分割后的会话(http_session)。
由此可见,整个会话分割流程可以通过一条SQL查询语句实现,在ODPS或者ORACLE中都可以正常高效的运行。
综上所述,本申请实施例可以实现以下效果:开发量很小,因为可以使用分析函数实现,所以只需要一个SQL查询语句就可以完成会话分割的问题,工程师的代码开发量是很小的;运行效率高,由于可以使用分析函数,而分析函数可以是Oracle数据库中内置的SQL函数,其运行机制在平台内部做了充分的优化,尤其是涉及到会话分割这种数据纵向分析问题时,分析函数尤为高效;维护工作量小,因为可以只有一条SQL语句,所以工程师容易理解,因此,后期代码维护工作量较小。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述会话分割方法的装置,如图5所示所示,该装置包括:
获取模块50,用于获取客户端设备和服务器之间的网络流量;可选地,该网络流量可以为在客户端设备访问服务器的过程中,采集的来自上述客户端设备的数据流量,但不限于此。
分组模块52,用于对所述网络流量按照以下信息进行分组,得到数据分组:上述客户端设备的IP地址和上述客户端设备所访问的上述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间;
分割模块54,连接至分组模块52,用于将从每个数据分组中选择的两个数据记录的访问时间进行取差运算,得到差值;并在上述差值大于预设阈值时,将上述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
在本申请的一个可选实施例中,分割模块54,还用于对于每个上述数据分组,将上述数据分组内的数据记录按照上述访问时间的先后顺序进行排序,得到数据记录列表;在上述数据记录列表内选择指定数据记录的上一条数据记录和下一条数据记录进行取差运算,得到上述差值。可选地,上述下一条数据记录为从上述指定数据记录的后面数据记录中选择的一条数据记录。
需要说明的是,对于每个数据分组内的所有数据记录而言,所有数据记录均具有相同的服务器标识和源IP地址,但是具有不同的访问时间,因此,可以按照访问时间不同对数据分组内的数据记录进行排序。
可选地,分割模块54,用于按照以下方式选择上述下一条数据记录:将上述上一条数据记录的访问时间与剩余数据记录的访问时间依次进行取差运算,将首次出现的大于上述预设阈值的差值所对应的剩余数据记录作为上述下一条数据记录,其中,上述剩余数据记录为上述数据记录列表中排在上述指定数据记录后的数据记录。
可选地,分割模块54,还用于在将上述两个数据记录的访问时间作为一个会话的起始时间和结束时间之前,判断上述指定数据记录是否为上述数据记录列表中的第一条数据记录,其中,在判断结果为是时,将上述指定数据记录的访问时间作为一个会话的起始时间。
另外,本申请实施例中分组模块52和分割模块54所实现的功能,可以基于相关技术中的分析函数(例如LAG分析函数和LEAD分析函数)实现,这样,便可以使用分析函数在一个SQL语句中实现,减少程序开发的工作量。
例如,LAG(expression<,offset><,default>)分析函数可以访问组内当前行之前的行,而LEAD(expression<,offset><,default>)分析函数则正相反,可以反问组内当前行之后的行。参数offset是正整数,默认为1。因为在分组内第一条记录之前是没有数据的,最后一条记录之后也是没有数据的,所以参数default就是用于处理这样的情况,默认为空,即没有数据的时候默认取空值。本申请的可选实施例中,可以利用这两个LAG和LEAD分析函数实现流量数据的会话分割,这样使用LAG和LEAD两种分析函数便可以在一个SQL语句内实现流量数据的任意长度会话分割。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,其中,对于后者,可以通过以下方式实现,但不限于此:上述各个模块位于同一处理器中,上述各个模块以任意组合的形式位于不同的处理器中。
需要说明的是,本实施例中的优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
实施例3
本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行会话分割方法中以下步骤的程序代码:在客户端设备访问服务器的过程中,对来自上述客户端设备的数据流按照以下信息进行分组,得到数据分组:上述客户端设备的IP地址和上述客户端设备所访问的上述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间;对于每个上述数据分组,将上述数据分组内的数据记录按照上述访问时间的先后顺序进行排序,得到数据记录列表;将上述数据记录列表中选择的两个数据记录的访问时间进行取差运算,得到差值;并在上述差值大于预设阈值时,将上述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
可选地,图6是根据本申请实施例的一种计算机终端的结构框图。如图6所示,该计算机终端A可以包括:一个或多个(图中仅示出一个)处理器61、存储器63、以及与网站服务器连接的传输装置65。
其中,存储器63可用于存储软件程序以及模块,如本申请实施例中的方法和装置对应的程序指令/模块,处理器61通过运行存储在存储器63内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的会话分割方法。存储器63可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器63可进一步包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置65用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置65包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置65为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器63用于存储预设动作条件和预设权限用户的信息、以及应用程序。
处理器61可以通过传输装置调用存储器63存储的信息及应用程序,以执行下述步骤:在上述数据记录列表内选择指定数据记录的上一条数据记录和下一条数据记录进行取差运算,得到上述差值。
可选的,上述处理器61还可以执行如下步骤的程序代码:将上述上一条数据记录的访问时间与剩余数据记录的访问时间依次进行取差运算,将首次出现的大于上述预设阈值的差值所对应的剩余数据记录作为上述下一条数据记录,其中,上述剩余数据记录为上述数据记录列表中排在上述指定数据记录后的数据记录。
可选的,上述处理器61还可以执行如下步骤的程序代码:判断上述指定数据记录是否为上述数据记录列表中的第一条数据记录,其中,在判断结果为是时,将上述指定数据记录的访问时间作为一个会话的起始时间。
本领域普通技术人员可以理解,图6所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图6其并不对上述电子装置的结构造成限定。例如,计算机终端A还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例1所提供的会话分割方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在客户端设备访问服务器的过程中,对来自上述客户端设备的数据流按照以下信息进行分组,得到数据分组:上述客户端设备的IP地址和上述客户端设备所访问的上述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间;对于每个上述数据分组,将上述数据分组内的数据记录按照上述访问时间的先后顺序进行排序,得到数据记录列表;将上述数据记录列表中选择的两个数据记录的访问时间进行取差运算,得到差值;并在上述差值大于预设阈值时,将上述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
此处需要说明的是,上述计算机终端群中的任意一个可以与网站服务器和扫描器建立通信关系,扫描器可以扫描计算机终端上php执行的web应用程序的值命令。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种会话分割方法,其特征在于,包括:
获取客户端设备和服务器之间的网络流量;
对所述网络流量按照以下信息进行分组,得到数据分组:所述客户端设备的IP地址和所述客户端设备所访问的所述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间,每个数据分组内的所有数据具有相同的服务器标识和源地址;
将从每个所述数据分组中选择的两个数据记录的访问时间进行取差运算,得到差值;并在所述差值大于预设阈值时,将所述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
2.根据权利要求1所述的方法,其特征在于,将所述数据记录列表中选择的两个数据记录的访问时间进行取差运算,包括:
对于每个所述数据分组,将所述数据分组内的数据记录按照所述访问时间的先后顺序进行排序,得到数据记录列表;
在所述数据记录列表内选择指定数据记录的上一条数据记录和下一条数据记录进行取差运算,得到所述差值。
3.根据权利要求2所述的方法,其特征在于,所述下一条数据记录为从所述指定数据记录的后面数据记录中选择的一条数据记录。
4.根据权利要求3所述的方法,其特征在于,所述下一条数据记录为按照以下方式选择的数据记录:
将所述上一条数据记录的访问时间与剩余数据记录的访问时间依次进行取差运算,将首次出现的大于所述预设阈值的差值所对应的剩余数据记录作为所述下一条数据记录,其中,所述剩余数据记录为所述数据记录列表中排在所述指定数据记录后的数据记录。
5.根据权利要求2至4中任一项所述的方法,其特征在于,将所述两个数据记录的访问时间作为一个会话的起始时间和结束时间之前,所述方法还包括:
判断所述指定数据记录是否为所述数据记录列表中的第一条数据记录,其中,在判断结果为是时,将所述指定数据记录的访问时间作为一个会话的起始时间。
6.一种会话分割装置,其特征在于,包括:
获取模块,用于获取客户端设备和服务器之间的网络流量;
分组模块,用于对所述网络流量按照以下信息进行分组,得到数据分组:所述客户端设备的IP地址和所述客户端设备所访问的所述服务器的服务器标识;其中,每个数据分组内的各个数据记录具有不同的访问时间,每个数据分组内的所有数据具有相同的服务器标识 和源地址;
分割模块,用于将从每个所述数据分组中选择的两个数据记录的访问时间进行取差运算,得到差值;并在所述差值大于预设阈值时,将所述两个数据记录的访问时间作为一个会话的起始时间和结束时间。
7.根据权利要求6所述的装置,其特征在于,所述分割模块,还用于对于每个所述数据分组,将所述数据分组内的数据记录按照所述访问时间的先后顺序进行排序,得到数据记录列表;以及在所述数据记录列表内选择指定数据记录的上一条数据记录和下一条数据记录进行取差运算,得到所述差值。
8.根据权利要求7所述的装置,其特征在于,所述下一条数据记录为从所述指定数据记录的后面数据记录中选择的一条数据记录。
9.根据权利要求8所述的装置,其特征在于,所述分割模块,用于按照以下方式选择所述下一条数据记录:将所述上一条数据记录的访问时间与剩余数据记录的访问时间依次进行取差运算,将首次出现的大于所述预设阈值的差值所对应的剩余数据记录作为所述下一条数据记录,其中,所述剩余数据记录为所述数据记录列表中排在所述指定数据记录后的数据记录。
10.根据权利要求7至9中任一项所述的装置,其特征在于,所述分割模块,还用于在将所述两个数据记录的访问时间作为一个会话的起始时间和结束时间之前,判断所述指定数据记录是否为所述数据记录列表中的第一条数据记录,其中,在判断结果为是时,将所述指定数据记录的访问时间作为一个会话的起始时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610216672.5A CN107277095B (zh) | 2016-04-07 | 2016-04-07 | 会话分割方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610216672.5A CN107277095B (zh) | 2016-04-07 | 2016-04-07 | 会话分割方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107277095A CN107277095A (zh) | 2017-10-20 |
CN107277095B true CN107277095B (zh) | 2020-09-25 |
Family
ID=60052824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610216672.5A Active CN107277095B (zh) | 2016-04-07 | 2016-04-07 | 会话分割方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107277095B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107958024B (zh) * | 2017-11-09 | 2020-10-16 | 广州虎牙信息科技有限公司 | 会话合并方法、装置和计算机设备 |
CN108650334B (zh) * | 2018-08-02 | 2021-03-30 | 东软集团股份有限公司 | 一种会话失效的设置方法及装置 |
CN113705250B (zh) * | 2021-10-29 | 2022-02-22 | 北京明略昭辉科技有限公司 | 会话内容识别方法、装置、设备及计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012012560A3 (en) * | 2010-07-20 | 2012-05-18 | Box Top Solutions, Inc. | Application activity system |
CN103051553A (zh) * | 2013-01-25 | 2013-04-17 | 西安电子科技大学 | 网络流量均衡分割***及分割方法 |
CN104270427A (zh) * | 2014-09-18 | 2015-01-07 | 用友优普信息技术有限公司 | 会话控制方法与会话控制装置 |
-
2016
- 2016-04-07 CN CN201610216672.5A patent/CN107277095B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012012560A3 (en) * | 2010-07-20 | 2012-05-18 | Box Top Solutions, Inc. | Application activity system |
CN103051553A (zh) * | 2013-01-25 | 2013-04-17 | 西安电子科技大学 | 网络流量均衡分割***及分割方法 |
CN103051553B (zh) * | 2013-01-25 | 2015-09-02 | 西安电子科技大学 | 网络流量均衡分割***及分割方法 |
CN104270427A (zh) * | 2014-09-18 | 2015-01-07 | 用友优普信息技术有限公司 | 会话控制方法与会话控制装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107277095A (zh) | 2017-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104376053B (zh) | 一种基于海量气象数据的存储与检索方法 | |
CN102541990B (zh) | 利用虚拟分区的数据库重新分布方法和*** | |
US9633104B2 (en) | Methods and systems to operate on group-by sets with high cardinality | |
US10223437B2 (en) | Adaptive data repartitioning and adaptive data replication | |
CN105138592A (zh) | 一种基于分布式架构的日志数据存储和检索方法 | |
US9984081B2 (en) | Workload aware data placement for join-based query processing in a cluster | |
CN104462222A (zh) | 一种卡口车辆通行数据的分布式存储方法及*** | |
CN110555012A (zh) | 数据迁移方法及装置 | |
CN109902126B (zh) | 支持hive自动分区的加载***及其实现方法 | |
CN105338113A (zh) | 一种针对城市数据资源共享的多平台数据互联*** | |
CN102957622B (zh) | 一种数据处理的方法、装置及*** | |
CN111258978A (zh) | 一种数据存储的方法 | |
CN107277095B (zh) | 会话分割方法及装置 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN104267932A (zh) | 数据库操作方法、装置及服务器 | |
WO2015074477A1 (zh) | 路径分析方法和装置 | |
CN105405070A (zh) | 一种分布式内存电网***构建方法 | |
CN103886508A (zh) | 海量农田数据的监控方法和*** | |
CN104539750A (zh) | 一种ip定位方法和装置 | |
CN108154024B (zh) | 一种数据检索方法、装置及电子设备 | |
WO2019085778A1 (zh) | 确定数据库中有效分区的方法、装置和*** | |
CN108664665A (zh) | 数据格式转化方法、装置、设备及可读存储介质 | |
CN110928681A (zh) | 数据的处理方法和装置、存储介质及电子装置 | |
CN103200269A (zh) | 互联网信息统计方法及*** | |
US9117005B2 (en) | Statistics collection using path-value pairs for relational databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |