数据发送、接收方法及服务器、客户端的制作方法

文档序号:7983880阅读:259来源:国知局
数据发送、接收方法及服务器、客户端的制作方法
【专利摘要】本发明适用于数据通信领域,提供了一种数据发送、接收方法及服务器、客户端,包括:客户端获取文件的前N个数据块的第一哈希Hash值,所述N为大于等于1的整数;所述客户端将所述文件的第N个数据块和所述第一Hash值发送给服务器,所述第一Hash值被所述服务器用于校验所述第N个数据块是否接收正确。在本发明中,每当客户端向服务器发送一次数据,服务器即根据当前接收到的数据进行一次Hash值的获取,从而能够实现在数据发送过程中对数据进行实时校验,以加快服务器的处理速度,提高了数据传输效率。
【专利说明】数据发送、接收方法及服务器、客户端
【技术领域】
[0001]本发明属于数据通信领域,尤其涉及一种数据发送、接收方法及服务器、客户端。【背景技术】
[0002]在例如分布式文件系统等场景下的数据读写过程中,客户端会将大量数据传送给服务器端,为了保证客户端和服务器端数据的一致性和正确性,通常采用计算数据的哈希(Hash)值来进行数据校验。
[0003]现有的消息摘要算法第五版(Message Digest Algorithm 5,MD5)等计算Hash值的算法只支持对完整的数据文件计算Hash值,服务器端只能在接收到全部数据之后才能计算Hash值,由此来校验数据的正确性,这使得服务器的网络输入/输出(Input/Output,I/O)和磁盘I/O只能串行,先接收完全部数据再进行相应的数据处理,导致服务器的处理速度降低。

【发明内容】

[0004]本发明实施例的目的在于提供一种数据发送、接收方法,旨在解决现有的数据传输方法导致服务器处理速度降低的问题。
[0005]本发明实施例是这样实现的,一种数据发送方法,包括:
[0006]客户端获取文件的前N个数据块的第一哈希Hash值,所述N为大于等于I的整数;
[0007]所述客户端将所述文件的第N个数据块和所述第一 Hash值发送给服务器,所述第一 Hash值被所述服务器用于校验所述第N个数据块是否接收正确。
[0008]本发明实施例的另一目的在于提供一种数据接收方法,包括:
[0009]服务器接收客户端发送的文件的第N个数据块和第一哈希Hash值,所述第一 Hash值由所述客户端根据所述文件的前N个数据块获取,所述N为大于等于I的整数;
[0010]所述服务器获取所述文件的前N个数据块的第三Hash值;
[0011]所述服务器判断所述第三Hash值与所述第一 Hash值是否相等;
[0012]如果所述第三Hash值与所述第一 Hash值相等,则所述服务器判断所述第N个数据块接收正确。
[0013]本发明实施例的另一目的在于提供一种客户端,包括:
[0014]第一获取单元,用于获取文件的前N个数据块的第一哈希Hash值,所述N为大于等于I的整数;
[0015]发送单元,用于将所述文件的第N个数据块和所述第一 Hash值发送给服务器,所述第一 Hash值被所述服务器用于校验所述第N个数据块是否接收正确。
[0016]本发明实施例的另一目的在于提供一种服务器,包括:
[0017]接收单元,用于接收客户端发送的文件的第N个数据块和第一哈希Hash值,所述第一 Hash值由所述客户端根据所述文件的前N个数据块获取,所述N为大于等于I的整数;
[0018]第二获取单元,用于获取所述文件的前N个数据块的第三Hash值;
[0019]判断单元,用于判断所述第三Hash值与所述第一 Hash值是否相等;如果所述第三Hash值与所述第一 Hash值相等,则判断所述第N个数据块接收正确。
[0020]在本发明实施例中,每当客户端向服务器发送一次数据,服务器即根据当前接收到的数据进行一次Hash值的获取,从而能够实现在数据发送过程中对数据进行实时校验,以加快服务器的处理速度,提高了数据传输效率。
【专利附图】

【附图说明】
[0021]图1是本发明实施例提供的数据发送方法的实现流程图;
[0022]图2是本发明实施例提供的数据发送方法步骤SlOl的具体实现流程图;
[0023]图3是本发明实施例提供的数据接收方法的实现流程图;
[0024]图4是本发明实施例提供的数据接收方法步骤S302的具体实现流程图;
[0025]图5是本发明实施例提供的数据传输装置的结构框图。
【具体实施方式】
[0026]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027]在本发明实施例中,每当客户端向服务器发送一次数据,服务器即根据当前接收到的数据进行一次Hash值的获取,从而能够实现在数据发送过程中对数据进行实时校验,以加快服务器的处理速度,提高了数据传输效率。
[0028]图1示出了本发明实施例提供的数据发送方法的实现流程,在本实施例中,流程的执行主体为分布式系统中的客户端,详述如下:
[0029]在步骤SlOl中,客户端获取文件的前N个数据块的第一 Hash值,其中,N为大于等于I的整数。
[0030]在本实施例中,当客户端需要向服务器发送文件时,首先打开需要发送的文件,将文件划分为若干个数据块进行发送。在具体的数据块发送过程中,针对同一文件的数据块,在发送过程中均会携带其所属文件的标识等相关信息,用于指示该数据块所属的文件。
[0031]客户端在向服务器发送文件的第N个数据块时,首先通过相应的Hash值计算算法,获取到该文件的前N个数据块的第一 Hash值。
[0032]作为本发明的一个优选实施例,客户端在获取前N个数据块的第一 Hash值时,可以不对文件的前N-1个数据块的Hash值进行重复计算。图2示出了本发明图1所述实施例步骤SlOl的具体实现流程,详述如下:
[0033]在步骤S201中,客户端获取该文件的前N-1个数据块的第二 Hash值。
[0034]在本实施例中,每当客户端发送完一个数据块,即会将该文件当前所发送完毕的数据块的Hash值进行存储,因此,在本步骤中,客户端可以直接从相应的存储模块提取出该文件的前N-1个数据块的第二 Hash值。
[0035]在步骤S202中,客户端根据第二 Hash值和第N个数据块,获取第一 Hash值。[0036]在本实施例中,可以采用累进Hash算法,在原有Hash值的基础上获取到新增数据之后的Hash值。具体地,可以通过函数FastCRC (old_hash, data, size)来实现Hash值的累加,其中,old_fash是原有数据的Hash值,即步骤S202中的前N_1个数据块的第二 Hash值,data是新增的数据,即步骤S202中的第N个数据块,size为新增的数据的大小,可以根据第N个数据块来获取得到,由此,通过FastCRC函数,客户端可以根据第二 Hash和第N个数据块,获取到该文件的前N个数据块的第一 Hash值。
[0037]由此,在本实施例中,客户端在发送数据块时,无需每次均计算之前发送过的数据块的Hash值,只需要将当前发送的数据块的Hash值与之前已发送的数据块的Hash值进行累加即可,大大提高了数据发送的效率。
[0038]在步骤S102中,客户端将文件的第N个数据块和第一 Hash值发送给服务器,该第一 Hash值被服务器用于校验第N个数据块是否接收正确。
[0039]在本实施例中,客户端将第N个数据块与该文件前N个数据块的第一 Hash值发送给服务器,该第一 Hash值被服务器用于对接收到的数据进行校验,具体的校验方法将在本发明后续实施例中进行详细说明。
[0040]在本实施例中,客户端在发送文件时,每发送一个数据块即进行一次Hash值的获取,由此在服务器,也可以相应地实现边接收数据边对接收到的数据进行处理,由此提高了服务器的处理速度。
[0041]图3示出了本发明实施例提供的数据接收方法的实现流程,在本实施例中,流程的执行主体为服务器,详述如下:
[0042]在步骤S301中,服务器接收客户端发送的文件的第N个数据块和第一 Hash值,该第一 Hash值由客户端根据文件的前N个数据块获取,所述N为大于等于I的整数。
[0043]在本实施例中,服务器接收客户端发送的文件的第N个数据块和第一 Hash值,其中,第一 Hash值的获取如本发明图1所述实施例步骤SlOl或者本发明图2所述实施例所述,在此不赘述。
[0044]在步骤S302中,服务器获取文件的前N个数据块的第三Hash值。
[0045]在本实施例中,服务器根据其接收到的文件的前N个数据块来获取到第三Hash值。
[0046]作为本发明的一个优先实施例,服务器在获取前N个数据块的第三Hash值时,可以不对文件的前N-1个数据块的Hash值进行重复计算。图4示出了本发明图3所述实施例步骤S302的具体实现流程,详述如下:
[0047]在步骤S401中,服务器获取接收到的前N-1个数据块的第四Hash值。
[0048]在本实施例中,每当服务器接收到一个数据块,即会将当前接收到的该文件的数据块的Hash值进行存储,因此,在本步骤中,服务器可以直接从相应的存储模块中提取出该文件的前N-1个数据块的第四Hash值。
[0049]在本实施例中,基于文件的前N-1个数据块均接收正确的前提下,第四Hash值应当与步骤S201中获取到的第二 Hash值相等。
[0050]在步骤S402中,服务器根据第四Hash值和第N个数据块,获取所述第三Hash值。
[0051]具体地,如图2实施例所述,在本实施例中,服务器也可以采用函数FastCRC来进行Hash值的累加计算。[0052]由此,在本实施例中,服务器在接收数据块时,无需每次均重复计算之前接收到的数据块的Hash值,只需要将当前接收到的数据块的Hash值与之前已接收到的的数据块的Hash值进行累加即可,大大提高了服务器数据处理的效率。
[0053]在步骤S303中,服务器判断第三Hash值与第一 Hash值是否相等。
[0054]在步骤S304中,如果第三Hash值与第一 Hash值相等,则服务器判断第N个数据块接收正确。
[0055]在本实施例中,服务器通过将自己计算出的第三Hash值与客户端发送的第一Hash值进行比较,判断这两个Hash值是否相等,是则表明此次第N个数据块接收正确,传输成功。由此,服务器能够一边接收数据一边验证数据接收正确与否,对于接收正确的数据,服务器即可以对该数据进行下一步处理。以分布式系统为例,由于当客户端向服务器写入的文件是以若干数据块的形式分布存储在不同的服务器实体上的,因此,当服务器接收到数据块时,需要在验证数据块的正确性之后,再记录该数据块的相关信息,并将该数据块转存至其他服务器实体上。之前的Hash算法只能允许服务器在接收完当前文件的所有数据之后再对这些数据进行校验,校验通过后才能进一步地对数据进行处理,使得服务器的网络I/O和磁盘I/O只能进行串行处理,降低了服务器的处理速度,而采用本发明实施例提供的数据接收方法,服务器可以每接收到一个数据块后就进行验证,验证通过后接收下一个数据块,同时服务器对验证通过的数据块进行相应处理,由此实现了服务器网络I/O和磁盘I/O的并行处理,大大提高了服务器的处理效率。
[0056]进一步地,以分布式文件系统为例,为了保证数据的安全性,通常服务器对接收到的文件会保存多个备份(例如3个备份),为了保证多个备份之间的数据一致性,服务器就需要校验每个备份的Hash值。当文件发生变化时,现有的数据校验方法需要对每个备份均进行Hash值的重新计算,以保证每个备份是一致的,而采用本发明实施例所述的上述方法,只需要获取到文件更新部分的Hash值,再与原始文件的Hash值进行累加,即可以验证不同备份文件之间的一致性,以实现更高效的文件校验。
[0057]图5示出了本发明实施例提供的数据传输装置的结构框图,该装置包括客户端和服务器,用于分别运行本发明图1和图2实施例所述的数据发送方法,以及本发明图3和图4实施例所述的数据接收方法。为了便于说明,仅示出了与本实施例相关的部分。
[0058]参照图5,在客户端,该装置包括:
[0059]第一获取单元51,获取文件的前N个数据块的第一 Hash值,其中,N为大于等于I的整数。
[0060]发送单元52,将文件的第N个数据块和第一 Hash值发送给服务器,该第一 Hash值被服务器用于校验第N个数据块是否接收正确。
[0061]可选地,第一获取单元51包括:
[0062]第一获取子单元,获取文件的前N-1个数据块的第二 Hash值。
[0063]第二获取子单元,根据第二 Hash值和第N个数据块,获取第一 Hash值。
[0064]可选地,还包括:
[0065]第一存储单元,存储第一 Hash值。
[0066]在服务器,该装置包括:
[0067]接收单元53,接收客户端发送的文件的第N个数据块和第一 Hash值,第一 Hash值由客户端根据文件的前N个数据块获取,其中,N为大于等于I的整数。
[0068]第二获取单元54,获取文件的前N个数据块的第三Hash值。
[0069]判断单元55,用于判断第三Hash值与第一 Hash值是否相等;如果第三Hash值与第一 Hash值相等,则判断第N个数据块接收正确。
[0070]可选地,第二获取单元54包括:
[0071]第三获取子单元,获取文件的前N-1个数据块的第四Hash值。
[0072]第四获取子单元,根据第四Hash值和第N个数据块,获取第三Hash值。
[0073]可选地,还包括:
[0074]第二存储单元,存储第三Hash值。
[0075]在本发明实施例中,每当客户端向服务器发送一次数据,服务器即根据当前接收到的数据进行一次Hash值的获取,从而能够实现在数据发送过程中对数据进行实时校验,以加快服务器的处理速度,提高了数据传输效率。
[0076]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据发送方法,其特征在于,包括: 客户端获取文件的前N个数据块的第一哈希Hash值,所述N为大于等于I的整数;所述客户端将所述文件的第N个数据块和所述第一 Hash值发送给服务器,所述第一Hash值被所述服务器用于校验所述第N个数据块是否接收正确。
2.如权利要求1所述的方法,其特征在于,所述客户端获取文件的前N个数据块的第一Hash值包括: 所述客户端获取所述文件的前N-1个数据块的第二 Hash值; 所述客户端根据所述第二 Hash值和所述第N个数据块,获取所述第一 Hash值。
3.如权利要求1或2所述的方法,其特征在于,还包括: 所述客户端存储所述第一 Hash值。
4.一种数据接收方法,其特征在于,包括: 服务器接收客户端发送的文件的第N个数据块和第一哈希Hash值,所述第一 Hash值由所述客户端根据所述文件的前N个数据块获取,所述N为大于等于I的整数; 所述服务器获取所述文件的前N个数据块的第三Hash值; 所述服务器判断所述第三Hash值与所述第一 Hash值是否相等; 如果所述第三Hash值与所述第一 Hash值相等,则所述服务器判断所述第N个数据块接收正确。
5.如权利要求4所述的方法,其特征在于,所述服务器获取所述文件的前N个数据块的第三Hash值包括: 所述服务器获取所述文件的前N-1个数据块的第四Hash值; 所述服务器根据所述第四Hash值和所述N个数据块,获取所述第三Hash值。
6.如权利要求4或5所述的方法,其特征在于,还包括: 所述服务器存储所述第三Hash值。
7.一种客户端,其特征在于,包括: 第一获取单元,用于获取文件的前N个数据块的第一哈希Hash值,所述N为大于等于I的整数; 发送单元,用于将所述文件的第N个数据块和所述第一 Hash值发送给服务器,所述第一 Hash值被所述服务器用于校验所述第N个数据块是否接收正确。
8.如权利要求7所述的客户端,其特征在于,所述第一获取单元包括: 第一获取子单元,用于获取所述文件的前N-1个数据块的第二 Hash值; 第二获取子单元,用于根据所述第二 Hash值和所述第N个数据块,获取所述第一 Hash值。
9.如权利要求7或8所述的客户端,其特征在于,还包括: 第一存储单元,用于存储所述第一 Hash值。
10.一种服务器,其特征在于,包括: 接收单元,用于接收客户端发送的文件的第N个数据块和第一哈希Hash值,所述第一Hash值由所述客户端根据所述文件的前N个数据块获取,所述N为大于等于I的整数;第二获取单元,用于获取所述文件的前N个数据块的第三Hash值; 判断单元,用于判断所述第三Hash值与所述第一 Hash值是否相等;如果所述第三Hash值与所述第一 Hash值相等,则判断所述第N个数据块接收正确。
11.如权利要求10所述的服务器,其特征在于,所述第二获取单元包括: 第三获取子单元,用于获取所述文件的前N-1个数据块的第四Hash值; 第四获取子单元,用于根据所述第四Hash值和所述第N个数据块,获取所述第三Hash值。
12.如权利要求10或11所述的服务器,其特征在于,还包括: 第二存储单元,用于存储所 述第三Hash值。
【文档编号】H04L29/08GK103701842SQ201210374721
【公开日】2014年4月2日 申请日期:2012年9月27日 优先权日:2012年9月27日
【发明者】赵大勇, 伍海君, 朱会灿, 邓大付, 王磊, 杨绍鹏, 张书鑫, 李锐, 刘畅, 邹永强, 张银锋, 陈晓东, 董乘宇, 阙太富 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1