CN116708589B - 包头的压缩方法、装置、计算机设备和存储介质 - Google Patents
包头的压缩方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116708589B CN116708589B CN202310970670.5A CN202310970670A CN116708589B CN 116708589 B CN116708589 B CN 116708589B CN 202310970670 A CN202310970670 A CN 202310970670A CN 116708589 B CN116708589 B CN 116708589B
- Authority
- CN
- China
- Prior art keywords
- field
- static table
- header
- compression
- index value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 114
- 238000003860 storage Methods 0.000 title claims abstract description 26
- 230000003068 static effect Effects 0.000 claims abstract description 478
- 238000007906 compression Methods 0.000 claims abstract description 359
- 230000006835 compression Effects 0.000 claims abstract description 351
- 238000004590 computer program Methods 0.000 claims abstract description 31
- 230000006837 decompression Effects 0.000 claims description 47
- 238000004422 calculation algorithm Methods 0.000 claims description 35
- 230000015654 memory Effects 0.000 claims description 34
- 238000000605 extraction Methods 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 abstract description 16
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 42
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 17
- 239000000284 extract Substances 0.000 description 15
- 238000007726 management method Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 238000012550 audit Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 3
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 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
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- 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/24568—Data stream processing; Continuous queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种包头的压缩方法、装置、计算机设备、存储介质和计算机程序产品。该方法可应用于云技术、人工智能、智慧交通、辅助驾驶等场景,包括:对待传输的数据包进行解析,得到数据包的头部字段;在第一静态表中查找与头部字段匹配的索引值;第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;在第二静态表中,根据索引值和头部字段查找目标字段值;第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率;当在第二静态表中查找到目标字段时,生成第一压缩标识;基于索引值和第一压缩标识压缩头部字段,得到压缩后头部字段。采用本方法能够提高对数据包的包头的压缩效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种包头的压缩方法、装置、计算机设备和存储介质。
背景技术
流量镜像传输是一种将网络数据包在网络设备之间进行复制和传输的网络技术,它可以将一个网络设备上的数据包复制到另一个设备上,以便进行检测、分析或其他目的的处理,例如进行流量审计。
流量镜像传输的现有数据传输方案中,常见的做法是基于静态表对数据的头部字段进行压缩处理,这种方案在头部字段存在于静态表中时能够压缩数据量,从而节省带宽和提高传输效率。然而,当数据的头部字段未存在于静态表中时,需要新构建一个动态表或者对动态表进行更新后才能对其进行压缩,从而导致对数据包的包头的压缩效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高包头压缩率的包头的压缩方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种包头的压缩方法。所述方法包括:
对待传输的数据包进行解析,得到所述数据包的头部字段;
在第一静态表中查找与所述头部字段匹配的索引值;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;
在第二静态表中,根据所述索引值和所述头部字段查找目标字段值;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
当在所述第二静态表中查找到所述目标字段时,生成第一压缩标识;
基于所述索引值和所述第一压缩标识压缩所述头部字段,得到压缩后头部字段。
第二方面,本申请还提供了一种包头的压缩装置。所述装置包括:
头部字段提取模块,用于对待传输的数据包进行解析,得到所述数据包的头部字段;
第一静态表查找模块,用于在第一静态表中查找与所述头部字段匹配的索引值;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;
第二静态表查找模块,用于在第二静态表中,根据所述索引值和所述头部字段查找目标字段值;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
压缩标识生成模块,用于当在所述第二静态表中查找到所述目标字段时,生成第一压缩标识;
压缩模块,用于基于所述索引值和所述第一压缩标识压缩所述头部字段,得到压缩后头部字段。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述包头的压缩方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述包头的压缩方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述包头的压缩方法的步骤。
上述包头的压缩方法、装置、计算机设备、存储介质和计算机程序产品,预先配置存储有候选索引值、达到第一使用频率的候选头部字段和候选字段名称的第一静态表,以及存储有候选字段名称对应的、达到第二使用频率的候选字段值的第二静态表,其中第二使用频率阈值小于所述第一使用频率阈值,在提取出待传输的数据包的头部字段之后,这样即使头部字段不存在于第一静态表中,也可以在第一静态表中查找与头部字段匹配的索引值,并在第二静态表中,根据索引值和头部字段查找到目标字段值,并生成第一压缩标识,基于索引值和第一压缩标识对头部字段进行高效的压缩,得到压缩后头部字段,无需再新构建动态表或者更新动态表,从而提高了对数据包的包头的压缩效率。
对上述技术问题,还提供一种能够提高包头结压缩率的包头的解压缩方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种包头的解压缩方法。所述方法包括:
从压缩后数据包中提取出压缩后头部字段和压缩标识;
当所述压缩标识为第一压缩标识时,从所述压缩后头部字段中提取索引值;
获取第一静态表和第二静态表;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
在所述第一静态表和所述第二静态表中,基于所述索引值查找所述压缩后头部字段对应的头部字段。
第二方面,本申请还提供了一种包头的解压缩装置。所述装置包括:
压缩后头部字段提取模块,用于从压缩后数据包中提取出压缩后头部字段和压缩标识;
索引值提取模块,用于当所述压缩标识为第一压缩标识时,从所述压缩后头部字段中提取索引值;
静态表获取模块,用于获取第一静态表和第二静态表;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
解压缩模块,用于在所述第一静态表和所述第二静态表中,基于所述索引值查找所述压缩后头部字段对应的头部字段。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述包头的解压缩方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述包头的解压缩方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述包头的解压缩方法的步骤。
上述包头的解压缩方法、装置、计算机设备、存储介质和计算机程序产品,通过预先配置存储有候选索引值、达到第一使用频率的候选头部字段和候选字段名称的第一静态表,以及存储有候选字段名称对应的、达到第二使用频率的候选字段值的第二静态表,其中第二使用频率小于所述第一使用频率,在压缩后数据包中提取出压缩后头部字段和压缩标识,当压缩标识为第一压缩标识时,从压缩后头部字段中提取索引值,在第一静态表和第二静态表中,基于索引值查找压缩后头部字段对应的头部字段,这样在找不到压缩后头部字段在第一静态表中的对应字段值时,可以在第二静态表中查找对应的字段值,从而恢复压缩前的头部字段,无需再新构建动态表或者更新动态表用于解压缩,从而提高了对压缩后头部字段的解压缩效率。
附图说明
图1为一个实施例中包头的压缩方法的应用环境图;
图2为一个实施例中分布式云服务环境图;
图3为一个实施例中包头的压缩方法的应用环境图;
图4为一个实施例中包头的压缩方法的流程示意图;
图5为一个实施例中第一静态表的示意图;
图6为一个实施例中第二静态表的示意图;
图7为一个实施例中压缩后头部字段的示意图;
图8为另一个实施例中压缩后头部字段的示意图;
图9为另一个实施例中第二静态表的示意图;
图10为另一个实施例中压缩后头部字段的示意图;
图11为一个实施例中包头的头部字段示意图;
图12为一个实施例中包头的头部字段压缩示意图;
图13为一个实施例中包头的压缩率分布示意图;
图14为一个实施例中包头的解压缩方法的流程示意图;
图15为一个实施例中包头的压缩、解压缩方法的流程示意图;
图16为一个实施例中包头的压缩装置的结构框图;
图17为一个实施例中包头的解压缩装置的结构框图;
图18为一个实施例中计算机设备的内部结构图;
图19为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的包头的压缩方法以及包头的解压缩方法,可以应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
本申请实施例提供的包头的压缩方法,可以应用于如图1所示的应用环境中。其中,设备102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。
上述包头的压缩方法可以由设备102单独执行,以执行于设备102为例,设备102对待传输的数据包进行解析,得到数据包的头部字段;在第一静态表中查找与头部字段匹配的索引值;第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;在第二静态表中,根据索引值和头部字段查找目标字段值;第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率;当在第二静态表中查到目标字段时,生成第一压缩标识;基于索引值和第一压缩标识压缩数据包的头部字段,得到压缩后头部字段。
上述包头的解压缩方法可由服务器104单独执行,以执行于服务器104为例,服务器从压缩后数据包中提取出压缩后头部字段和压缩标识;当压缩标识为第一压缩标识时,从压缩后头部字段中提取索引值;获取第一静态表和第二静态表;第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率;在第一静态表和第二静态表中,基于索引值查找压缩后头部字段对应的头部字段。
其中,设备102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备、便携式可穿戴设备和网络设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。网络设备可为路由器、交换机、防火墙、负载均衡器、网络存储器、网络适配器等。
服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请提供的包头的压缩方法具体可以应用在镜像流量数据的传输上,具体可以应用在基于云服务的管控流量数据的镜像流量数据的传输上,在真实的应用场景中,某些云服务提供商在给客户提供服务时,为了满足用户的数据安全要求,通常需要将其云服务产品部署在用户的本地机房中,由于云服务的管控流量是独立于用户的业务流量、且在云服务中心与用户本地设备之间传输,为了满足用户对管控流量进行审计的需求,需要对管控流量进行镜像处理得到镜像流量,并将镜像流量传输给用于对管控流量进行审计的计算机设备,例如服务器104,为了提高镜像流量的传输效率,通常需要对镜像流量的数据包进行压缩处理,并丢压缩后的数据包进行传输,其中对镜像流量的数据包的包头进行压缩处理的过程即可采用本申请提供的上述包头的压缩方法,对压缩后数据包中的压缩后头部字段进行解压缩处理的过程即可采用本申请实施例提供的上述包头的解压缩方法。
例如图2所示的分布式云服务环境图,在公有云区域内提供有多个可用区,如图2中的可用区1(AZ1)和可用区2(AZ1),该云服务提供商为用户部署的CDC专用集群也属于该公有云区域,但该CDC专用集群是部署于用户站点的,且通过VPN与公有云区域的云中心区管控服务端进行管控流量的传输,并对管控流量进行镜像处理得到镜像流量,并将镜像流量传输给用于对管控流量进行审计的用户互联网数据中心(IDC),以对管控流量进行审计。在镜像流量传输前,对镜像流量进行压缩,从而节省带宽,优化传输性能,用户互联网数据中心(IDC)在接收到传输的数据包之后,对接收的数据包中的压缩后头部字段进行解压缩,从而还原镜像流量的头部字段。
其中,管控流量和镜像流量是在如图3所示的环境中进行传输的,参考图3,首先,管控流量是在“VPN网关(云上)”和“VPN网关(CDC内)”传输的,它们分别属于VPN网关的两端,用于VPN通信;“VPN网关(云上)”部署在云中心区,通过云中心区的接入点(即“公有云接入点”)接入到公网,公网的另一端和“用户侧核心交换机”相连,用于和用户本地IDC通信,用户本地IDC内部会部署CDC机柜,并通过“CDC对接交换机”进行相连,“CDC对接交换机”的另一端和“VPN网关(CDC内)”进行相连,用于传递来自或发往“VPN网关(云上)”的流量,至此,实现了云中心区和分布式云产品CDC的互通互联。通过在“VPN网关(CDC内)”和“流量审计服务”之间传输镜像流量,可实现管控数据本地保存的安全要求,在镜像流量传输前,对镜像流量进行压缩,从而节省带宽,优化传输性能。
在一个实施例中,如图4所示,提供了一种包头的压缩方法,以该方法应用于图1中的设备102为例进行说明,包括以下步骤:
S402,对待传输的数据包进行解析,得到数据包的头部字段。
其中,待传输的数据包是指在网络中要从发送方传输到接收方的数据单元。数据包是网络通信的基本单位,包括头部字段和有效载荷数据,头部字段携带了数据包的一些元数据,如源地址、目标地址、协议类型、数据长度等信息,这些信息用于在网络中正确路由和传递数据包,以及对数据包进行处理和解析等,有效载荷数据是指数据包中的实际内容,即由发送方产生的需要传输到接收方的实际信息,具体可以是文本、图片、音频、视频等任何形式的数据。
头部字段具体包括字段名称和字段值,其中字段名称指示了字段的含义或标识,字段名称也可以称为头部名称,而字段值则包含了具体的数据内容。
本申请实施例中的数据包可以是基于HTTP协议的数据包,例如某个HTTP协议的数据包头部字段可能包括以下信息:“Content-Type: application/json;Content-Length:1024;User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, likeGecko) Chrome/91.0.4472.124 Safari/537.36”,其中,"Content-Type"、"Content-Length"和"User-Agent"是三个不同的字段名称,"application/json"、"1024"和"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, likeGecko)Chrome/91.0.4472.124 Safari/537.36"是以上三个字段名称分别对应的字段值。
具体的,设备在得到待传输的数据包之后,从数据包中提取出头部信息,并对头部信息进行解析得到各个字段,并根据指定的协议和格式从各个字段中提取出字段名称和字段值,得到各头部字段。
例如,在HTTP协议中,头部字段以一行一行的键值对形式存在,每个字段由冒号分隔的字段名称和字段值组成。而在其他协议中,头部字段可能采用不同的格式和编码方式。
可以理解的是,在镜像数据传输场景,设备可以对原始数据进行镜像处理,得到镜像处理后的数据包,并将镜像处理后的数据包确定为待传输的数据包。
S404,在第一静态表中查找与头部字段匹配的索引值。
其中,第一静态表是预定义的头部字段表,包含包括有达到第一使用频率的候选头部字段和候选字段名称及其对应的候选索引值,第一使用频率是针对数据包所在的目标数据传输领域中的头部字段的使用情况而预先设定的,目标数据传输领域具体可以是流量审计服务所用到的对管控流量进行镜像流量传输的领域。
例如,对于前述的管控流量的镜像流量传输场景,接收端对镜像流量提供的审计服务中部业务数量固定,相应地,基于HTTP协议的头部字段可以一一列举出来,因此可以生成这些头部字段的索引值,并统计各头部字段的使用频率,将使用频率达到第一使用频率的头部字段存储到第一静态表中,并生成其索引值,此外针对使用频率未达到第一使用频率的头部字段,分别统计其中各字段名称的使用频率,并将使用频率达到第一使用频率的字段名称存储到第一静态表中,并生成其索引值;数据的发送端可以基于静态表对待传输的数据包的头部字段进行压缩,数据的接收端可以基于静态表对接收的数据包的压缩后头部字段进行解压缩。
如图5所示为一个实施例中的第一静态表的示意图,该第一静态表也可以称为常用静态字典,该表中包含有80个常用的候选头部字段及其所对应的候选索引值,以及40个常用的候选字段名称及其所对应的候选索引值。
具体的,设备在得到待传输的数据包的头部字段之后,获取本地所存储的第一静态表,从头部字段中提取出字段名称,在第一静态表中查找与字段名称匹配的索引值。
S406,在第二静态表中,根据索引值和头部字段查找目标字段值。
其中,第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率,也就是说第二静态表用于存储一些不常见但仍然重要的头部字段的字段值。第二使用频率是针对数据包所在的目标数据传输领域中的头部字段的使用情况而预先设定的,目标数据传输领域具体可以是流量审计服务所用到的对管控流量进行镜像流量传输的领域。
例如,对于前述的管控流量的镜像流量传输场景,接收端对镜像流量提供的审计服务中部业务数量固定,相应地,基于HTTP协议的头部字段可以一一列举出来,因此可以生成这些头部字段的索引值,并统计各头部字段的使用频率,将使用频率达到第一使用频率的头部字段存储到第一静态表中,并生成其索引值,此外针对使用频率未达到第一使用频率的头部字段,分别统计字段名称的使用频率以及各字段名称对应的字段值的使用频率,并将其中使用频率达到第一使用频率的字段名称存储到第一静态表中,并生成其索引值,并将其所对应的各字段值中使用频率达到第二使用频率的字段值存储到第二静态表中,并生成各字段值所对应的索引值。
例如,某些应用场景可能需要传输一些特定的HTTP头部的字段值,而这些字段值并不在第一静态表中预定义,在这种情况下,可以预先将这些特定的字段值添加到第二静态表中,从而基于第一静态表和第二静态表联合对头部字段进行压缩。
需要说明的是,由于第二静态表中存储了第一静态表中部分字段名称对应的字段值,因此也可以认为第二静态表是对第一静态表进行字段值扩展的静态表。
图6中的(A)示出了一个实施例中的第二静态表,第一静态表也可以称为次常用静态字典,该第二静态表用于对图5所示第一静态表中索引值为“2”的字段值扩展的静态表,其中,在第一静态表中索引值“2”对应的字段名称为“uri”,该第二静态表中即存储了字段名称为“uri”时,字段值的几种可能情况,例如,字段值可以是“/sa report.cgi”、“/dpdk_pvgw.cgi”或“/cvcle_pull”;图6中的(B)示出了另一个实施例中的第二静态表,该第二静态表用于对图5所示第一静态表中索引值为“32”的字段值扩展的静态表,其中,在第一静态表中索引值“32”对应的字段名称为“host”,该第二静态表中即存储了字段名称为“host”时,字段值的几种可能情况,例如,字段值可以是“yhcq.cbs.apiserver.tencentyun.com”、“sh.receiver.barad.tencentvun.com”或“receiver.barad.tencentvun.com”。
具体的,设备当在第一静态表中查找到与数据包的头部字段匹配的索引值之后,还可以确定索引值在第一静态表中对应字段值是否与头部字段中的字段值匹配,若不匹配,则获取第二静态表,并在第二静态表中获取索引值对应的字段值,并确定各字段值中是否存在为与头部字段匹配的目标字段值。
S408,当在第二静态表中查找到目标字段值时,生成第一压缩标识。
S410,基于索引值和第一压缩标识压缩数据包的头部字段,得到压缩后头部字段。
其中,压缩标识用于标识压缩过程中对头部字段的所采用的压缩模式。第一压缩标识用于标识对头部字段采用第一压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值在第二静态表中。
具体的,设备当在第二静态表中查找目标字段值时,获取索引值中存储目标字段值的第二静态表对应的第一索引值,以及该第二静态表中目标字段值所对应的第二索引值,并基于第一索引值、第二索引值以及第一压缩标识压缩数据包的头部字段,得到压缩后头部字段。
例如,若数据包中的头部字段为“uri:/dpdk_pvgw.cgi”,即该头部字段的字段名称为“uri”,头部字段的字段值为“uri:/dpdk_pvgw.cgi”,在图5所示的第一静态表中查找字段名称“uri”所对应的索引值为“2”和“122”,在第一静态表中索引值“2”对应的字段值为空,索引值“122”所对应的字段值为“/ma_report.cgi”,即索引值为“2”和“122”在第一静态表中所对应的字段值均与头部字段的字段值不匹配,则获取索引值“2”所关联的如图6中的(A)所示的第二静态表,并在该第二静态表中查找到与头部字段的字段值匹配的目标字段值“uri:/dpdk_pvgw.cgi”,则生成第一压缩标识“01”和“0”,其中“01”表征头部字段的字段名称存在于第一静态表中,“0”表征头部字段的字段值存在于第二静态表中,该第二静态表对应的第一索引值即为“2”,目标字段对应的第二静态表中的第二索引值为“2”,则基于第一压缩标识“01”、第一索引值“2”和第二索引值“2”对头部字段“uri:/dpdk_pvgw.cgi”进行压缩,得到压缩后头部字段。
在一个实施例中,基于第一索引值、第二索引值以及第一压缩标识压缩数据包的头部信息的过程包括以下步骤:基于第一索引值生成第一字符串,基于第二索引值生成第二字符串,将第一压缩标识与第一字符串和第二字符串进行拼接,得到压缩后头部字段。
其中,第一压缩标识包括表征头部字段的字段名称存在于第一静态表中的第一子标识,以及表征头部字段的字段值存在于第二静态表中的第二子标识。
具体的,设备基于第一索引值生成第一字符串,基于第二索引值生成第二字符串,并将第一子标识与第一字符串进行拼接,得到压缩后字段名称,将第二子标识与第二字符串进行拼接,得到压缩后字段值,并将压缩后字段名称与压缩后字段值进行拼接,得到压缩后头部字段。
例如,头部字段为“uri:/dpdk_pvgw.cgi”,该头部字段在压缩之前的十六进制表达为“0x2f6470646b5f707667772e63676920”,假设字段名称“uri”存在于第一静态表中,字段值“uri:/dpdk_pvgw.cgi”存在于第二静态表中,则生成第一压缩标识“01”和“0”,其中“01”表征头部字段的字段名称存在于第一静态表中,“0”表征头部字段的字段值存在于第二静态表中,字段名称“uri”在第一静态表中的第一索引值为5,按照高位在左低位在右的字符串生成方式,生成“5”对应的二进制字符串“101”,将“01”和“101”进行拼接,并补齐8位,则得到压缩后字段名称为“01101000”,字段值“uri:/dpdk_pvgw.cgi”在第二静态表中对应的第二索引值为“2”,按照高位在左低位在右的字符串生成方式,生成“2”对应的二进制字符串“01”,将“0”和“01”进行拼接,并补齐8位,则得到压缩后字段值为“00100000”,如图7所示,压缩后字段名称中索引值(Index)占6位,压缩标识占2位,压缩后字段值中索引值(Index)占7位,压缩标识占1位,将压缩后字段名称“01101000”与压缩后字段值“00100000”进行拼接,得到压缩后头部字段为“0110100000100000”,按照高位在左低位在右的字符串顺序,对压缩后头部字段“0110100000100000”进行转化,得到十六进制表达的压缩后头部字段“0x6140”。
上述实施例中,设备通过预先配置存储有候选索引值、达到第一使用频率的候选头部字段和候选字段名称的第一静态表,以及存储有候选字段名称对应的、达到第二使用频率的候选字段值的第二静态表,在提取出待传输的数据包的头部字段之后,这样即使头部字段不存在于第一静态表中,也可以在第一静态表中查找与头部字段匹配的索引值,并在第二静态表中,根据索引值和头部字段查找到目标字段值,并生成第一压缩标识,基于索引值和第一压缩标识对头部字段进行高效的压缩,得到压缩后头部字段,无需再新构建动态表或者更新动态表,从而提高了对数据包的包头的压缩效率。
在一个实施例中,头部字段包括字段名称,设备在第一静态表中查找与头部字段匹配的索引值的过程包括以下步骤:在第一静态表中查找与字段名称匹配的目标字段名称;查找第一静态表中与目标字段名称对应的索引值。
具体的,设备在获取到数据包的头部字段之后,从该头部字段中提取出字段名称,并确定第一静态表中是否存在与该字段名称匹配的目标字段名称,若存在,则获取目标字段名称对应的索引值。
例如,若数据包中的头部字段为“method:POST”,该头部字段的字段名称为“method”,在图5所示的第一静态表中查找“method”,即确定图5所示的第一静态表中存在“method”,并获取“method”在图5所示的第一静态表中对应的索引值“1”、“120”和“121”。
上述实施例中,设备通过在第一静态表中查找与字段名称匹配的目标字段名称,查找第一静态表中与目标字段名称对应的索引值,从而后续可以基于索引值对头部字段的字段名称进行压缩,提高了对数据包的包头的压缩效率。
在一个实施例中,第一静态表包括第一本地静态表和第一远程静态表;设备在第一静态表中查找与头部字段中字段名称匹配的字段名称的过程包括以下步骤:当在第一本地静态表中未查找到与字段名称匹配的目标字段名称时,获取第一远程静态表;基于第一远程静态表对第一本地静态表进行更新,得到更新后第一本地静态表;在更新后第一本地静态表中,查找与字段名称匹配的目标字段名称;设备查找第一静态表中与目标字段名称对应的索引值的过程包括以下步骤:在更新后第一本地静态表中,查找与目标字段名称对应的索引值。
其中,第一本地静态表是指存储在本地设备的第一静态表,第一远程静态表是指存储在远程服务器或服务端上的第一静态表,第一远程静态表可以被设备动态获取和更新。
具体的,设备在获取到数据包的头部字段后,在第一本地静态表中查找与头部字段中字段名称匹配的目标字段名称,若在第一本地静态表中未查找到与字段名称匹配的目标字段名称,则从远程服务器或服务端获取第一远程静态表,并基于第一远程静态表对第一本地静态表进行更新,得到更新后第一本地静态表,并在更新后的第一本地静态表中查找与头部字段中字段名称匹配的目标字段名称,若在更新后的第一本地静态表中查找到了目标字段名称,则获取第一本地静态表中目标字段名称所对应的索引值。
上述实施例中,设备基于压缩需求及时更新本地的第一本地静态表,确保了本地的第一静态表中包含有最新的头部信息,这样可以更准确地对头部字段进行压缩,提高压缩效率,进一步节省带宽和传输资源。
在一个实施例中,设备在第二静态表中,根据索引值和头部字段查找目标字段值之前,上述包头的压缩方法还包括以下方法:从第一静态表中,获取索引值对应的字段值;若字段值与头部字段中的字段值不匹配,执行在第二静态表中,根据索引值和头部字段查找目标字段值的步骤;若字段值中存在与头部字段中的字段值匹配的目标字段值,生成第二压缩标识;基于索引值和第二压缩标识压缩数据包的头部字段,得到压缩后头部字段。
其中,第二压缩标识用于标识采用第二压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值也在第一静态表中。
具体的,设备在从第一静态表中获取到头部字段中字段名称所对应的索引值之后,从第一静态表中获取这些索引值分别对应的字段值,并判断各字段值与头部字段中的字段值是否匹配,若各字段值均与头部字段中的字段值不匹配,也即第一静态表中不存在头部字段所组成的键值对,则执行在第二静态表中,根据索引值和头部字段查找目标字段值的步骤;若各字段值中存在与头部字段中的字段值匹配的目标字段值,即第一静态表中存在头部字段所组成的键值对,则生成第二压缩标识,并基于第一静态表中目标字段值所对应的目标索引值和第二压缩标识压缩数据包的头部字段,得到压缩后头部字段。
例如,若数据包中的头部字段为“method:POST”,该头部字段的字段名称为“method”,在图5所示的第一静态表中查找“method”,即确定图5所示的第一静态表中存在“method”,并获取“method”在图5所示的第一静态表中对应的索引值“1”、“120”和“121”,其中索引值“1”对应的字段值为空,索引值“120”对应的字段值为“GET”,索引值“121”对应的字段值为“POST”,则该三个字段值中存在与头部字段中字段值“POST”匹配的目标字段值“POST”,对应的目标索引值为“121”,生成第二压缩标识“1”,并基于第二压缩标识“1”和对应的目标索引值“121”对头部字段为“method,POST”进行压缩,得到压缩后头部字段。
在一个实施例中,基于目标索引值和第二压缩标识压缩数据包的头部字段包括以下步骤:基于目标索引值生成目标字符串,将目标字符串与第二压缩标识进行拼接,得到压缩后头部字段。
例如,头部字段为“method:POST”,该头部字段在压缩之前的十六进制表达为“0x504f5354”,假设头部字段“method:POST”的字段名称“method”以及字段值“POST”均存在于第一静态表中,则生成第二压缩标识“1”,头部字段“method:POST”在第一静态表中所对应的目标索引值为“2”,按照高位在左低位在右的字符串生成方式,生成“2”对应的二进制字符串“01”,将“1”和“01”进行拼接,并补齐8位,则得到压缩后头部字段为“10100000”,如图8所示,压缩后头部字段中索引值(Index)占7位,压缩标识占1位,按照高位在左低位在右的字符串顺序,对压缩后头部字段“10100000”进行转化,得到十六进制表达的压缩后头部字段“0x50”。
上述实施例中,设备通过在第一静态表中获取索引值对应的字段值,并根据字段值与头部字段匹配的结果决定是否执行第二静态表的查找操作,可以减少不必要的查找开销,提高压缩的效率和速度,同时降低设备的系统负担,优化了头部字段压缩的方法,使其适用于高效处理大量数据包的网络传输场景,如流量镜像传输。
在一个实施例中,设备在第二静态表中,根据索引值和头部字段查找目标字段值的过程包括以下步骤:在第二静态表中查找与索引值匹配的字段值;在匹配的字段值中,查找与头部字段中的字段值匹配的目标字段值。
其中,第二静态表可以为一个表也可以为多个独立的表,可以理解的是,当第二静态表为一个表时,第二静态表中存储有各字段值所对应的第一静态表中的索引值,如图9所示的第二静态表中,“Index(cy)”一栏对应的值即为第一静态表中的索引值,该第二静态表中“/sa report.cgi”、“/dpdk_pvgw.cgi”或“/cvcle_pull”即为第一静态表中索引值“2”所对应的字段值;图6所示的第二静态表是独立的表,其中图6中的(A)是第一静态表中的索引值“2”所关联的第二静态表,图6中的(B)是第一静态表中的索引值“32”所关联的第二静态表。
具体的,设备在得到头部字段中字段名称在第一静态表中所对应的索引值之后,若第二静态表为一个表,则基于该索引值,在第二静态表中查找该索引值在该静态表中所对应的字段值;若第二静态表为多个独立表,则获取该索引值所关联的第二静态表,并将所关联的第二静态表中的各字段值确定为该索引值所对应的字段值;在得到索引值所对应的各字段值之后,确定各字段值中是否存在与头部字段中字段值匹配的目标字段值,若各字段值中存在与头部字段中字段值匹配的目标字段值,则执行步骤S410。
上述实施例中,由于预先配置存储有候选索引值、达到第一使用频率的候选头部字段和候选字段名称的第一静态表,以及存储有候选字段名称对应的、达到第二使用频率的候选字段值的第二静态表,因此可以保证索引值与字段值的一一对应关系,设备在第二静态表中,根据索引值直接查找与索引值匹配的字段值,可以更精确地定位目标字段值,而无需遍历整个静态表,节省了查找的时间和开销;通过在匹配的字段值中查找与头部字段中的字段值匹配的目标字段值,可以进一步缩小查找范围,避免了不必要的遍历操作,只需在匹配的字段值中进行查找,而无需搜索整个静态表,从而提高了查找的效率;由于精确定位了目标字段值,避免了不必要的查找操作,可以更快速地找到与头部字段匹配的目标字段值,这样可以快速生成第一压缩标识并进行压缩,从而提高了压缩效率。
在一个实施例中,第二静态表包括第二本地静态表和第二远程静态表,设备在第二静态表中查找与索引值匹配的字段值的过程包括以下步骤:当第二本地静态表中不存在与索引值匹配的字段值时,获取第二远程静态表;基于第二远程静态表对第二本地静态表进行更新,得到更新后第二本地静态表;在更新后第二本地静态表中,查找索引值匹配的字段值。
其中,第二本地静态表是指存储在本地设备的第二静态表,第二远程静态表是指存储在远程服务器或服务端上的第二静态表,第二远程静态表可以被设备动态获取和更新。
具体的,设备在得到头部字段中字段名称在第一静态表中所对应的索引值之后,在第二本地静态表中查找该索引值对应的字段值,若第二本地静态表中不存在该索引值对应的字段值,则从远程服务器或服务端获取第二远程静态表,并基于第二远程静态表对第二本地静态表进行更新,得到更新后第二本地静态表,并在更新后第二本地静态表中,查找索引值匹配的字段值。
上述实施例中,设备基于压缩需求及时更新本地的第二本地静态表,确保了本地的第二静态表中包含有最新的头部信息,这样可以更准确地对头部字段进行压缩,提高压缩效率,进一步节省带宽和传输资源。
在一个实施例中,头部字段包括字段名称,上述包头的压缩方法还包括以下步骤:当在第二静态表中未查找到目标字段值时,生成第三压缩标识;基于索引值和第三压缩标识压缩字段名称;基于第三压缩标识对应的压缩算法对头部字段的字段值进行压缩,得到压缩后头部字段。
其中,第三压缩标识用于标识采用第三压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值采用透传方式或者压缩方式进行传输,透传是指将字段值原样传输,不进行任何压缩操作,当字段值较短且不频繁变化时,可以采用该处理方式,这样可以节省压缩和解压缩的计算开销;压缩是指对字段值单独进行压缩,当头部字段的字段值动态变化或者不常用时,可以采用第三压缩标识对应的压缩算法对字段值进行压缩,然后再进行传输。
第三压缩标识对应的压缩算法可以是霍夫曼编码,霍夫曼编码是一种无损数据压缩算法,通过根据数据出现频率来构建可变长度的编码,使得出现频率较高的数据用较短的编码表示,而出现频率较低的数据用较长的编码表示,从而达到压缩数据的目的。
具体的,设备在第二静态表中查找到索引值所对应的各字段值之后,确定各字段值中是否存在与头部字段中字段值匹配的目标字段值,若各字段值中不存在与头部字段中字段值匹配的目标字段值,生成第三压缩标识,并基于索引值中目标字段值对应的目标索引值,对头部字段中的字段名称进行压缩,基于第三压缩标识对应的字段值压缩算法对头部字段的字段值进行压缩,得到压缩后头部字段。
在一个实施例中,基于目标索引值对头部字段中的字段名称进行压缩,基于第三压缩标识对应的字段值压缩算法对头部字段的字段值进行压缩的过程包括以下步骤:基于目标索引值生成目标字符串,将第三压缩标识与目标字符串进行拼接,得到压缩后字段名称,基于第三压缩标识对应的压缩算法对头部字段的字段值进行压缩得到压缩后字段值,将压缩后字段名称和压缩后字段值进行拼接,得到压缩后字段名称。
例如,头部字段为“Host: receiver.barad.weixinyun.com”,该头部字段在压缩之前的十六进制表达为“0x486f737472656365697665722e62617261642e”,假设字段名称“Host”存在于第一静态表中,字段值不存在于第二静态表中,则生成第三压缩标识“01”,其中“01”表征头部字段的字段名称存在于第一静态表中,字段名称“Host”在第一静态表中的目标索引值为“61”,按照高位在左低位在右的字符串生成方式,生成“61”对应的二进制字符串“101111”,将“01”和“101111”进行拼接,并补齐8位,则得到压缩后字段名称为“01101111”,如图10所示,压缩后字段名称中索引值(Index)占6位,压缩标识占2位,按照高位在左低位在右的字符串顺序,对压缩后字段名称“01101111”进行转化,得到十六进制表达的压缩后字段名称“0x6f”,将十六进制表达的压缩后字段名称“0x6f”,与字段值“receiver.barad.weixinyun.com”对应的十六进制表达“72656365697665722e62617261642e”进行拼接,得到压缩后头部字段为“0x6f72656365697665722e62617261642e”。此外图10中还示出了,若对头部字段的字段值采用哈夫曼编码的方式进行压缩,则生成第三压缩标识“0H”,并将第三压缩标识“0H”与对字段值进行哈夫曼编码所得的哈夫曼编码值进行拼接,得到压缩后字段值,然后将十六进制表达的压缩后字段名称“0x6f”,与压缩后字段值进行拼接,得到压缩后头部字段。
上述实施例中,设备通过引入第三压缩标识对应的压缩算法,可以根据具体的字段值特征,采用更加适合的压缩方式,这样可以根据不同字段的特点,灵活地选择最优的压缩算法,进一步提高压缩率和压缩效率,避免了在头部字段不存在于第二静态表时无法对其进行压缩。
在一个实施例中,上述包头的压缩方法还包括以下步骤:当在第一静态表中未查找与头部字段匹配的索引值时,生成第四压缩标识;基于第四压缩标识对应的压缩算法对头部字段进行全量压缩,得到压缩后头部字段。
其中,第四压缩标识用于标识采用第四压缩模式,即头部字段的字段名称不存在于第一静态表中,头部字段的字段名称和字段值采用透传方式或者压缩方式进行传输,压缩即对头部字段进行全量压缩,也就是对头部字段的字段名称和字段值均进行压缩。第四压缩标识对应的压缩算法可以是霍夫曼编码。
具体的,设备在第一静态表中查找与头部字段中字段名称匹配的目标字段名称,若未查找到目标字段名称,即第一静态表中不存在头部字段中的字段名称,也就是在第一静态表中未查找与头部字段匹配的索引值,则生成第四压缩标识,并基于第四压缩标识对应的压缩算法对头部字段进行全量压缩,得到压缩后头部字段。
上述实施例中,设备通过引入第四压缩标识对应的压缩算法,可以根据具体的头部字段特征,采用更加适合的压缩方式,这样可以根据不同头部字段的特点,灵活地选择最优的压缩算法,进一步提高压缩率和压缩效率,避免了在头部字段不存在于第一静态表和第二静态表时无法对其进行压缩。
在一个实施例中,上述包头的压缩方法还包括以下步骤:基于压缩后头部字段对数据包中的头部字段进行替换,得到压缩后数据包;将压缩后数据包发送至接收端,以使接收端基于第一静态表、第二静态表和压缩后数据包携带的压缩标识,对压缩后数据包的压缩后头部字段进行解压缩,得到头部字段。
具体的,接收端在接收到压缩后数据包以后,可以对压缩后数据包进行解析,得到压缩后数据包的压缩后头部字段和压缩标识;当压缩标识为第一压缩标识时,从压缩后头部字段中提取索引值;获取第一静态表和第二静态表;第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率;在第一静态表和第二静态表中,基于索引值查找压缩后头部字段对应的头部字段。
当压缩标识为第二压缩标识时,从压缩后头部字段中提取索引值,并获取第一静态表;基于索引值在第一静态表查找压缩后头部字段对应的头部字段。
当压缩标识为第三压缩标识时,从压缩后头部字段中提取索引值,并获取第一静态表;基于索引值在第一静态表查找压缩后头部字段对应的头部名称,并基于压缩标识对应的解压缩算法对压缩后头部字段中的压缩后字段值进行解压缩,得到压缩后头部字段对应的字段值。
当压缩标识为第四压缩标识时,基于第四压缩标识对应的解压缩算法对压缩后头部字段进行解压缩,得到压缩后头部字段对应的头部字段。
上述实施例中,设备通过头部字段的压缩和解压缩,可以提高数据包传输效率和处理速度,适用于各种网络应用场景,例如对于流量镜像传输和流量审计等需要高效处理大量数据包的场景,能够有效的提高数据传输的速度,进行提高数据处理的效率。
举例对上述包头的压缩方法进行说明:
例如,数据包A的16进制表达为“0x4560003433e740003311ef680ba4db6d0ba4db1206789c0ba8a8820504f53542f6470646b5f707667772e6367692048545450312e30436f6e74656e742d4c656e677468a31343930486f737472656365697665722e62617261642e2ba4a582a0fb1801024a887ed00000101080a9f63719804ad7e3a”,其中“504f53542f6470646b5f707667772e6367692048545450312e30436f6e74656e742d4c656e677468a31343930486f737472656365697665722e62617261642e”为http头,即数据包的头部信息,该头部信息中所包含的头部字段分别为“method:POST”、“uri:/dpdk_pvgw.cgi”、“HTTP:2.0”、“Content-Length:1490”和“Host: receiver.barad.tencentyun.com”,对各个头部字段采用本申请实施例提供的包头的压缩方法进行压缩,得到的各压缩后头部字段如图11所示,参考图12所示的压缩过程示意图,从图12中可以看出得到的压缩后头部信息为“0x5061407f313439306f72656365697665722e62617261642e”,压缩后数据包为“0x4560003433e740003311ef680ba4db6d0ba4db1206789c0ba8a88200x5061407f313439306f72656365697665722e62617261642e2ba4a582a0fb1801024a887ed00000101080a9f63719804ad7e3a”。
需要说明的是,在对数据包的头部字段进行压缩后,还可以基于压缩后头部字段和原始头部字段确定对头部字段的压缩率(也可以称为压缩效率),其中针对任意一个头部字段,其压缩率、原始头部字段和压缩后头部字段之间满足以下关系:
上式中,为数据包的包头中第i个头部字段所对应的压缩率,/>为数据包的包头中第i个头部字段所对应压缩之前的字符串长度,/>数据包的包头中第i个头部字段所对应压缩之后的字符串长度。
图13示出了上例中数据包A的包头的压缩率分布示意图,图中横坐标(X)为压缩率,纵坐标(P)为压缩率占比,图13中折线上任意一点(X0,P0)所表征的含义为,包头中压缩率为X0的头部字段的个数m占全部包头中总头部字段的个数n的比值为P0。
此外,针对任意一个数据包的包头,可以基于该包头的压缩率分布情况确定其该包头的平均压缩率,具体的,可以将压缩率划分为多个压缩率区间,并统计每个压缩率区间对应的头部字段的个数,进而确定出每个压缩率区间对应的压缩率占比,进而基于每个压缩率区间对应的压缩率占比和压缩率区间的压缩率平均值,确定出该包头的平均压缩率,其中,包头的平均压缩率与压缩率区间对应的压缩率占比、压缩率区间的压缩率平均值之间满足以下关系:
上式中,为数据包的包头的平均压缩率,K为压缩率区间的总数量,j表示第j个压缩率区间,/>为第j个压缩率区间的压缩率占比,/>为第j个压缩率区间的压缩率平均值,压缩率区间的压缩率平均值具体可以取该区间的端点的平均值,例如压缩率区间为[80%,85%],则压缩率区间[80%,85%]的压缩率平均值即为82.5%。
采用上式可以对上例中的数据包A的包头的平均压缩率进行计算:0.7×0.0185 +0.775×0.0201 + 0.825×0.0517 + 0.875×0.2673 + 0.925×0.5426 + 0.975×0.0998=0.9146,从而得到数据包A的包头的平均压缩率为91.46%,二采用拆南通的包头压缩算法所得到的包头的平均压缩效率为50%,由此可见本申请提供的包头的压缩算法相对于传统的包头压缩算法具有更好的压缩效果。
在一个实施例中,如图14所示,提供了一种包头的解压缩方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
S1402,从压缩后数据包中提取出压缩后头部字段和压缩标识。
其中,压缩标识包括第一压缩标识、第二压缩标识、第三压缩标识和第四压缩标识,第一压缩标识用于标识对头部字段采用第一压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值在第二静态表中;第二压缩标识;第二压缩标识用于标识采用第二压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值也在第一静态表中;第三压缩标识用于标识采用第三压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值采用透传方式或者压缩方式进行传输;第四压缩标识用于标识采用第四压缩模式,即头部字段的字段名称不存在于第一静态表中,头部字段的字段名称和字段值采用透传方式或者压缩方式进行传输。
具体的,服务器接收发送端传输的压缩后数据包,并从压缩后数据包中提取出压缩后头部字段,并从压缩后头部字段的指定字节位置提取出压缩标识。
S1404,当压缩标识为第一压缩标识时,从压缩后头部字段中提取索引值。
其中,第一压缩标识包括第一子标识和第二子标识,第一子标识表征头部字段的字段名称存在于第一静态表中,第二子标识表征头部字段的字段值存在于第二静态表中。
具体的,当压缩后头部字段中的压缩标识为第一压缩标识,服务器从压缩后头部字段中的指定字节位置提取出表征索引值的字符串,并基于表征索引值的字符串还原第一索引值和第二索引值。
S1406,获取第一静态表和第二静态表;第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率。
其中,第一静态表是预定义的头部字段表,包含存储有达到第一使用频率的候选头部字段和候选字段名称及其对应的候选索引值,第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率,也就是说第二静态表用于存储一些不常见但仍然重要的头部字段的字段值。第一使用频率和第二使用频率是针对数据包所在的目标数据传输领域中的头部字段的使用情况而预先设定的,目标数据传输领域具体可以是流量审计服务所用到的对管控流量进行镜像流量传输的领域。
例如,对于前述的管控流量的镜像流量传输场景,接收端对镜像流量提供的审计服务中部业务数量固定,相应地,基于HTTP协议的头部字段可以一一列举出来,因此可以生成这些头部字段的索引值,并统计各头部字段的使用频率,将使用频率达到第一使用频率的头部字段存储到第一静态表中,并生成其索引值,此外针对使用频率未达到第一使用频率的头部字段,分别统计字段名称的使用频率以及各字段名称对应的字段值的使用频率,并将其中使用频率达到第一使用频率的字段名称存储到第一静态表中,并生成其索引值,并将其所对应的各字段值中使用频率达到第二使用频率的字段值存储到第二静态表中,并生成各字段值所对应的索引值。
具体的,服务器本地可存储有第一静态表和第二静态表,当确定压缩后头部字段中携带的压缩标识为第一压缩标识时,服务器从本地获取第一静态表和第二静态表。
在一个实施例中,第一静态表包括第一本地静态表和第一远程静态表,第二静态表包括第二本地静态表和第二远程静态表,服务器在获取到第一本地静态表以及第二本地静态表之后,还可以从远程服务器或服务端获取第一远程静态表和第二远程静态表,并基于第一远程静态表对第一本地静态表进行更新,得到更新后第一本地静态表,以及基于第二远程静态表对第二本地静态表进行更新,得到更新后第二本地静态表。
S1408,在第一静态表和第二静态表中,基于索引值查找压缩后头部字段对应的头部字段。
其中,第一静态表可以是更新后第一本地静态表,第二静态表可以是更新后第二本地静态表。
在一个实施例中,S1408具体包括以下步骤:在第一静态表中查找与索引值对应目标字段名称;在第二静态表中查找索引值对应的目标字段值;基于目标字段名称和目标字段值,确定压缩后头部字段对应的头部字段。
具体的,服务器在得到第一索引值和第二索引值之后,可以基于第一索引在第一静态表中,查找第一索引值对应的目标字段名称,在第二静态表中查找第二索引值对应的目标字段值,并将目标字段名称和目标字段值所组成的键值对确定为压缩后头部字段对应的头部字段,可以确保解压缩后得到的头部字段准确、高效地恢复压缩前的数据,并保持数据一致性和灵活性,从而提高了压缩后数据包的处理效率和可靠性。
上述实施例中,服务器通过预先配置存储有候选索引值、达到第一使用频率的候选头部字段和候选字段名称的第一静态表,以及存储有候选字段名称对应的、达到第二使用频率的候选字段值的第二静态表,在压缩后数据包中提取出压缩后头部字段和压缩标识,当压缩标识为第一压缩标识时,从压缩后头部字段中提取索引值,在第一静态表和第二静态表中,基于索引值查找压缩后头部字段对应的头部字段,这样在找不到压缩后头部字段在第一静态表中的对应字段值时,可以在第二静态表中查找对应的字段值,从而恢复压缩前的头部字段,无需再新构建动态表或者更新动态表用于解压缩,从而提高了对压缩后头部字段的解压缩效率。
在一个实施例中,上述包头的解压缩方法还包括以下步骤:当压缩标识为第二压缩标识时,从压缩后头部字段中提取索引值;在第一静态表中,基于索引值查找压缩后头部字段对应的头部字段。
其中,第二压缩标识;第二压缩标识用于标识采用第二压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值也在第一静态表中。
具体的,当压缩后头部字段中的压缩标识为第二压缩标识,服务器从压缩后头部字段中的指定字节位置提取出表征目标索引值的字符串,并基于表征目标索引值的字符串还原目标索引值,并基于目标索引值在第一静态表中查找目标索引值对应的字段名称和字段值,从而得到压缩后头部字段对应的头部字段。
上述实施例中,当压缩标识为第二压缩标识时,服务器从压缩后头部字段中提取索引值,并基于该索引值在第一静态表中查找头部字段,可以快速、高效地进行解压缩,减少开销并保持数据一致性,能够满足高频率传输和实时处理数据包的场景的效率需求。
在一个实施例中,上述包头的解压缩方法还包括以下步骤:当压缩标识为第三压缩标识时,从压缩后头部字段中提取索引值;基于索引值在第一静态表查找压缩后头部字段对应的目标字段名称;基于所第三压缩标识对应的解压缩算法对压缩后头部字段的压缩后字段值进行解压缩,得到压缩后头部字段对应的字段值。
其中,第三压缩标识用于标识采用第三压缩模式,即头部字段的字段名称在第一静态表中,头部字段的字段值采用透传方式或者压缩方式进行传输。
具体的,当压缩后头部字段中的压缩标识为第三压缩标识,服务器从压缩后头部字段中的指定字节位置提取出表征目标索引值的字符串,并基于表征目标索引值的字符串还原目标索引值,并基于目标索引值在第一静态表中查找目标索引值对应的字段名称,若压缩后头部字段中的字段值采用透传方式进行传输,则从压缩后头部字段中的指定字节位置提取出表征字段值的字符串,并基于表征字段值的字符串还原出字段值;若压缩后头部字段中的字段值采用的压缩的方式进行传输,则基于第三压缩标识所对应的解压缩算法对压缩后头部字段中的压缩后字段值进行解压缩,得到压缩后头部字段对应的字段值。
上述实施例中,当压缩标识为第三压缩标识时,服务器通过提取索引值、查找目标字段名称和应用解压缩算法,可以高效、动态地对压缩后头部字段进行解压缩,并获得原始的字段值,这样能够保证数据的完整性,提高带宽利用率,并为未来的压缩、解压缩算法优化提供了灵活性。
在一个实施例中,上述包头的解压缩方法还包括以下步骤:当压缩标识为第四压缩标识时,基于第四压缩标识对应的解压缩算法对压缩后头部字段进行解压缩,得到压缩后头部字段对应的头部字段。
其中,第四压缩标识用于标识采用第四压缩模式,即头部字段的字段名称不存在于第一静态表中,头部字段的字段名称和字段值采用透传方式或者压缩方式进行传输。
具体的,若压缩后头部字段中的字段名称和字段值采用透传方式进行传输,则从压缩后头部字段中的指定字节位置提取出表征字段名称的字符串和表征字段值的字符串,并基于表征字段名称的字符串还原出字段名称,并基于表征字段值的字符串还原出字段值;若压缩后头部字段中的字段名称和字段值采用压缩的方式进行传输,则基于第四压缩标识所对应的解压缩算法对压缩后头部字段中的压缩后字段名称和压缩后字段值进行解压缩,得到压缩后头部字段对应的字段值。
上述实施例中,当压缩标识为第四压缩标识时,服务器通过应用解压缩算法,设备可以高效地对压缩后头部字段进行解压缩,并获得原始的头部字段,这样能够提高解压缩效率,节省带宽,并为未来的压缩、解压缩算法优化提供了灵活性。
本申请还提供一种应用场景,该应用场景应用上述包头的压缩方法以及上述包头的解压缩方法,如图15所示,该包头的压缩方法具体包括以下步骤:
(1)发送方获取待传输的镜像流量
其中,发送方可以是图3中VPN网关(CDC内)所在设备,其对管控流量进行镜像处理得到镜像流量。
(2)获取头部字段
发送方在对镜像流量的数据包传输之前,按HTTP协议格式从数据包的HTTP头信息提取各头部字段的字段名称(Header Name)和字段值(Header Value)。
(3)常用静态字典中字段名称检索
常用静态字典包括本地常用静态字典和远程常用静态字典,在本地常用静态字典中检索是否存在与字段名称相同的目标字段名称,若存在则执行步骤(5),若不存在则执行步骤(4)。
(4)拉取远程常用静态字典
基于拉取的远程常用静态字典对本地常用静态字典进行更新,并在更新后重新在本地常用静态字典中检索是否存在字段名称相同的目标字段名称,若存在,则执行步骤(5),若不存在,则直接原样透传字段名称和字段值数据。
(5)常用静态字典中字段值检索
在更新后重新在本地常用静态字典中检索是否存在与字段值相同的目标字段值,若存在则获取字段名称和字段值对应的目标索引值,并基于目标索引值对字段名称和字段值进行压缩,进入到最后一步发送数据包;若不存在,则执行步骤(6)。
(6)次常用静态字典中字段值检索
在本地次常用静态字典中检索是否存在与字段值相同的目标字段值,若存在则获取字段名称在常用静态字典中对应的第一索引值,字段值在次常用静态字典中对应的第二索引值,并基于第一索引值和第二索引值对字段名称和字段值进行压缩,进入到最后一步发送数据包;若不存在,则执行步骤(7)。
(7)拉取远程次常用静态字典
基于拉取的远程次常用静态字典对本地次常用静态字典进行更新,并在更新后重新在本地次常用静态字典中检索是否存在与字段值相同的目标字段值,若存在则获取字段名称在常用静态字典中对应的第一索引值,字段值在次常用静态字典中对应的第二索引值,并基于第一索引值和第二索引值对字段名称和字段值进行压缩,进入到最后一步发送数据包;若不存在,则基于第一索引值对字段名称进行压缩,透传字段值。
(8)循环解析包中HTTP头中的其它字段名称和字段值,并进行上述步骤的压缩处理
(9)包中其它数据也压缩完成后,将压缩后的数据包发送给接收方。
如图15所示,该包头的解压缩方法具体包括以下步骤:
(1)接收发送方发送的压缩后的数据包
(2)提取压缩后的数据包的HTTP头信息
(3)拉取远程常用和次常用静态字典并更新至本地
(4)从HTTP头信息中提取压缩后头部字段
按HTTP协议格式从压缩后数据包的HTTP头信息提取各压缩后头部字段和压缩标识,基于压缩标识确定所使用的压缩方式。
(5)模式一压缩方式
若压缩后头部字段所使用的是模式一压缩方式,则根据常用静态字典中的目标索引值解压得到对应的字段名称和字段值。
(6)模式二压缩方式
若压缩后头部字段所使用的是模式二压缩方式,则根据常用静态字典中的第一索引值解压得到对应的字段名称,并根据次常用静态字典中的第二索引值解压得到对应的字段值。
(7)模式三压缩方式
若压缩后头部字段所使用的是模式三压缩方式,则根据常用静态字典中的第一索引值解压得到对应的字段名称,字段值为未压缩方式,直接保存即可。
(8)直接获取
若非以上三个压缩模式,则说明头部字段未压缩,直接保存即可。
(9)将解压缩或透传的流量数据进行本地化保存
此外,需要说明的是静态字典一旦建立后,几乎不会修改,因此后续只需要使用本地常用/次常用静态字典即可,效率比较高。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的包头的压缩方法的包头的压缩装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个包头的压缩装置实施例中的具体限定可以参见上文中对于包头的压缩方法的限定,在此不再赘述。
在一个实施例中,如图16所示,提供了一种包头的压缩装置,包括:头部字段提取模块1602、第一静态表查找模块1604、第二静态表查找模块1606、压缩标识生成模块1608和压缩模块1610,其中:
头部字段提取模块1602,用于对待传输的数据包进行解析,得到数据包的头部字段。
第一静态表查找模块1604,用于在第一静态表中查找与头部字段匹配的索引值;第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称。
第二静态表查找模块1606,用于在第二静态表中,根据索引值和头部字段查找目标字段值;第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率。
压缩标识生成模块1608,用于当在第二静态表中查到目标字段时,生成第一压缩标识。
压缩模块1610,用于基于索引值和第一压缩标识压缩头部字段,得到压缩后头部字段。
上述实施例中,预先为配置存储有达到第一使用频率的候选头部字段和候选字段名称的第一静态表,以及存储有达到第二使用频率的、且与候选字段名称对应的预设字段值的第二静态表,其中第二使用频率小于所述第一使用频率,在提取出待传输的数据包的头部字段之后,这样即使头部字段不存在于第一静态表中,也可以在第一静态表中查找与头部字段匹配的索引值,并在第二静态表中,根据索引值和头部字段查找到目标字段值,并生成第一压缩标识,基于索引值和第一压缩标识对头部字段进行高效的压缩,得到压缩后头部字段,无需再新构建动态表或者更新动态表,从而提高了对数据包的包头的压缩效率。
在一个实施例中,头部字段包括字段名称;第一静态表查找模块1604还用于:在第一静态表中查找与字段名称匹配的目标字段名称;查找第一静态表中与目标字段名称对应的索引值。
在一个实施例中,第一静态表包括第一本地静态表和第一远程静态表;第一静态表查找模块1604还用于:当在第一本地静态表中未查找到与字段名称匹配的目标字段名称时,获取第一远程静态表;基于第一远程静态表对第一本地静态表进行更新,得到更新后第一本地静态表;在更新后第一本地静态表中,查找与字段名称匹配的目标字段名称;第一静态表查找模块1604还用于:在更新后第一本地静态表中,查找与目标字段名称对应的索引值。
在一个实施例中,第一静态表查找模块1604,还用于:从第一静态表中,获取索引值对应的字段值;若字段值中存在与头部字段中的字段值匹配的目标字段值,生成第二压缩标识;基于索引值和第二压缩标识压缩数据包的头部字段,得到压缩后头部字段若字段值与头部字段中的字段值不匹配,通过第二静态表查找模块1606,执行在第二静态表中,根据索引值和头部字段查找目标字段值的步骤。
在一个实施例中,第二静态表查找模块1606,还用于:在第二静态表中查找与索引值匹配的字段值;在匹配的字段值中,查找与头部字段中的字段值匹配的目标字段值。
在一个实施例中,第二静态表包括第二本地静态表和第二远程静态表;第二静态表查找模块1606,还用于:当第二本地静态表中不存在与索引值匹配的字段值时,获取第二远程静态表;基于第二远程静态表对第二本地静态表进行更新,得到更新后第二本地静态表;在更新后第二本地静态表中,查找索引值匹配的字段值。
在一个实施例中,头部字段包括字段名称;压缩模块1610还用于:当在第二静态表中未查找到目标字段值时,生成第三压缩标识;基于索引值和第三压缩标识压缩字段名称;基于第三压缩标识对应的压缩算法对头部字段的字段值进行压缩,得到压缩后头部字段。
在一个实施例中,压缩模块1610还用于:当在第一静态表中未查找与头部字段匹配的索引值时,生成第四压缩标识;基于第四压缩标识对应的压缩算法对头部字段进行全量压缩,得到压缩后头部字段。
在一个实施例中,装置还包括数据发送模块,用于:基于压缩后头部字段对数据包中的头部字段进行替换,得到压缩后数据包;将压缩后数据包发送至接收端,以使接收端基于第一静态表、第二静态表和压缩后数据包携带的压缩标识,对压缩后数据包的压缩后头部字段进行解压缩,得到头部字段。
上述包头的压缩装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的包头的解压缩方法的包头的解压缩装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个包头的解压缩装置实施例中的具体限定可以参见上文中对于包头的解压缩方法的限定,在此不再赘述。
在一个实施例中,如图17所示,提供了一种包头的解压缩装置,包括:压缩后头部字段提取模块1702、索引值提取模块1704、静态表获取模块1706和解压缩模块1708,其中:
压缩后头部字段提取模块1702,用于从压缩后数据包中提取出压缩后头部字段和压缩标识。
索引值提取模块1704,用于当压缩标识为第一压缩标识时,从压缩后头部字段中提取索引值。
静态表获取模块1706,用于获取第一静态表和第二静态表;第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;第二静态表包括候选字段名称对应的、达到第二使用频率的候选字段值;第二使用频率小述第一使用频率。
解压缩模块1708,用于在第一静态表和第二静态表中,基于索引值查找压缩后头部字段对应的头部字段。
上述实施例中,通过预先配置存储有候选索引值、达到第一使用频率的候选头部字段和候选字段名称的第一静态表,以及存储有候选字段名称对应的、达到第二使用频率的候选字段值的第二静态表,在压缩后数据包中提取出压缩后头部字段和压缩标识,当压缩标识为第一压缩标识时,从压缩后头部字段中提取索引值,在第一静态表和第二静态表中,基于索引值查找压缩后头部字段对应的头部字段,这样在找不到压缩后头部字段在第一静态表中的对应字段值时,可以在第二静态表中查找对应的字段值,从而恢复压缩前的头部字段,无需再新构建动态表或者更新动态表用于解压缩,从而提高了对压缩后头部字段的解压缩效率。
在一个实施例中,解压缩模块1708,还用于:在第一静态表中查找与索引值对应目标字段名称;在第二静态表中查找索引值对应的目标字段值;基于目标字段名称和目标字段值,确定压缩后头部字段对应的头部字段。
在一个实施例中,索引值提取模块1704,还用于:当压缩标识为第二压缩标识时,从压缩后头部字段中提取索引值;在第一静态表中,基于索引值查找压缩后头部字段对应的头部字段。
在一个实施例中,索引值提取模块1704还用于:当压缩标识为第三压缩标识时,从压缩后头部字段中提取索引值;基于索引值在第一静态表查找压缩后头部字段对应的目标字段名称;基于所第三压缩标识对应的解压缩算法对压缩后头部字段的压缩后字段值进行解压缩,得到压缩后头部字段对应的字段值。
在一个实施例中,索引值提取模块1704,还用于:当压缩标识为第四压缩标识时,基于第四压缩标识对应的解压缩算法对压缩后头部字段进行解压缩,得到压缩后头部字段对应的头部字段。
上述包头的解压缩装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图18所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储镜像流量数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种包头的解压缩方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图19所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种包头的压缩方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图18或图19中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (15)
1.一种包头的压缩方法,其特征在于,所述方法包括:
对待传输的数据包进行解析,得到所述数据包的头部字段;
在第一静态表中查找与所述头部字段中的字段名称匹配的索引值;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;
从所述第一静态表中,获取所述索引值对应的字段值;
若所述字段值中存在与所述头部字段中的字段值匹配的目标字段值,生成第二压缩标识;基于所述索引值和所述第二压缩标识压缩所述数据包的所述头部字段,得到压缩后头部字段;
若所述字段值与所述头部字段中的字段值不匹配,则在第二静态表中,根据所述索引值和所述头部字段查找目标字段值;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
当在所述第二静态表中查到所述目标字段时,生成第一压缩标识;
基于所述第二静态表对应的第一索引值以及所述目标字段在所述第二静态表中对应的第二索引值和所述第一压缩标识压缩所述头部字段,得到压缩后头部字段;所述第一索引值属于所述索引值;
其中,所述压缩后头部字段中的压缩标识用于标识压缩过程中对头部字段所采用的压缩模式。
2.根据权利要求1所述的方法,其特征在于,所述在第一静态表中查找与所述头部字段中的字段名称匹配的索引值,包括:
在第一静态表中查找与所述字段名称匹配的目标字段名称;
查找所述第一静态表中与所述目标字段名称对应的索引值。
3.根据权利要求2所述的方法,其特征在于,所述第一静态表包括第一本地静态表和第一远程静态表;所述在第一静态表中查找与所述字段名称匹配的目标字段名称,包括:
当在所述第一本地静态表中未查找到与所述字段名称匹配的目标字段名称时,获取所述第一远程静态表;
基于所述第一远程静态表对所述第一本地静态表进行更新,得到更新后第一本地静态表;
在所述更新后第一本地静态表中,查找与所述字段名称匹配的目标字段名称;
所述查找所述第一静态表中与所述目标字段名称对应的索引值,包括:
在所述更新后第一本地静态表中,查找与所述目标字段名称对应的索引值。
4.根据权利要求1所述的方法,其特征在于,所述在第二静态表中,根据所述索引值和所述头部字段查找目标字段值,包括:
在所述第二静态表中查找与所述索引值匹配的字段值;
在所述匹配的字段值中,查找与所述头部字段中的字段值匹配的目标字段值。
5.根据权利要求4所述的方法,其特征在于,所述第二静态表包括第二本地静态表和第二远程静态表;所述在所述第二静态表中查找与所述索引值匹配的字段值,包括:
当所述第二本地静态表中不存在与所述索引值匹配的字段值时,获取所述第二远程静态表;
基于所述第二远程静态表对所述第二本地静态表进行更新,得到更新后第二本地静态表;
在所述更新后第二本地静态表中,查找所述索引值匹配的字段值。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当在所述第二静态表中未查找到所述目标字段值时,生成第三压缩标识;
基于所述索引值和所述第三压缩标识压缩所述字段名称;
基于所述第三压缩标识对应的压缩算法对所述头部字段的字段值进行压缩,得到压缩后头部字段。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
当在所述在第一静态表中未查找与所述头部字段匹配的索引值时,生成第四压缩标识;
基于所述第四压缩标识对应的压缩算法对所述头部字段进行全量压缩,得到压缩后头部字段。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
基于所述压缩后头部字段对所述数据包中的头部字段进行替换,得到压缩后数据包;
将所述压缩后数据包发送至接收端,以使所述接收端基于所述第一静态表、所述第二静态表和所述压缩后数据包携带的压缩标识,对所述压缩后数据包的压缩后头部字段进行解压缩,得到所述头部字段。
9.一种包头的解压缩方法,其特征在于,所述方法包括:
从压缩后数据包中提取出压缩后头部字段和压缩标识;所述压缩标识用于标识压缩过程中对头部字段所采用的压缩模式;
当所述压缩标识为第一压缩标识时,从所述压缩后头部字段中提取第一索引值和第二索引值;
获取第一静态表和第二静态表;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
在所述第一静态表中查找所述第一索引值对应的目标字段名称,在所述第二静态表中查找所述第二索引值对应的目标字段值,得到所述压缩后头部字段对应的头部字段;
当所述压缩标识为第二压缩标识时,从所述压缩后头部字段中提取索引值;
在所述第一静态表中,查找所述索引值对应的目标字段名称和目标字段值,得到所述压缩后头部字段对应的头部字段。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当所述压缩标识为第三压缩标识时,从所述压缩后头部字段中提取索引值;
基于所述索引值在所述第一静态表查找所述压缩后头部字段对应的目标字段名称;
基于所第三压缩标识对应的解压缩算法对所述压缩后头部字段的压缩后字段值进行解压缩,得到所述压缩后头部字段对应的字段值。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当所述压缩标识为第四压缩标识时,基于所述第四压缩标识对应的解压缩算法对所述压缩后头部字段进行解压缩,得到所述压缩后头部字段对应的头部字段。
12.一种包头的压缩装置,其特征在于,所述装置包括:
头部字段提取模块,用于对待传输的数据包进行解析,得到所述数据包的头部字段;
第一静态表查找模块,用于在第一静态表中查找与所述头部字段中的字段名称匹配的索引值;从所述第一静态表中,获取所述索引值对应的字段值;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;
压缩标识生成模块,用于若所述字段值中存在与所述头部字段中的字段值匹配的目标字段值,生成第二压缩标识;
压缩模块,用于基于所述索引值和所述第二压缩标识压缩所述数据包的所述头部字段,得到压缩后头部字段;
第二静态表查找模块,用于若所述字段值与所述头部字段中的字段值不匹配,则在第二静态表中,根据所述索引值和所述头部字段查找目标字段值;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
所述压缩标识生成模块,还用于当在所述第二静态表中查找到所述目标字段时,生成第一压缩标识;
所述压缩模块,还用于基于所述第二静态表对应的第一索引值以及所述目标字段在所述第二静态表中对应的第二索引值和所述第一压缩标识压缩所述头部字段,得到压缩后头部字段;所述第一索引值属于所述索引值;
其中,所述压缩后头部字段中的压缩标识用于标识压缩过程中对头部字段所采用的压缩模式。
13.一种包头的解压缩装置,其特征在于,所述装置包括:
压缩后头部字段提取模块,用于从压缩后数据包中提取出压缩后头部字段和压缩标识;所述压缩标识用于标识压缩过程中对头部字段所采用的压缩模式;
索引值提取模块,用于当所述压缩标识为第一压缩标识时,从所述压缩后头部字段中提取第一索引值和第二索引值;
静态表获取模块,用于获取第一静态表和第二静态表;所述第一静态表包括候选索引值、达到第一使用频率的候选头部字段和候选字段名称;所述第二静态表包括所述候选字段名称对应的、达到第二使用频率的候选字段值;所述第二使用频率小于所述第一使用频率;
解压缩模块,用于在所述第一静态表中查找所述第一索引值对应的目标字段名称,在所述第二静态表中查找所述第二索引值对应的目标字段值,得到所述压缩后头部字段对应的头部字段;
所述索引值提取模块,还用于当所述压缩标识为第二压缩标识时,从所述压缩后头部字段中提取索引值;
所述解压缩模块,还用于在所述第一静态表中,查找所述索引值对应的目标字段名称和目标字段值,得到所述压缩后头部字段对应的头部字段。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310970670.5A CN116708589B (zh) | 2023-08-03 | 2023-08-03 | 包头的压缩方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310970670.5A CN116708589B (zh) | 2023-08-03 | 2023-08-03 | 包头的压缩方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116708589A CN116708589A (zh) | 2023-09-05 |
CN116708589B true CN116708589B (zh) | 2023-10-13 |
Family
ID=87824290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310970670.5A Active CN116708589B (zh) | 2023-08-03 | 2023-08-03 | 包头的压缩方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116708589B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9165008B1 (en) * | 2011-12-28 | 2015-10-20 | Teradata Us, Inc. | System and method for data compression using a dynamic compression dictionary |
CN115065725A (zh) * | 2022-05-12 | 2022-09-16 | 北京奇艺世纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115408350A (zh) * | 2022-07-13 | 2022-11-29 | 深圳市腾讯计算机系统有限公司 | 日志压缩、日志还原方法、装置、计算机设备和存储介质 |
CN115766310A (zh) * | 2022-10-10 | 2023-03-07 | 深圳市欧瑞博科技股份有限公司 | 应用于智能家居系统的数据传输方法、装置、设备及介质 |
-
2023
- 2023-08-03 CN CN202310970670.5A patent/CN116708589B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9165008B1 (en) * | 2011-12-28 | 2015-10-20 | Teradata Us, Inc. | System and method for data compression using a dynamic compression dictionary |
CN115065725A (zh) * | 2022-05-12 | 2022-09-16 | 北京奇艺世纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115408350A (zh) * | 2022-07-13 | 2022-11-29 | 深圳市腾讯计算机系统有限公司 | 日志压缩、日志还原方法、装置、计算机设备和存储介质 |
CN115766310A (zh) * | 2022-10-10 | 2023-03-07 | 深圳市欧瑞博科技股份有限公司 | 应用于智能家居系统的数据传输方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116708589A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9727574B2 (en) | System and method for applying an efficient data compression scheme to URL parameters | |
KR20040104515A (ko) | 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치 | |
JP2005521280A5 (zh) | ||
CN106156037B (zh) | 数据处理方法、装置及系统 | |
CN104980482A (zh) | 文件发送方法及装置、文件接收方法及装置 | |
CN108696899B (zh) | Sip消息传输与接收方法及传输与接收装置 | |
US20100146112A1 (en) | Efficient communication techniques | |
KR101724231B1 (ko) | 이더넷 헤더 압축을 통한 네트워크 전송 효율 향상 방법 및 장치 | |
WO2016146009A1 (zh) | Html页面压缩方法及装置 | |
CN109302449B (zh) | 数据写入方法、数据读取方法、装置和服务器 | |
CN109617708A (zh) | 一种埋点日志的压缩方法、设备及系统 | |
CN104572964A (zh) | 一种压缩文件的解压方法和装置 | |
CN116708589B (zh) | 包头的压缩方法、装置、计算机设备和存储介质 | |
CN111651417B (zh) | 日志处理方法及装置 | |
CN105704215B (zh) | 文件共享系统及相应的文件发送方法及装置 | |
CN116684703A (zh) | 基于邻近服务通信协议的流媒体数据传输方法及相关设备 | |
CN114125071B (zh) | 数据压缩传输方法及装置 | |
CN106878054B (zh) | 一种业务处理方法和装置 | |
CN110545107B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN113014551A (zh) | 数据压缩方法和基于其的数据传输方法、终端设备和系统 | |
CN110545108B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN112804312B (zh) | 文件上传方法、设备以及计算机可读介质 | |
Li et al. | Compression strategy of structured text based on prior dictionary for data distribution system | |
CN117041272B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN114050925B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40094522 Country of ref document: HK |