CN113761300A - 基于位图计算的报文采样方法、装置、设备和介质 - Google Patents
基于位图计算的报文采样方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN113761300A CN113761300A CN202110968105.6A CN202110968105A CN113761300A CN 113761300 A CN113761300 A CN 113761300A CN 202110968105 A CN202110968105 A CN 202110968105A CN 113761300 A CN113761300 A CN 113761300A
- Authority
- CN
- China
- Prior art keywords
- port number
- array
- digit
- message
- array element
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000004364 calculation method Methods 0.000 title claims abstract description 40
- 238000005070 sampling Methods 0.000 title claims abstract description 36
- 238000001914 filtration Methods 0.000 claims abstract description 12
- 238000004590 computer program Methods 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000005457 optimization Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012905 input function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- 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/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种基于位图计算的报文采样方法、装置、计算机设备以及计算机可读存储介质,通过在端口号标识查询过程中,通过将端口号与数组元素地址一一对应,减少存放端口号占用的内存,并通过基于位图计算的方式查询端口号标识,实现对端口号标识查询方式的优化。最后根据查询结果确定当前待查询报文是否被采样。利用本申请提供的基于位图计算的报文采样方式进行端口过滤,可以减少存放端口号占用的内存且提高端口号标识的查询效率。
Description
技术领域
本申请涉及网络数据处理领域,特别是涉及一种基于位图计算的报文采样方法、装置、计算机设备以及计算机可读存储介质。
背景技术
近年来,随着信息技术的迅速发展以及应用系统规模的快速增长,由此产生的数据也呈现井喷式增长,寻求有效的大数据处理技术已成为当研究的热点问题。许多公司也在关注相关技术,以满足自身的业务需求。在报文的流量获取过程中需要对报文的端口进行过滤,保留指定端口(可能有多个指定端口)流量的报文,丢弃非指定端口流量的报文。常规的端口过滤方案有两种,第一种通过遍历数组查询过滤;第二种是通过hash表查询过滤。第一种方案需要遍历数组,占用内存较大而且查询效率低。第二种方案端口查询复杂度为常数级,对内存占用较高。
针对现有的端口过滤技术中,存在存放报文的端口号占用空间大且端口号标识查询效率低的问题,目前尚未提出有效的解决方法。
发明内容
基于此,有必要针对上述技术问题,提供一种基于位图计算的报文采样方法、装置、计算机设备以及计算机可读存储介质,以解决相关技术中存在的存放端口号占用空间大且端口号标识查找效率低的问题。
第一方面,本申请实施例了一种基于位图计算的报文采样方法,包括以下步骤:
获取待查询报文的端口号对应的第一数字,所述第一数字为二进制数;
将所述第一数字进行右移三位的位运算,得到第二数字;
将所述第一数字与111进行按位与运算,得到第三数字;
获取第一数组中,所述第二数字加1对应的8比特数组元素中,所述第三数字的位置对应的数组元素的值,根据所述数组元素的值确定所述待查询报文的端口号对应的报文是否被采样;所述第一数组为基于所有报文的端口号标识预先创建的,所述第一数组的所述数组元素的值代表所述待查询报文的端口号标识。
在其中一些实施例中,在所述获取待查询报文的端口号对应的第一数字之前,所述方法还包括以下步骤:
获取所有报文的最大端口号对应的第四数字,申请一个连续的第二数组存放所有报文的端口号标识,所述第二数组大小为所述第四数字,所述第四数字为十进制数;
遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将所述第二数组中当前端口号对应的位置的数组元素的值置1。
在其中一些实施例中,在所述获取待查询报文的端口号对应的第一数字之前,所述方法还包括以下步骤:
获取所有报文的最大端口号对应的第五数字,所述第五数字为二进制数;
将所述第五数字进行右移三位的位运算,得到第六数字;
将所述第六数字加1之后再乘以8得到第七数字,申请一个连续的第三数组存放所有报文的端口号标识,所述第三数组大小为所述第七数字;
遍历所有报文的端口号,将当前端口号对应的第八数字进行右移三位的位运算,得到第九数字,将所述第八数字与111进行按位与运算,得到第十数字,所述第八数字为二进制数;
当确定当前端口号对应的报文需要被采样的情况下,将所述第三数组中,第九数字加1对应的8比特数组元素中,所述第十数字的位置对应的数组元素的值置1。
在其中一些实施例中,在所述遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将所述第二数组中当前端口号对应的位置的数组元素的值置1之后,所述方法还包括:
当确定当前端口号对应的报文需要被过滤的情况下,将所述第二数组中当前端口号对应的位置的数组元素的值置0。
在其中一些实施例中,在所述当确定当前端口号对应的报文需要被采样的情况下,将所述第三数组中,第九数字加1对应的8比特数组元素中,所述第十数字的位置对应的数组元素的值置1之后,所述方法还包括;
当确定当前端口号对应的报文需要被过滤的情况下,将所述第三数组中,第九数字加1对应的8比特数组元素中,所述第十数字的位置对应的数组元素的值置0。
在其中一些实施例中,在所述获取第一数组中,所述第二数字加1对应的8比特数组元素中,所述第三数字的位置对应的数组元素的值,根据所述数组元素的值确定所述待查询报文的端口号对应的报文是否被采样之后,所述方法还包括以下步骤;
当所述待查询报文的端口号标识的值为0的情况下,过滤所述待查询报文。
在其中一些实施例中,在所述申请一个连续的第三数组存放所有报文的端口号标识之后,在所述遍历所有报文的端口号之前,所述方法还包括:
将申请到的所述第三数组的内容清空。
第二个方面,在本实施例中提供了一种基于位图计算的报文采样装置,述装置还包括:获取模块、第一转换模块、第二转换模块、查找模块和结果模块:
所述获取模块,用于获取待查询报文的端口号对应的第一数字,所述第一数字为二进制数;
所述第一转换模块,用于将所述第一数字进行右移三位的位运算,得到第二数字;
所述第二转换模块,用于将所述第一数字与111进行按位与运算,得到第三数字;
所述查找模块,用于获取第一数组中,所述第二数字加1对应的8比特数组元素中,所述第三数字的位置对应的数组元素的值,根据所述数组元素的值确定所述待查询报文的端口号对应的报文是否被采样;所述第一数组为基于所有报文的端口号标识预先创建的,所述第一数组的所述数组元素的值代表所述待查询报文的端口号标识。
第三个方面,在本实施例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述方法的步骤。
第四个方面,在本实施例中提供了计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一个方面所述的方法的步骤。
上述基于位图计算的报文采样方法、装置、计算机设备以及计算机可读存储介质,其中基于位图计算的报文采样方法通过获取待查询报文的端口号对应的第一数字,第一数字为二进制数;将第一数字进行右移三位的位运算,得到第二数字;将第一数字与111进行按位与运算,得到第三数字;获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定端口号对应的报文是否被采样;第一数组为预先创建的,第一数组的数组元素的值代表报文的端口号标识。在端口号标识查询过程中,通过将端口号与数组元素地址一一对应,减少存放端口号占用的内存,并通过基于位图计算的方式查询端口号标识,实现对端口号标识查询方式的优化。最后根据查询结果确定当前待查询报文是否被采样。利用本申请提供的基于位图计算的报文采样方式进行端口过滤,可以减少存放端口号占用的内存且提高端口号标识的查询效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的基于位图计算的报文采样方法的应用场景图;
图2是根据本申请实施例提供的基于位图计算的报文采样方法的流程图一;
图3是根据本申请实施例提供的基于位图计算的报文采样方法的流程图二;
图4是根据本申请实施例提供的基于位图计算的报文采样方法的流程图三;
图5是根据本申请实施例提供的基于位图计算的报文采样装置的结构示意图;
图6是根据本申请实施例提供的计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
图1为本申请一个实施例提供的基于位图计算的报文采样方法的应用场景图。如图1所示,服务器101与移动终端102之间均可以通过网络进行数据传输。其中,移动终端102用于获取待查询报文,并将待查询报文传输至服务器101中。在服务器101接收到待查询的报文信息后,提取此报文的端口号对应的第一数字,并将第一数字进行右移三位的位运算,得到第二数字。在得到第二数字之后,服务器101将第一数字与111进行按位与运算,得到第三数字。得到第三数字之后,服务器101获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定待查询报文的端口号对应的报文是否被采样,第一数组为基于所有报文的端口号标识预先创建的,第一数组的数组元素的值代表待查询报文的端口号标识。其中,服务器101可以由独立的服务器或者是多个服务器组成的服务器集群来实现,移动终端102可以为任意一种带输入功能的显示屏。
本申请实施例提供了一种基于位图计算的报文采样方法,可用于网络数据处理领域中的基于位图计算的报文采样,如图2所示,该方法包括如下步骤:
步骤S210,获取待查询报文的端口号对应的第一数字,第一数字为二进制数。
待查询报文的端口号可以通过在报文信息里查找相应的字段获得,在数据传输过程中,根据应用场景的不同,获取的端口号可能是十进制,也可能是十六进制。将获取到的待查询报文的原始端口号转化为二进制的第一数字,转化为二进制数便于对端口号进行位运算。例如获取到的原始端口号为十进制的17,将其转化二进制的第一数字就表示为10001。
步骤S220,将第一数字进行右移三位的位运算,得到第二数字。
将第一数字进行右移三位的位运算,其实质就是将端口号除以8取整。例如步骤S210所述的例子中将获取到的端口号转化为二进制的第一数字变成了10001,那么将第一数字进行右移三位的位运算得到的第二数字为10。
步骤S230,将第一数字与111进行按位与运算,得到第三数字。
例如,步骤S220所述的例子中将获取到的端口号转化为二进制的第一数字变成了10001,取第一数字与111进行按位与运算,就得到第三数字为001。
步骤S240,获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定待查询报文的端口号对应的报文是否被采样;第一数组为基于所有报文的端口号标识预先创建的,第一数组的数组元素的值代表待查询报文的端口号标识。
例如,步骤S230所述的例子中,得到的第二数字为10,第三数字为001,那么获取第一数组中,第3(第二数字是10,10对应的十进制数字为2,2+1=3)个8比特数组元素中的第1(第三数字是001,001对应的十进制数字为1)个数组元素的值,此数组元素的值只有三个选择,0、1或者空,根据此数组元素的值确定待查询报文的端口号对应的报文是否被采样。
相关技术中,未利用数组元素的地址及偏移量来存放并查询报文的端口号标识,存在存放报文的端口号占用空间大且端口号标识查询效率低的问题。本申请通过上述步骤S210至S240,在端口号标识查询过程中,通过将端口号与数组元素地址一一对应,减少存放端口号占用的内存,并通过基于位图计算的方式查询端口号标识,实现对端口号标识查询方式的优化。最后根据查询结果确定当前待查询报文是否被采样。利用本申请提供的基于位图计算的报文采样方式进行端口过滤,可以减少存放端口号占用的内存且提高端口号标识的查询效率。
如图3所示,在其中一个实施例中,在上述步骤S210获取待查询报文的端口号对应的第一数字之前,还包括以下步骤:
步骤S310,获取所有报文的最大端口号对应的第四数字,申请一个连续的第二数组存放所有报文的端口号标识,第二数组大小为第四数字,第四数字为十进制数。
例如,所有报文中最大端口号对应的第四数字为65535,那么第二数组的大小为65535,且每个数组元素占用内存为1比特,第二数组用来存放所有报文的端口号标识。
步骤S320,遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将第二数组中当前端口号对应的位置的数组元素的值置1。
遍历所有的端口号,例如当前报文的端口号为17,当确定当前端口号对应的报文需要被采样的情况下,将第二数组的第17个数组元素的值置1。
通过上述步骤S310至S320,确定了报文的端口号与数组元素地址一一对应的方式,存放一个端口的端口标识只需要1个比特的大小,使用此方式构建存放端口标识的数组,能有效减少存放端口标识占用的内存。
如图4所示,在其中另一个实施例中,在上述步骤S210获取待查询报文的端口号对应的第一数字之前,还包括以下步骤:
步骤S410,获取所有报文的最大端口号对应的第五数字,第五数字为二进制数。
例如,所有报文中最大端口号为27,那么对应的第五数字为11011。
步骤S420,将第五数字进行右移三位的位运算,得到第六数字。
例如,步骤S410的例子中,得到的第五数字是11011,将第五数字进行右移三位的位运算,得到的第六数字为11。
步骤S430,将第六数字加1之后再乘以8得到第七数字,申请一个连续的第三数组存放所有报文的端口号标识,第三数组大小为第七数字。
例如,步骤S420的例子中,第六数字为二进制的11,对应的十进制数字为3,将第六数字加1再乘以8得到的第七数字为32,那么申请的第三数组大小为32,且每个数组元素占用内存为1比特,第三数组用来存放所有报文的端口标识。
步骤S440,遍历所有报文的端口号,将当前端口号对应的第八数字进行右移三位的位运算,得到第九数字,将第八数字与111进行按位与运算,得到第十数字,第八数字为二进制数。
遍历所有的端口号,例如当前报文的端口号为17,对应的二进制的第八数字为10001,那么将第八数字进行右移三位的位运算得到的第九数字为10,将第八数字与111进行按位与运算得到的第十数字为001。
步骤S450,当确定当前端口号对应的报文需要被采样的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置1。
例如,步骤S440的例子中,当前的端口号为17,当定当前端口号对应的报文需要被采样的情况下,则将第三数组中,第3(第九数字是10,10对应的十进制数字为2,2+1=3)个8比特数组元素中的第1(第十数字是001,001对应的十进制数字为1)个数组元素的值置1。
通过上述步骤S410至S440,确定了报文的端口号与数组元素地址一一对应的方式,存放一个端口的端口标识只需要1个比特的大小,使用此方式构建存放端口标识的数组,能有效减少存放端口标识占用的内存,并且通过位运算的方式可快速定位到存放当前端口号标识的数组位置。
在其中一个实施例中,当确定当前端口号对应的报文需要被采样的情况下,将第二数组中当前端口号对应的位置的数组元素的值置1之后,还包括以下步骤:
当确定当前端口号对应的报文需要被过滤的情况下,将第二数组中当前端口号对应的位置的数组元素的值置0。
例如当前报文的端口号为17,当确定当前端口号对应的报文需要被过滤的情况下,将第二数组的第17个数组元素的值置0。
上述步骤明确了报文的端口号标识对应的报文操作,并且使报文的端口号与数组元素地址一一对应的方式,存放一个端口的端口标识只需要1个比特的大小,使用此方式构建存放端口标识的数组,能有效减少存放端口标识占用的内存。
在其中一个实施例中,在当确定当前端口号对应的报文需要被采样的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置1之后,还包括以下步骤:
当确定当前端口号对应的报文需要被过滤的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置0。
例如当前的端口号为17,当定当前端口号对应的报文需要被过滤的情况下,则将第三数组中,第3(第九数字是10,10对应的十进制数字为2,2+1=3)个8比特数组元素中的第1(第十数字是001,001对应的十进制数字为1)个数组元素的值置0。
上述步骤明确了报文的端口号标识对应的报文操作,并且使报文的端口号与数组元素地址一一对应的方式,存放一个端口的端口标识只需要1个比特的大小,使用此方式构建存放端口标识的数组,能有效减少存放端口标识占用的内存。此外通过位运算的方式可快速定位到存放当前端口号标识的数组位置。
在其中一个实施例中,在获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定待查询报文的端口号对应的报文是否被采样之后,还包括以下步骤:
当待查询报文的端口号标识的值为0的情况下,过滤待查询报文。
由于数组元素可能是0、1或者空,本实施例明确了当待查询报文的端口号标识的值为0的情况下,过滤待查询报文。那么可以是当待查询报文的端口号标识的值为1的情况下,采样待查询报文,也可以是当待查询报文的端口号标识的值为空的情况下,采样待查询报文。
上述步骤明确了端口号标识在相应数值下对报文的处理操作,提供完整的报文处理方案。
在其中一个实施例中,在申请一个连续的第三数组存放所有报文的端口号标识之后,在遍历所有报文的端口号之前,还包括以下步骤:
将申请到的第三数组的内容清空。
在申请到第三数组之后将第三数组清空,可以节省后续定位到数组位置后需要逐个将数组元素清空的时间,提高后续构建第三数组的效率。
图5是根据本发明实施例中基于位图计算的报文采样装置的示意图,如图5所示,提供了一种基于位图计算的报文采样装置50,该装置包括获取模块51、第一转换模块52、第二转换模块53和查找模块54,其中:
获取模块51,用于获取待查询报文的端口号对应的第一数字,第一数字为二进制数;
第一转换模块52,用于将第一数字进行右移三位的位运算,得到第二数字;
第二转换模块53,用于将第一数字与111进行按位与运算,得到第三数字;
查找模块54,用于获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定待查询报文的端口号对应的报文是否被采样;第一数组为基于所有报文的端口号标识预先创建的,第一数组的数组元素的值代表待查询报文的端口号标识。
上述基于位图计算的报文采样装置50,在端口号标识查询过程中,通过将端口号与数组元素地址一一对应,减少存放端口号占用的内存,并通过基于位图计算的方式查询端口号标识,实现对端口号标识查询方式的优化。最后根据查询结果确定当前待查询报文是否被采样。利用本申请提供的基于位图计算的报文采样方式进行端口过滤,可以减少存放端口号占用的内存且提高端口号标识的查询效率。
在其中一个实施例中,基于位图计算的报文采样装置50还包括第一创建模块,在获取待查询报文的端口号对应的第一数字之前,用于获取所有报文的最大端口号对应的第四数字,申请一个连续的第二数组存放所有报文的端口号标识,第二数组大小为第四数字,第四数字为十进制数;遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将第二数组中当前端口号对应的位置的数组元素的值置1。
在其中一个实施例中,基于位图计算的报文采样装置50还包括第二创建模块,在获取待查询报文的端口号对应的第一数字之前,用于获取所有报文的最大端口号对应的第五数字,所述第五数字为二进制数;将所述第五数字进行右移三位的位运算,得到第六数字;将所述第六数字加1之后再乘以8得到第七数字,申请一个连续的第三数组存放所有报文的端口号标识,所述第三数组大小为所述第七数字;遍历所有报文的端口号,将当前端口号对应的第八数字进行右移三位的位运算,得到第九数字,将所述第八数字与111进行按位与运算,得到第十数字,所述第八数字为二进制数;当确定当前端口号对应的报文需要被采样的情况下,将所述第三数组中,第九数字加1对应的8比特数组元素中,所述第十数字的位置对应的数组元素的值置1。
在其中一个实施例中,在遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将第二数组中当前端口号对应的位置的数组元素的值置1之后,第一创建模块还用于当确定当前端口号对应的报文需要被过滤的情况下,将第二数组中当前端口号对应的位置的数组元素的值置0。
在其中一个实施例中,在当确定当前端口号对应的报文需要被采样的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置1之后,第二创建模块还用于当确定当前端口号对应的报文需要被过滤的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置0。
在其中一个实施例中,在获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定待查询报文的端口号对应的报文是否被采样之后,查找模块54还用于当所述待查询报文的端口号标识的值为0的情况下,过滤所述待查询报文。
在其中一个实施例中,在申请一个连续的第三数组存放所有报文的端口号标识之后,在遍历所有报文的端口号之前,第二创建模块还用于将申请到的第三数组的内容清空。
需要说明地是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件实现,也可以通过硬件来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储预设配置信息集合。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述基于位图计算的报文采样方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于位图计算的报文采样方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待查询报文的端口号对应的第一数字,第一数字为二进制数;
将第一数字进行右移三位的位运算,得到第二数字;
将第一数字与111进行按位与运算,得到第三数字;
获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定待查询报文的端口号对应的报文是否被采样;第一数组为基于所有报文的端口号标识预先创建的,第一数组的数组元素的值代表待查询报文的端口号标识。
在一个实施例中,在获取待查询报文的端口号对应的第一数字之前,处理器执行计算机程序时还实现以下步骤:
获取所有报文的最大端口号对应的第四数字,申请一个连续的第二数组存放所有报文的端口号标识,第二数组大小为第四数字,第四数字为十进制数;
遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将第二数组中当前端口号对应的位置的数组元素的值置1。
在一个实施例中,在获取待查询报文的端口号对应的第一数字之前,处理器执行计算机程序时还实现以下步骤:
获取所有报文的最大端口号对应的第五数字,第五数字为二进制数;
将第五数字进行右移三位的位运算,得到第六数字;
将第六数字加1之后再乘以8得到第七数字,申请一个连续的第三数组存放所有报文的端口号标识,第三数组大小为第七数字;
遍历所有报文的端口号,将当前端口号对应的第八数字进行右移三位的位运算,得到第九数字,将第八数字与111进行按位与运算,得到第十数字,第八数字为二进制数;
当确定当前端口号对应的报文需要被采样的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置1。
在一个实施例中,在遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将第二数组中当前端口号对应的位置的数组元素的值置1之后,处理器执行计算机程序时还实现以下步骤:
当确定当前端口号对应的报文需要被过滤的情况下,将第二数组中当前端口号对应的位置的数组元素的值置0。
在一个实施例中,在当确定当前端口号对应的报文需要被采样的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置1之后,处理器执行计算机程序时还实现以下步骤:
当确定当前端口号对应的报文需要被过滤的情况下,将第三数组中,第九数字加1对应的8比特数组元素中,第十数字的位置对应的数组元素的值置0。
在一个实施例中,在获取第一数组中,第二数字加1对应的8比特数组元素中,第三数字的位置对应的数组元素的值,根据数组元素的值确定待查询报文的端口号对应的报文是否被采样之后,处理器执行计算机程序时还实现以下步骤:
当待查询报文的端口号标识的值为0的情况下,过滤待查询报文。
在一个实施例中,在申请一个连续的第三数组存放所有报文的端口号标识之后,在遍历所有报文的端口号之前,处理器执行计算机程序时还实现以下步骤:
将申请到的第三数组的内容清空。
上述存储介质,在端口号标识查询过程中,通过将端口号与数组元素地址一一对应,减少存放端口号占用的内存,并通过基于位图计算的方式查询端口号标识,实现对端口号标识查询方式的优化。最后根据查询结果确定当前待查询报文是否被采样。利用本申请提供的基于位图计算的报文采样方式进行端口过滤,可以减少存放端口号占用的内存且提高端口号标识的查询效率。
应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于位图计算的报文采样方法,其特征在于,包括以下步骤:
获取待查询报文的端口号对应的第一数字,所述第一数字为二进制数;
将所述第一数字进行右移三位的位运算,得到第二数字;
将所述第一数字与111进行按位与运算,得到第三数字;
获取第一数组中,所述第二数字加1对应的8比特数组元素中,所述第三数字的位置对应的数组元素的值,根据所述数组元素的值确定所述待查询报文的端口号对应的报文是否被采样;所述第一数组为基于所有报文的端口号标识预先创建的,所述第一数组的所述数组元素的值代表所述待查询报文的端口号标识。
2.根据权利要求1所述的基于位图计算的报文采样方法,其特征在于,在所述获取待查询报文的端口号对应的第一数字之前,所述方法还包括以下步骤:
获取所有报文的最大端口号对应的第四数字,申请一个连续的第二数组存放所有报文的端口号标识,所述第二数组大小为所述第四数字,所述第四数字为十进制数;
遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将所述第二数组中当前端口号对应的位置的数组元素的值置1。
3.根据权利要求1所述的基于位图计算的报文采样方法,其特征在于,在所述获取待查询报文的端口号对应的第一数字之前,所述方法还包括以下步骤:
获取所有报文的最大端口号对应的第五数字,所述第五数字为二进制数;
将所述第五数字进行右移三位的位运算,得到第六数字;
将所述第六数字加1之后再乘以8得到第七数字,申请一个连续的第三数组存放所有报文的端口号标识,所述第三数组大小为所述第七数字;
遍历所有报文的端口号,将当前端口号对应的第八数字进行右移三位的位运算,得到第九数字,将所述第八数字与111进行按位与运算,得到第十数字,所述第八数字为二进制数;
当确定当前端口号对应的报文需要被采样的情况下,将所述第三数组中,第九数字加1对应的8比特数组元素中,所述第十数字的位置对应的数组元素的值置1。
4.根据权利要求2所述的基于位图计算的报文采样方法,其特征在于,在所述遍历所有报文的端口号,当确定当前端口号对应的报文需要被采样的情况下,将所述第二数组中当前端口号对应的位置的数组元素的值置1之后,所述方法还包括:
当确定当前端口号对应的报文需要被过滤的情况下,将所述第二数组中当前端口号对应的位置的数组元素的值置0。
5.根据权利要求3所述的基于位图计算的报文采样方法,其特征在于,在所述当确定当前端口号对应的报文需要被采样的情况下,将所述第三数组中,第九数字加1对应的8比特数组元素中,所述第十数字的位置对应的数组元素的值置1之后,所述方法还包括;
当确定当前端口号对应的报文需要被过滤的情况下,将所述第三数组中,第九数字加1对应的8比特数组元素中,所述第十数字的位置对应的数组元素的值置0。
6.根据权利要求1所述的基于位图计算的报文采样方法,其特征在于,在所述获取第一数组中,所述第二数字加1对应的8比特数组元素中,所述第三数字的位置对应的数组元素的值,根据所述数组元素的值确定所述待查询报文的端口号对应的报文是否被采样之后,所述方法还包括以下步骤;
当所述待查询报文的端口号标识的值为0的情况下,过滤所述待查询报文。
7.根据权利要求3所述的基于位图计算的报文采样方法,其特征在于,在所述申请一个连续的第三数组存放所有报文的端口号标识之后,在所述遍历所有报文的端口号之前,所述方法还包括:
将申请到的所述第三数组的内容清空。
8.一种基于位图计算的报文采样装置,其特征在于,所述装置还包括:获取模块、第一转换模块、第二转换模块、查找模块和结果模块:
所述获取模块,用于获取待查询报文的端口号对应的第一数字,所述第一数字为二进制数;
所述第一转换模块,用于将所述第一数字进行右移三位的位运算,得到第二数字;
所述第二转换模块,用于将所述第一数字与111进行按位与运算,得到第三数字;
所述查找模块,用于获取第一数组中,所述第二数字加1对应的8比特数组元素中,所述第三数字的位置对应的数组元素的值,根据所述数组元素的值确定所述待查询报文的端口号对应的报文是否被采样;所述第一数组为基于所有报文的端口号标识预先创建的,所述第一数组的所述数组元素的值代表所述待查询报文的端口号标识。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110968105.6A CN113761300A (zh) | 2021-08-23 | 2021-08-23 | 基于位图计算的报文采样方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110968105.6A CN113761300A (zh) | 2021-08-23 | 2021-08-23 | 基于位图计算的报文采样方法、装置、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113761300A true CN113761300A (zh) | 2021-12-07 |
Family
ID=78790826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110968105.6A Pending CN113761300A (zh) | 2021-08-23 | 2021-08-23 | 基于位图计算的报文采样方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113761300A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114285654A (zh) * | 2021-12-27 | 2022-04-05 | 北京天融信网络安全技术有限公司 | 一种检测攻击的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1217541A1 (en) * | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Method of processing queries in a database system, and database system and software product for implementing such method |
CN102571563A (zh) * | 2011-12-19 | 2012-07-11 | 曙光信息产业(北京)有限公司 | 一种基于端口位图的硬件报文采样系统和方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN106254577A (zh) * | 2016-09-18 | 2016-12-21 | 东软集团股份有限公司 | 端口分配的方法及装置 |
CN106850665A (zh) * | 2017-02-28 | 2017-06-13 | 中国南方电网有限责任公司电网技术研究中心 | 精确时间协议报文冗余路径标识方法和系统 |
CN111104361A (zh) * | 2019-12-03 | 2020-05-05 | 日立楼宇技术(广州)有限公司 | 串口的端口号查询方法、装置、计算机设备和存储介质 |
-
2021
- 2021-08-23 CN CN202110968105.6A patent/CN113761300A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1217541A1 (en) * | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Method of processing queries in a database system, and database system and software product for implementing such method |
CN102571563A (zh) * | 2011-12-19 | 2012-07-11 | 曙光信息产业(北京)有限公司 | 一种基于端口位图的硬件报文采样系统和方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN106254577A (zh) * | 2016-09-18 | 2016-12-21 | 东软集团股份有限公司 | 端口分配的方法及装置 |
CN106850665A (zh) * | 2017-02-28 | 2017-06-13 | 中国南方电网有限责任公司电网技术研究中心 | 精确时间协议报文冗余路径标识方法和系统 |
CN111104361A (zh) * | 2019-12-03 | 2020-05-05 | 日立楼宇技术(广州)有限公司 | 串口的端口号查询方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
孙志刚;白建东;陈一骄;: "BFPC:一种新型的基于Bloom Filter的报文分类算法", 计算机工程与科学, no. 04 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114285654A (zh) * | 2021-12-27 | 2022-04-05 | 北京天融信网络安全技术有限公司 | 一种检测攻击的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737668B (zh) | 数据存储方法、数据读取方法、相关设备及介质 | |
CN106407201B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN105740405B (zh) | 存储数据的方法和装置 | |
EP3767483A1 (en) | Method, device, system, and server for image retrieval, and storage medium | |
CN109800336B (zh) | 基于键值对存储系统的表格实现方法、装置、设备和介质 | |
CN104899204B (zh) | 数据存储方法及装置 | |
CN113225407B (zh) | 一种设备标识信息管理方法、装置、电子设备及存储介质 | |
CN111290779B (zh) | 灰度发布方法、装置、存储介质和电子设备 | |
CN113761300A (zh) | 基于位图计算的报文采样方法、装置、设备和介质 | |
CN108520401B (zh) | 用户名单管理方法、装置、平台及存储介质 | |
CN115277553B (zh) | 一种流表存储方法、装置、设备和计算机可读存储介质 | |
CN114640706A (zh) | 数据传输方法、电子设备及计算机可读存储介质 | |
CN114079634B (zh) | 一种报文转发方法、装置及计算机可读存储介质 | |
CN114285906A (zh) | 报文处理方法、装置、电子设备及存储介质 | |
CN110825521B (zh) | 一种内存使用管理方法、装置及存储介质 | |
CN113946617A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN114218175A (zh) | 一种资源跨平台共享方法、装置、终端设备及存储介质 | |
CN114070901A (zh) | 基于多数据对齐的数据发送和接收方法、装置和设备 | |
CN111125011A (zh) | 一种文件处理方法、系统及相关设备 | |
CN112559469A (zh) | 一种数据同步方法及装置 | |
CN115328892B (zh) | 一种业务表单数据结构处理方法、系统、电子设备及介质 | |
CN113076178B (zh) | 报文存储方法、装置及设备 | |
CN118264255A (zh) | 数据压缩方法、装置、计算机设备及可读存储介质 | |
CN115525233A (zh) | 数据记录的存储方法、装置、存储介质及电子设备 | |
CN115455005A (zh) | 权限数据查询方法、装置、设备、介质及产品 |
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 |