一种数据压缩、解压缩方法及装置与流程

文档序号:12541212阅读:235来源:国知局
一种数据压缩、解压缩方法及装置与流程
本发明涉及网络数据处理技术领域,特别是涉及一种数据压缩、解压缩方法及装置。

背景技术:
随着计算机和通信技术的发展,Internet网络在过去的十几年中迅猛发展,但拥塞问题越来越严重。为了满足网格中超大数据传输和高性能计算的要求,迫切需要一种更加有效传输的传输协议。现有的TCP协议不能在高带宽延迟积的网络中高效地工作,主要是传统的TCP丢包重传,加性增,乘性减等机制会导致严重的性能问题,在高速网络中传输速率很不稳定,很容易造成带宽的浪费。例如,TCP利用丢包作为网络拥塞的指示,一旦丢包,则之前的传送的包都要重新传送,导致不能实际带宽降低。另外TCP在高速网络中调整窗口的方式会引起网络传输的不稳定,从而导致不可避免的振动。因此在高带宽网络中传输协议需要具有很快的响应特性,同时又不能造成振荡,这些要求给设计新的算法带来了很大的困难。广域网传输具有高延迟、高丢包率的特性,传输效率较低。行之有效的方法是增大网络带宽,修改协议栈,设置缓存,数据压缩后再传输等,加快数据传输效率。其中,对传输数据先压缩再传输的方式很切合实际且很有必要。目前应用到网络的上的压缩算法一般是自适应的无损压缩算法,如gzip、透明数据压缩(TDR)、分子序列压缩(MSR)等,这些算法被用在广域网加速方案中,在一定程度上提高了网络的传输效率。在高带宽延迟积的网络中,丢包是不可避免。传统LZ算法中,在解压时需要局部的全局字典,如果即将解压缩的数据的相邻前面一部分数据因为时延或是丢包没有到达,则收到的这段数据是不能解压的,必须要等到它之前的所有数据解压完才能开始这段数据的解压工作,实质上,在等待丢失的数据时间段内,解压程序是不能做任何工作的。可见,当发生丢包时,已接收到的数据包不能得到及时解压,严重影响了解压端的解压速度,造成系统资源浪费。

技术实现要素:
本发明实施例中提供了一种数据压缩、解压缩方法及装置,以提高数据压缩以及解压缩的效率。为了解决上述技术问题,本发明实施例公开了如下技术方案:一方面,提供一种数据压缩方法,包括:接收待压缩的第一数据包;利用第一参照字典对所述第一数据包进行压缩,形成第一压缩数据包,所述第一参照字典对应所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包,所述第一压缩数据包携带所述第一参照字典对应的数据包信息。结合上述一方面,在第一种可能的实现方式中,还包括:利用所述第一参照字典对所述第一数据包之后预置长度之内的数据包进行压缩,压缩后的数据包携带所述第一参照字典对应的数据包信息。结合上述一方面,和/或第一种可能的实现方式,在第二种可能的实现方式中,还包括:接收所述第一数据包之后预置长度之外的第二数据包;利用第二参照字典对所述第二数据包进行压缩,形成第二压缩数据包,所述第二参照字典对应所述第二数据包之前与所述第二数据包存在间隔的预置长度的连续数据包,所述第二压缩数据包携带所述第二参照字典对应的数据包信息。另一方面,提供一种数据解压缩方法,包括:接收第一压缩数据包,所述第一压缩数据包携带压缩所用的第一参照字典对应的数据包信息,所述第一参照字典对应压缩端接收所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包;利用所述第一参照字典对应的数据包构建所述第一参照字典,利用所述第一参照字典对所述第一压缩数据包进行解压缩,获得第一数据。结合上述另一方面,在第一种可能的实现方式中,所述第一压缩数据包之后,还包括:判断所述第一参照字典对应的数据包是否完整,如果不存在,则将所述第一压缩数据包放入待解压缩队列,进行其他满足构建相应参照字典的压缩数据包的解压缩,待所述第一参照字典包含的数据全部传输完毕之后触发所述第一压缩数据包的解压缩步骤。结合上述另一方面,在第二种可能的实现方式中,还包括:接收第二压缩数据包,所述第二压缩数据包携带压缩所用的第二参照字典对应的数据包信息,所述第二压缩数据包由压缩所述第一数据包之后预置长度之外数据包形成;利用所述第二参照字典对应的数据包构建所述第二参照字典,利用所述第二参照字典对所述第二压缩数据包进行压缩,获得第二数据包。再一方面,提供一种数据压缩装置,包括:第一接收模块,用于接收待压缩的第一数据包;第一压缩模块,用于利用第一参照字典对所述第一数据包进行压缩,形成第一压缩数据包,所述第一参照字典对应所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包,所述第一压缩数据包携带所述第一参照字典对应的数据包信息。结合上述再一方面,在第一种可能的实现方式中,还包括:第二压缩模块,用于利用所述第一参照字典对所述第一数据包之后预置长度之内的数据包进行压缩。结合上述再一方面,在第二种可能的实现方式中,还包括:第二接收模块,用于接收所述第一数据包之后预置长度之外的第二数据包;第三压缩模块,用于利用第二参照字典对所述第二数据包进行压缩,形成第二压缩数据包,所述第二参照字典对应所述第二数据包之前与所述第二数据包存在间隔的预置长度的连续数据包,所述第二压缩数据包携带所述第二参照字典对应的数据包信息。又一方面,提供一种数据解压缩装置,包括:第一解压接收模块,用于接收第一压缩数据包,所述第一压缩数据包携带压缩所用的第一参照字典对应的数据包信息,所述第一参照字典对应压缩端接收所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包;第一解压缩模块,用于利用所述第一参照字典对应的数据包构建所述第一参照字典,利用所述第一参照字典对所述第一压缩数据包进行解压缩,获得第一数据包。结合上述又一方面,在第一种可能的实现方式中,还包括:判断模块,用于判断所述第一参照字典包含的数据包是否完整,如果不存在,则触发等待模块;所述等待模块,用于将所述第一压缩数据包放入待解压缩队列,进行其他满足构建相应参照字典的压缩数据包的解压缩,待所述第一参照字典包含的数据全部传输完毕之后触发所述第一压缩数据包的解压缩步骤。结合上述又一方面,在第二种可能的实现方式中,还包括:第二解压接收模块,用于接收第二压缩数据包,所述第二压缩数据包携带压缩所用的第二参照字典对应的数据包信息,所述第二压缩数据包由压缩所述第一数据包之后预置长度之外数据包形成;第二解压缩模块,用于利用所述第二参照字典对应的数据包构建所述第二参照字典,利用所述第二参照字典对所述第二压缩数据包进行压缩,获得第二数据包。本发明实施例中,压缩端在进行数据压缩时,采用跳跃压缩,针对待压缩的第一数据包,构建局部字典,根据局部字典对待压缩的第一数据包进行压缩处理,其中,该局部字典为所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包,从而提高压缩端的压缩速率;对于解压缩端,相应地利用压缩端所应用的局部字典,对接收到的经过压缩的第一数据进行解压缩处理,由于解压缩过程中采用的是局部字典,使得解压缩并不依赖最近得到的数据包,从而可以避免因丢包重传而导致的解压缩等待,提高解压缩端的解压缩速率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明提供的一个数据压缩方法实施例的流程图;图2为本发明提供的另一个数据压缩方法实施例的流程图;图3为本发明提供的又一个数据压缩方法实施例的流程图;图4为本发明实施例中压缩数据的示意图;图5为本发明提供的压缩场景图;图6为本发明提供的一个数据解压缩方法实施例流程图;图7为本发明提供的另一个数据解压缩方法实施例流程图;图8为本发明提供的又一个数据解压缩方法实施例流程图;图9为本发明提供的再一个数据解压缩方法实施例流程图;图10为本发明提供的一种数据压缩装置实施例结构图;图11为本发明提供的另一种数据压缩装置实施例结构图:图12为本发明提供的又一种数据压缩装置实施例结构图:图13为本发明提供的一种数据解压缩装置实施例结构图:图14为本发明提供的另一种数据解压缩装置实施例结构图:图15为本发明提供的又一种数据压缩装置实施例结构图:图16为本发明提供的再一种数据压缩装置实施例结构图。具体实施方式为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。参见图1,为本发明提供的一个数据压缩方法实施例的流程,具体可以包括:步骤101、接收待压缩的第一数据包;步骤102、利用第一参照字典对所述第一数据包进行压缩,形成第一压缩数据包,所述第一参照字典对应所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包,所述第一压缩数据包携带所述第一参照字典对应的数据包信息。该步骤中,参照字典为压缩数据时提供重复数据查询的数据库。针对第一数据包构建的第一参照字典具体为:压缩所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包。本领域技术人员应该理解的是,在构建参照字典的过程中,对参照字典对应的连续数据包进行压缩时,仍需要压缩该段连续数据包之前的其他连续数据包作为当次构建参照字典时压缩操作所需的参照字典。可见,本发明实施例中,参照字典的构建依赖于当前待压缩数据包之前传输的预置长度的连续数据包,并且,这部分连续数据包与当前待压缩的数据包存在一定的间隔,为跳跃压缩。此外,本发明实施例中,所述第一压缩数据包携带所述第一参照字典对应的数据包信息。具体实施时,可以在利用参照字典完成压缩的数据包中携带一个头部信息块,通过该信息块详细记录该压缩数据包的相关压缩信息,为解压数据包提供依据。所述第一参照字典对应的数据包信息至少应包括:第一参照字典由何数据压缩获得。例如:头部信息块包含的信息可以如下面表1所示。表1头部信息块包含的信息表1中各个参数的物理含义如下:分块编号:压缩数据包在整个压缩流中的分块编号;数据分块相对起始地址:数据分块(即待压缩数据包)在当前数据流的起始地址;数据分块相对结束地址:数据分块在当前数据流的结束地址;压缩数据包长度:该压缩数据包的有效长度。本发明实施例中,压缩端在进行数据压缩时,采用跳跃压缩,针对待压缩的第一数据包,构建局部字典,根据局部字典对待压缩的第一数据包进行压缩处理,其中,该局部字典为所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包,从而提高压缩端的压缩速率;由此,对于解压缩端,相应地利用压缩端所应用的局部字典,对接收到的经过压缩的第一数据进行解压缩处理,由于解压缩过程中采用的是局部字典,使得解压缩并不依赖最近得到的数据包,从而可以避免因丢包重传而导致的解压缩等待,提高解压缩端的解压缩速率。具体实施过程中,如果针对每一个待压缩的数据包构建参照字典,则需要耗费大量的时间用于构建参照字典,因此,压缩速率会大大降低。为了解决这一问题,在本发明的一个优选实施例中,可以设置多个数据包应用同一个参照字典进行数据压缩。由此,如图2所示,图1所示实施例中还可以包括以下执行步骤:步骤103、利用所述第一参照字典对所述第一数据包之后预置长度之内的数据包进行压缩,压缩后的数据包携带所述第一参照字典对应的数据包信息。该实施例中,压缩端利用第一参照字典对在第一数据包之后接收到的预置长度内的多个数据包进行压缩处理。每个利用第一参照字典进行压缩后的数据包均需要携带第一参照字典对应的数据包信息。由于多个数据包应用同一个参照字典进行数据压缩,使得压缩多个数据块之后才需要更新一次参照字典,从而使得压缩数据的速率大大提高。图3所示为本发明提供的另一个数据压缩方法实施例,同图1所示实施例相比,该实施例中,还包括以下执行步骤:步骤104、接收所述第一数据包之后预置长度之外的第二数据包;步骤105、利用第二参照字典对所述第二数据包进行压缩,形成第二压缩数据包,所述第二参照字典对应所述第二数据包之前与所述第二数据包存在间隔的预置长度的连续数据包,所述第二压缩数据包携带所述第二参照字典对应的数据包信息。该实施例中,当对所述第一数据包之后预置长度之内的数据包完成压缩处理时,需要更新参照字典。更新字典的主要目的之一是,除去字典中陈旧的数据,该部分数据对于当前压缩数据重复检测率较低,属于“冷数据”,因而不能提高数据压缩率。具体地,如果当前待压缩数据包的编号与构成参照字典的最大数据分块编号之差大于预置间隔长度时更新字典,即将紧邻第一参照字典的连续数据分块添加到字典中。具体地,对于所述第一数据包之后预置长度之外的第二数据包,压缩所依据的第二参照字典对应所述第二数据包之前与所述第二数据包存在间隔的预置长度的连续数据包。将所述第二数据包之前与所述第二数据包存在间隔的预置长度的连续数据包进行压缩,即完成第二参照字典的构建。同第一参照字典相类似,可以利用所述第二参照字典对所述第二数据包之后预置长度之内的数据包进行压缩,从而使得压缩的速率大大提高。需要说明的是,在确定参照字典对应的数据包时,应尽量选择距离当前待压缩数据包较远的数据包。这是由于,压缩端在接收压缩数据包的过程中,由于传输网络原因,可能发生数据包丢失的情形,当发生数据包丢失的情形之后,丢失的数据包会进行重传。由此,如果选取距离当前待压缩数据包较近的数据包,当发生数据包丢失时,压缩端需要耗费时间等待丢失数据包的重传,无法完成当前数据包的压缩。而如果选取距离当前待压缩数据包较远的数据包,即使发生数据包丢失,丢失的数据包在重传的过程中,对当前待压缩数据包的压缩操作还未开始,当轮到当前数据包进行压缩时,丢失的数据包已经重传完毕,因此,不会影响对当前数据的压缩,大大节省了压缩时间。为了便于对本发明技术方案的理解,下面通过具体实施方式,对本发明技术方案进行详细说明。首先,假设在确定参照字典的过程中,参照字典中包含的最后一个数据块与待压缩的数据包之间间隔有m个数据包,参照字典中包含的第一个数据块与待压缩的数据包之间间隔有(m+n)个数据包,参照字典中包含n个数据包,此外,假设x个连续的待压缩数据包应用同一个参照字典进行数据压缩。其中,m、n和x均为自然数。压缩算法为LZ算法,解压缩算法为DTLZ算法。图4所示为本发明实施例中压缩数据的示意图。其中,滑动窗口指压缩数据包时参照字典对应的数据块集合。当正在压缩的数据包为第i个数据包时,将其之前第(i-m-n)个数据包开始至(i-n)个数据包为止的n个数据包进行压缩,压缩之后的数据压缩包作为参照字典,即完成参照字典的构建。本发明实施例中,参照字典一旦建立,则在一段时间内不再更新,即:从正在压缩的数据包开始的x个数据包均应用同一个参照字典进行数据压缩。参见图5所示的压缩场景,对于data7这段数据,可以将data1至data5进行压缩,将压缩之后的数据包作为压缩data7时的参照字典,对data7进行压缩,当data7数据压缩到一定时候,即输出压缩后的数据,此时输出的数据具有如下表2的格式。表2压缩数据格式表2中各个参数的物理含义如下:块序号:压缩数据包在整个压缩流中的分块编号;数据分块相对起始地址:数据分块在当前数据流的起始地址;数据分块相对结束地址:数据分块在当前数据流的结束地址;压缩数据包长度:该压缩数据包的有效长度;所属流块:当前数据分块属于哪个数据流的编号,通常,一个数据文件形成一个数据流;压缩后的数据:压缩数据包的正文内容。对于单个文件的压缩不需要添加所属流块标识,整个压缩工作只针对同一个数据流操作。而对多个文件压缩传输时,由于文件数目多,体积大,使得块头信息(如:块序号)超出计算机所能表示的范围。因而,需要对每个文件所形成的数据流加以编号。在解压缩时,只需获取数据分块的流块标识,即可正确地对压缩块进行解压缩;否则,数据解压缩可能产生错误。其中,块序号表示data7这段数据压缩后的序号,块长度表示压缩后数据的实际长度,通过“数据分块相对起始地址”和“数据分块相对结束地址”携带参照字典对应的数据包的范围。由此,当解压缩端接收到data7对应的压缩数据包之后,根据压缩数据包携带的参照字典信息,即:data1到dat5的序号获知,如果要解压这段数据,只需要接收到data2到data5这几个数据包即可构建参照字典,进而进行解压缩操作。可以设置data7之后data8到data10均利用压缩data7所用的参照字典。因此,每压缩完一个数据包,DTLZ算法检测是否需要更新参照字典,检测方法即判断接收到的压缩数据包中携带的参照字典信息是否发生变化。如果参照字典不需要更新,则直接利用已构建的参照字典对下一个数据包进行压缩处理;否则,根据新的参照字典对应的数据包信息,构建新的参照字典。对于连续的待压缩数据包应用同一个参照字典进行数据压缩的情形,如果当前压缩所需参照字典对应的数据包范围与前一压缩数据包所需参照字典对应的数据包范围一样,则不需要更新参照字典;否则,将所需参照字典进行更新之后,再进行压缩处理。例如:上一进行压缩的数据包的包序是X,压缩该数据包利用的参照字典对应的数据包范围是[X-m-n,X-n],对该数据包之后预置长度之内的数据包进行压缩时,如果当前压缩所需的参照字典对应的数据包范围也是[X-m-n,X-n],则不需要更新参照字典;否则,需要更新参照字典,使得当前数据包的参照字典和之前数据包的参照字典一致。通过设置连续的待压缩数据包应用同一个参照字典进行数据压缩,减少字典更新次数,整体上提高压缩速度。与本发明提供的压缩方法实施例相对应,本发明还提供了一种数据解压缩方法。如图6所示,为本发明提供的一个数据解压缩方法实施例流程,可以包括以下执行步骤:步骤601、接收第一压缩数据包,所述第一压缩数据包携带压缩所用的第一参照字典对应的数据包信息,所述第一参照字典对应压缩端接收所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包;该步骤中,第一压缩数据包中携带压缩所用的第一参照字典对应的数据包信息,由此,解压缩端根据该信息即可获得压缩时所用的参照字典。步骤602、利用所述第一参照字典对应的数据包构建所述第一参照字典,利用所述第一参照字典对所述第一压缩数据包进行解压缩,获得第一数据包。该步骤中,解压缩端进行压缩端压缩算法的逆操作,根据第一压缩数据包中携带的第一参照字典对应的数据包信息,利用相关数据包构建所述第一参照字典,进而完成对第一压缩数据包的解压缩,获得第一数据包。本发明实施例中,由于压缩端在进行数据压缩时,采用跳跃压缩,针对待压缩的第一数据包,构建局部字典,根据局部字典对待压缩的第一数据包进行压缩处理,其中,该局部字典为所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包。由此,对于解压缩端,相应地利用压缩端所应用的局部字典,对接收到的经过压缩的第一数据进行解压缩处理,由于解压缩过程中采用的是局部字典,使得解压缩并不依赖最近得到的数据包,从而可以避免因丢包重传而导致的解压缩等待,提高解压缩端的解压缩速率。由于传输网络原因,在压缩端向解压缩端传输压缩数据包的过程中,可能发生数据包丢失的情形。这样,当解压缩端在构建本次解压缩所需的参照字典时,可能包含所需数据包的压缩包还未到达,因此,无法进行本次的解压缩操作。为了解决这一问题,在本发明提供的另一个实施例中,如图7所示,解压缩数据的流程具体为:步骤701、接收第一压缩数据包,所述第一压缩数据包携带压缩所用的第一参照字典对应的数据包信息,所述第一参照字典对应压缩端接收所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包。步骤703、判断所述第一参照字典对应的数据包是否完整,如果不完整,则继续步骤704;否则,继续步骤702。步骤704、将所述第一压缩数据包放入待解压缩队列,进行其他满足构建相应参照字典的压缩数据包的解压缩,等待所述第一参照字典包含的数据全部传输完毕之后,继续步骤702。步骤702、利用所述第一参照字典对应的数据包构建所述第一参照字典,利用所述第一参照字典对所述第一压缩数据包进行解压缩,获得第一数据包。该实施例中,当解压缩端接收到通过网络传输的第一压缩数据包后,需要根据第一压缩数据包中携带的第一参照字典对应的数据包信息,判断所需要的数据包是否完整,如果已经完整,即可构建第一参照字典,进行解压缩操作;否则,将所述数据包放入待解压队列,而进行其他满足构建相应参照字典的压缩数据包的解压缩操作,等待所述第一参照字典包含的数据全部传输完毕之后才进行解压。例如,假设正在解压缩的数据包为dataX,由于其解压缩所需的参照字典对应的数据包已经完整,因此,可以对dataX进行解压缩操作。解压缩完成后,DTLZ从待解压队列中取出一个数据包,查看其解压所需的参照字典对应的数据包是否完整,如果不完整,则再次放回到队列中,等待下一次的查询。由于解压缩所应用的DTLZ是乱序容忍的算法,因此,解压缩端后接受到的数据包有可能先得到解压缩,从而不会频繁出现等待解压缩的情况,使得解压缩的速率大大提高。如图8和图9所示,为本发明提供的另外两种数据解压缩的实施例。同图6和图7所示实施例相比,这两种实施例中增加执行了如下步骤:步骤603(705)、接收第二压缩数据包,所述第二压缩数据包携带压缩所用的第二参照字典对应的数据包信息,所述第二压缩数据包由压缩所述第一数据包之后预置长度之外数据包形成;步骤604(706)、利用所述第二参照字典对应的数据包构建所述第二参照字典,利用所述第二参照字典对所述第二压缩数据包进行压缩,获得第二数据包。上述实施例中,压缩端在压缩第二数据包时,可能采用不同于第一参照字典的第二参照字典。当解压缩端接收第二压缩数据包时,根据所述第二压缩数据包携带的第二参照字典对应的数据包信息,获知第二参照字典对应的数据包不同于当前已经构建的第一参照字典对应的数据包,因此,需要更新参照字典。此时,利用所述第二参照字典对应的数据包构建第二参照字典,进而,利用第二参照字典完成对第二解压缩数据包的解压缩,获得第二数据包。与本发明提供的数据压缩方法实施例相对应,本发明还提供了一种数据压缩装置。如图10所示,为本发明提供的一种数据压缩装置的实施例,该装置具体可以包括:第一接收模块1001,用于接收待压缩的第一数据包;第一压缩模块1002,用于利用第一参照字典对所述第一数据包进行压缩,形成第一压缩数据包,所述第一参照字典对应所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包,所述第一压缩数据包携带所述第一参照字典对应的数据包信息。本发明实施例中,数据压缩装置在进行数据压缩时,第一压缩模块1002采用跳跃压缩,针对待压缩的第一数据包,构建局部字典,根据局部字典对待压缩的第一数据包进行压缩处理,其中,该局部字典为所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包,从而提高压缩端的压缩速率;由此,对于解压缩端,相应地利用压缩端所应用的局部字典,对接收到的经过压缩的第一数据进行解压缩处理,由于解压缩过程中采用的是局部字典,使得解压缩并不依赖最近得到的数据包,从而可以避免因丢包重传而导致的解压缩等待,提高解压缩端的解压缩速率。具体实施过程中,如果针对每一个待压缩的数据包构建参照字典,则需要耗费大量的时间用于构建参照字典,因此,压缩速率会大大降低。为了解决这一问题,在本发明的一个优选实施例中,可以设置多个数据包应用同一个参照字典进行数据压缩。如图11所示,该数据压缩装置的实施例中,还包括:第二压缩模块1003,用于利用所述第一参照字典对所述第一数据包之后预置长度之内的数据包进行压缩。该实施例中,第二压缩模块1003利用第一参照字典对在第一数据包之后接收到的预置长度内的多个数据包进行压缩处理。每个利用第一参照字典进行压缩后的数据包均需要携带第一参照字典对应的数据包信息。由于多个数据包应用同一个参照字典进行数据压缩,使得压缩多个数据块之后才需要更新一次参照字典,从而该数据压缩装置使得压缩数据的速率大大提高。在本发明提供的又一个数据压缩装置实施例中,如图12所示,还可以包括:第二接收模块1004,用于接收所述第一数据包之后预置长度之外的第二数据包;第三压缩模块1005,用于利用第二参照字典对所述第二数据包进行压缩,形成第二压缩数据包,所述第二参照字典对应所述第二数据包之前与所述第二数据包存在间隔的预置长度的连续数据包,所述第二压缩数据包携带所述第二参照字典对应的数据包信息。该实施例中,当对所述第一数据包之后预置长度之内的数据包完成压缩处理时,需要更新参照字典。具体地,对于所述第一数据包之后预置长度之外的第二数据包,压缩所依据的第二参照字典对应所述第二数据包之前与所述第二数据包存在间隔的预置长度的连续数据包。因此,通过第三压缩模块1005,利用第二参照字典对所述第二数据包进行压缩,形成第二压缩数据包。需要说明的是,在确定参照字典对应的数据包时,应尽量选择距离当前待压缩数据包较远的数据包。这是由于,数据压缩装置在接收压缩数据包的过程中,由于传输网络原因,可能发生数据包丢失的情形,当发生数据包丢失的情形之后,丢失的数据包会进行重传。由此,如果选取距离当前待压缩数据包较近的数据包,当发生数据包丢失时,压缩端需要耗费时间等待丢失数据包的重传,无法完成当前数据包的压缩。而如果选取距离当前待压缩数据包较远的数据包,即使发生数据包丢失,丢失的数据包在重传的过程中,对当前待压缩数据包的压缩操作还未开始,当轮到当前数据包进行压缩时,丢失的数据包已经重传完毕,因此,不会影响对当前数据的压缩,大大节省了压缩时间。相应上述数据压缩装置,本发明还提供了一种数据解压缩装置。如图13所示,为本发明提供的一种数据解压缩装置实施例,该装置具体可以包括:第一解压接收模块1301,用于接收第一压缩数据包,所述第一压缩数据包携带压缩所用的第一参照字典对应的数据包信息,所述第一参照字典对应压缩端接收所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包;第一解压缩模块1302,用于利用所述第一参照字典对应的数据包构建所述第一参照字典,利用所述第一参照字典对所述第一压缩数据包进行解压缩,获得第一数据包。该实施例中,由于压缩端在进行数据压缩时,采用跳跃压缩,针对待压缩的第一数据包,构建局部字典,根据局部字典对待压缩的第一数据包进行压缩处理,其中,该局部字典为所述第一数据包之前与所述第一数据包存在间隔的预置长度的连续数据包。由此,对于解压缩装置,相应地利用压缩端所应用的局部字典,对接收到的经过压缩的第一数据进行解压缩处理,由于解压缩过程中采用的是局部字典,使得解压缩并不依赖最近得到的数据包,从而可以避免因丢包重传而导致的解压缩等待,提高解压缩端的解压缩速率。由于传输网络原因,在压缩端向解压缩端传输压缩数据包的过程中,可能发生数据包丢失的情形。这样,当解压缩端在构建本次解压缩所需的参照字典时,可能包含所需数据包的压缩包还未到达,因此,无法进行本次的解压缩操作。为了解决这一问题,在本发明提供的另一个解压缩装置实施例中,如图14所示,该装置具体还可以包括:判断模块1303,用于判断所述第一参照字典包含的数据包是否完整,如果不存在,则触发等待模块1304;所述等待模块1304,用于将所述第一压缩数据包放入待解压缩队列,进行其他满足构建相应参照字典的压缩数据包的解压缩,待所述第一参照字典包含的数据全部传输完毕之后触发所述第一压缩数据包的解压缩步骤。该实施例中,当解压缩装置接收到通过网络传输的第一压缩数据包后,需要根据第一压缩数据包中携带的第一参照字典对应的数据包信息,通过判断模块1303判断所需要的数据包是否完整,如果已经完整,即可构建第一参照字典,进行解压缩操作;否则,触发等待模块1304,将所述数据包放入待解压队列,而进行其他满足构建相应参照字典的压缩数据包的解压缩操作,等待所述第一参照字典包含的数据全部传输完毕之后才进行解压。由于解压缩所应用的DTLZ是乱序容忍的算法,因此,解压缩端后接受到的数据包有可能先得到解压缩,从而不会频繁出现等待解压缩的情况,使得解压缩的速率大大提高。参见图15和图16,为本发明提供的另外两个解压缩装置实施例,其中,两个解压缩装置中还可以包括:第二解压接收模块1305,用于接收第二压缩数据包,所述第二压缩数据包携带压缩所用的第二参照字典对应的数据包信息,所述第二压缩数据包由压缩所述第一数据包之后预置长度之外数据包形成;第二解压缩模块1306,用于利用所述第二参照字典对应的数据包构建所述第二参照字典,利用所述第二参照字典对所述第二压缩数据包进行压缩,获得第二数据包。上述实施例中,压缩端在压缩第二数据包时,可能采用不同于第一参照字典的第二参照字典。当解压缩装置接收第二压缩数据包时,根据所述第二压缩数据包携带的第二参照字典对应的数据包信息,获知第二参照字典对应的数据包不同于当前已经构建的第一参照字典对应的数据包,因此,需要更新参照字典。此时,通过第二解压缩模块1306,利用所述第二参照字典对应的数据包构建第二参照字典,进而,利用第二参照字典完成对第二解压缩数据包的解压缩,获得第二数据包。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1