CN111835871A - 传送数据文件的方法和装置、接收数据文件的方法和装置 - Google Patents
传送数据文件的方法和装置、接收数据文件的方法和装置 Download PDFInfo
- Publication number
- CN111835871A CN111835871A CN202010783526.7A CN202010783526A CN111835871A CN 111835871 A CN111835871 A CN 111835871A CN 202010783526 A CN202010783526 A CN 202010783526A CN 111835871 A CN111835871 A CN 111835871A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- check value
- value
- blocks
- 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
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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0847—Transmission error
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1809—Selective-repeat protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请描述了传送数据文件的方法和装置。所述方法包括:将数据文件分成多个数据块;对所述多个数据块按次序编号;根据所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定所述每个数据块的第二校验值,其中所述每个数据块的第一校验值为所述每个数据块的前一次序编号的数据块的第二校验值,并且第一次序编号的数据块的第一校验值为预设值;将所述每个数据块的编号以及所述每个数据块的第一校验值和第二校验值传送到接收方;将所述多个数据块以及多个数据块的编号传送到接收方,使得接收方能够根据所述多个数据块中的每个数据块的编号以及所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及传送数据文件的方法和装置、以及接收数据文件的方法和装置。
背景技术
在发送方和接收方之间传输数据文件时,接收方通常需要对数据文件进行校验,尤其是进行全文校验,以防止数据文件在传输过程中出现错误。随着计算机软硬件的发展,所需要传输的数据文件的大小是越来越大,因此对数据文件的校验显得更加重要。
目前,在传输文件时,通常使用如下三种方法进行文件校验。第一种方法是传输过程中不校验全文,待文件全部传输完毕再校验全文,然而这不能及时发现错误,一旦传输中出现错误,需要重传整个数据文件,代价太大。第二种方法是使用顺序且串行的传输方案,一边传输一边在接收方校验数据。然而串行传输文件速度过慢,对于大的数据文件来说传输效率太差。第三种方法是将数据文件分成多个数据块进行并发乱序传输,然而这导致接收方只能校验每个数据块却不能对文件全文进行校验,因为校验算法通常是按顺序迭代进行校验的。这虽然提高了传输效率,但是在某些场景下可能发生每个数据块都正确传输,但数据文件整体错误的情况,无法抵抗数据伪造攻击,不能严格保证文件传输的正确性。
发明内容
有鉴于此,本公开提供了传送数据文件的方法和装置、以及接收数据文件的方法和装置,期望克服上面提到的部分或全部缺陷以及其它可能的缺陷。
根据本公开的第一方面,提供了一种传送数据文件的方法,包括:将所述数据文件分成多个数据块;对所述多个数据块按次序编号;根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,其中所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;将所述每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值传送到接收方;将所述多个数据块以及多个数据块的编号传送到接收方,使得接收方能够根据所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。
根据本公开的第二方面,提供了一种接收数据文件的方法,包括:接收发送方传送的数据文件中的数据块以及所述数据块的编号,其中所述数据文件包括多个数据块,所述多个数据块中的每个数据块具有按次序的编号;根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值,其中所述校验表包括针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,并且其中针对所述每个数据块的第二校验值是由发送方根据针对所述每个数据块的第一校验值以及所述每个数据块的数据内容确定的,针对所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值;响应于第三校验值与所述数据块的第二校验值相同,则确定所述数据块被正确接收。
根据本公开的第三方面,提供了一种传送数据文件的装置,包括:文件划分模块,被配置成将所述数据文件分成多个数据块;数据块编号模块,被配置成对所述多个数据块按次序编号;校验值确定模块,被配置成根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,其中所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;第一传送模块,被配置成将所述每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值传送到接收方;第二传送模块,被配置成将所述多个数据块以及多个数据块的编号传送到接收方,使得接收方能够根据所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。
根据本公开的第四方面,提供了一种接收数据文件的装置,包括:接收模块,被配置成接收发送方传送的数据文件中的数据块以及所述数据块的编号,其中所述数据文件包括多个数据块,所述多个数据块中的每个数据块具有按次序的编号;查找模块,被配置成根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值,其中所述校验表包括针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,并且其中针对所述每个数据块的第二校验值是由发送方根据针对所述每个数据块的第一校验值以及所述每个数据块的数据内容确定的,针对所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;第一确定模块,被配置成根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值;第二确定模块,被配置成响应于第三校验值与所述数据块的第二校验值相同,则确定所述数据块被正确接收。
根据本公开的第五方面,提供了一种数据文件的传输系统,包括:文件传送装置,其包括根据本公开的第三方面所述的传送数据文件的装置。文件接收装置,其包括根据本公开的第四方面所述的接收数据文件的装置。
根据本公开的第六方面,提供了一种计算设备,包括处理器;以及存储器,配置为在其上存储有计算机可执行指令,当计算机可执行指令被处理器执行时执行如上面所述的任意方法。
根据本公开的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,当所述计算机可执行指令被执行时,执行如上面所述的任意方法。
在本公开要求保护的传送数据文件的方法和装置、以及接收数据文件的方法和装置中,通过将数据文件中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值在传送数据前预先传送到接收方,使得接收方能够根据接收的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验,这能够实现对数据文件中的数据块的并发乱序传输,极大提升了传输效率,同时还能支持接收方对数据文件进行准确校验,特别是支持接收方进行全文校验,并且便利于接收方进行文件排重,因此特别适合于较大的数据文件的传输。
根据下文描述的实施例,本公开的这些和其它优点将变得清楚,并且参考下文描述的实施例来阐明本公开的这些和其它优点。
附图说明
现在将更详细并且参考附图来描述本公开的实施例,其中:
图1示出了根据本公开的实施例的技术方案可以实施在其中的示例性应用场景;
图2示出了根据本公开的一个实施例的传送数据文件的方法的示意性流程图;
图3示出了根据本公开的一个实施例的使用校验算法来计算每个数据块的第二校验值的示意性流程图;
图4示出了根据本公开的一个实施例的接收数据文件的方法的示意性流程图;
图5示出了根据本公开的一个实施例的接收方使用校验算法来计算每个数据块的第三校验值的示意图;
图6示出了根据本公开的一个实施例的传送数据文件的装置的示例性结构框图;
图7示出了根据本公开的一个实施例的接收数据文件的装置的示例性结构框图;
图8示出了根据本公开的一个实施例的数据文件的传输系统的示例性结构框图;
图9图示了根据本公开的一个实施例的数据文件的传输系统的示例性交互流程图;
图10图示了一个示例系统,其包括代表可以实现本文描述的各种技术的一个或多个系统和/或设备的示例计算设备。
具体实施方式
下面的描述提供了本公开的各种实施例的特定细节,以便本领域的技术人员能够充分理解和实施本公开的各种实施例。应当理解,本公开的技术方案可以在没有这些细节中的一些细节的情况下被实施。在某些情况下,本公开并没有示出或详细描述一些熟知的结构或功能,以避免这些不必要的描述使对本公开的实施例的描述模糊不清。在本公开中使用的术语应当以其最宽泛的合理方式来理解,即使其是结合本公开的特定实施例被使用的。
首先,对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
哈希(Hash):哈希是将输入的任意长度的消息压缩到某一固定长度的消息摘要的算法。常用的哈希算法包括MD4(Message Digest 4,信息摘要算法4)、MD5(Message Digest5,信息摘要算法5)、SHA(Secure Hash Standard、安全哈希标准算法)等。
文件全文校验:通过校验算法对文件的全部内容进行计算得到校验值的过程,例如对文件的全部内容进行哈希运算以得到文件整体的消息摘要过程。
文件排重:为了减少相同文件存储多次的成本,文件存储系统对相同文件只存储一次。为了保证唯一性,通常使用文件全文哈希作为排重键值,具有相同的排重键值的文件被视为相同的文件,可以只存储一个。
图1图示了根据本公开的实施例的技术方案可以实施在其中的示例性应用场景100。如图1所示,所示应用场景包括终端101、服务器102,所述终端101通过网络103与服务器102通信地耦合在一起。终端101例如可以运行有文件传送应用,用于向服务器102传送数据文件。服务器102上可以运行有文件接收应用,用于实现对从终端101所传送的文件的接收。
作为示例,在终端101向服务器102传送数据文件时,终端101(具体地为终端101上的文件传送应用,本文中出于简化目的,两者可以替换地使用)可以将所述数据文件分成多个数据块并例如按所述多个数据块在数据文件的上下文中的前后次序对所述多个数据块进行按次序编号;然后根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,其中所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;接着,可以将多个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值这三者之间的映射关系传送到服务器102;最后,将所述多个数据块以及多个数据块的编号通过网络103传送到服务器102,使得服务器102能够根据所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。
相应地,服务器102(具体地为服务器102上的文件接收应用,本文中出于简化目的,两者可以替换地使用)可以接收数据文件中的数据块以及所述数据块的编号;根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值,所述校验表包括终端101发送的针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值;然后根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值;响应于第三校验值与所述数据块的第二校验值相同,则确定所述数据块被正确接收;响应于第三校验值与所述数据块的第二校验值不同,则发出重传请求以请求终端101重新发送所述数据块,所述重传请求包括所述数据块的编号。
终端101可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。所述网络103例如可以是广域网(WAN)、局域网(LAN)、无线网络、公用电话网、内联网以及本领域的技术人员熟知的任何其它类型的网络。
应当指出,上面描述的场景仅仅是本公开的实施例可以被实施在其中的一个示例,并不是限制性的。例如,上面以终端101向服务器102传送数据文件为例进行了说明,事实上本公开的技术方案同样适用于服务器102向终端101传送数据文件的场景中。再例如,本公开的技术方案并不限于在终端和服务器间传输数据文件的场景中,同样适应于在两个对等设备间传输数据文件的场景中。
图2图示了根据本公开的一个实施例的传送数据文件的方法200的示意性流程图。该方法一般应用于数据文件的发送方,诸如图1中的终端101。如图2所示,所述方法200包括如下步骤。
在步骤201,将所述数据文件分成多个数据块。所述数据文件包括但不限于流媒体数据文件、文本数据文件、实现一定功能的程序文件、压缩文件。
在一些实施例中,数据文件可以被分成具有相同大小的数据块。作为示例,3.4GB(Gigabyte,千兆字节)大小的数据文件可按照1GB大小的数据块进行划分,由于在划分时其中一个数据块仅包含0.4GB大小的数据,剩余的0.6GB大小的数据可以由其它数据(例如,零)补足以形成1GB大小的数据块,从而共形成四个1GB大小的数据块。在一些实施例中,数据文件也可以被分成具有不同大小的数据块,从而避免出现需要对数据块进行补足的情况。
在步骤202,对所述多个数据块按次序编号。也就是说,将编号作为数据块的相应索引。所述数据块对应的多个编号构成所述多个数据块的索引序列。按次序编号指的按从小到大或者从大到小的次序进行编号。
在一些实施例中,可以按所述多个数据块在数据文件的上下文中的前后次序对所述多个数据块进行按次序编号。以如前所述的3.4GB大小的数据文件为例,所分成的四个数据块可以分别编号为1、2、3、4。编号为1的数据块是数据文件的上下文中从数据文件的起始数据部分开始的1GB大小的数据块,编号为2的数据块是紧接在数据文件的上下文中处于编号为1的数据块之后且大小为1GB的数据块,其他数据块依次递推。这四个编号1、2、3、4、构成了所述四个数据块的索引序列,并且该索引序列中的编号与相应的数据块之间的一一对应。
在步骤203,根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值。所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值。由于第一次序编号(即,上面所述的编号1)的数据块之前没有数据块,即其没有前一次序编号的数据块,因此针对第一次序编号的数据块的第一校验值可以为预设值。所述预设值可以根据实际情况被设置为任何合适的值。作为示例,可以使用同一校验算法来根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值。作为示例,所述校验算法可以是可用于校验数据的任何合适的算法。
在一些实施例中,可以使用哈希算法来计算每个数据块的第二校验值,也即对所述第一校验值以及所述每个数据块的数据内容进行哈希运算以确定针对所述每个数据块的第二校验值。哈希算法是在计算机中使用编程语言实现哈希函数的算法,包括但不限于SHA-1算法、MD5算法。SHA-1算法是一种通用的文件全文校验算法,SHA-1通常会产生一个固定长度的数据摘要。当接收到数据的时候,这个数据摘要可以用来验证数据的完整性。在传送的过程中,数据很可能会发生变化,那么这时候就会产生不同的数据摘要,有助于发现数据块出错。
图3示出了根据本公开一个实施例的使用SHA-1算法来计算每个数据块的第二校验值的示意性流程图。下面以openssl软件库包中的SHA-1算法实现为例进行描述,SHA-1算法主要包括如下三个接口函数。应当指出,这里的SHA-1算法仅仅是一个示例,本公开对具体算法不做限定,例如MD4、MD4以及SHA256等算法同样可以应用于本公开的技术方案。
(1)int SHA1_Init(SHA_CTX *c):用于初始化一个 SHA_CTX 结构,该结构存放了用于生成 SHA1 散列值的一些参数,包括初始化预设值INIT,即在本公开的实施例中的针对第一次序编号的数据块的第一校验值。
(2)int SHA1_Update(SHA_CTX *c, const void *data, size_t len):用于迭代计算校验值。在本公开的实施例中,其用于根据针对每个数据块的第一校验值(初始的c)以及所述每个数据块的数据内容data计算针对每个数据块的第二校验值(更新后的c),参数len为数据块的大小,例如1GB。对所有数据块依序迭代调用该接口可以依次得到各数据块的校验值。调用该接口得到最后的第二校验值也是数据文件的全文校验值。在本公开的实施例中,该第二校验值可以被保存以供步骤204中使用。作为示例,3.4GB的数据文件被分成4个数据块,编号分别为1、2、3、4,则可以将编号为1、2、3数据块的第二校验值分别保存到变量sha_ctx1、sha_ctx2、sha_ctx3中,最后一个编号(即,4)的数据块的第二校验值将作为全文校验值被自动保存,如下面所述。
(3)int SHA1_Final(unsigned char *md, SHA_CTX *c):用于结束计算并得到最终结果。在本公开的实施例中,其用于将数据文件的全文校验值作为final值保存到参数md中,从而结束计算。
在步骤204,将所述每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值传送到接收方。换句话说,在本公开的实施例中,向接收方传送了包含数据块的编号、第一校验值和第二校验值这三者之间的对应关系的消息,接收方可以根据这三者之间的对应关系而对数据文件进行校验。也即,接收方在获得含有这三者之间的对应关系的消息后可以根据所述对应关系建立校验表,以实现对接收的数据文件的校验。该消息的内容很少,所占存储资源可以忽略不计,并且所占计算资源也很少,但是该消息可以使得接收方既可以对每个数据块进行单独校验也可以进行数据文件的全文校验,从而可以有效提高数据文件的传输的安全性。
在步骤205,将所述多个数据块以及多个数据块的编号传送到接收方,使得接收方能够根据所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。通过将数据块的编号和数据块两者传送给接收方,使得接收方既可以对每个数据块进行单独校验也可以进行数据文件的全文校验。此外,由于接收方知道每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,这使得可以向接收方并行、乱序地传送所述多个数据块,从而提升了传输效率且不会影响对数据文件的校验效果,适合于较大的数据文件的传输。在传输时,可以按照所述每个数据块及其编号的组合将所述多个数据块以及多个数据块的编号并行传送到接收方。应当指出,将所述多个数据块以及多个数据块的编号并行传送并不一定是将所有数据块和对应的编号同时发送,而是可以将一部分数据块以及与这一部分数据块对应的编号同时发送,只要采用并行的方式进行传送即可。
以图1中所示的场景为例,终端101可以发起多个传送线程来并行乱序地传送数据文件的多个数据块和对应的编号,其中一个数据块和其对应的编号在同一个线程上传输,并且每个线程可以用来传送所述多个数据块中的至少一个数据块及其对应的编号。例如,终端101(具体地为终端101上的文件传送应用)与服务器102建立了4个线程用于传送数据文件:线程1、线程2、线程3、线程4。然后,终端101将编号为1的数据块及其编号1通过线程1传送给服务器102,将编号为2的数据块及其编号2通过线程4传送给服务器102,将编号为3的数据块及其编号3通过线程2传送给服务器102,将编号为4的数据块及其编号4通过线程3传送给服务器102。在这种情况下,线程1-4可以并行运行,从而可以实现数据块编号为1-4的数据块的并行乱序传送。数据块的并行乱序传送可以极大地提高文件的传送效率,实现终端101与服务器102的高效通信。此外,线程1在将编号为1的数据块传送完毕后,可以继续传送编号为5的数据块(如果有的话)。
应当指出,按照所述每个数据块及其编号的组合进行传输指的是将所述每个数据块及其编号作为一个传输单元进行传输,也即是将它们作为一个整体一起进行传输。
在将所述多个数据块以及多个数据块的编号传送到接收方时,可能出现传输错误,导致接收方未能接收到正确的数据块。在这种情况下,可能从接收方接收到重传请求,该重传请求指示未被接收方正确接收的数据块的编号,然后根据该重传请求将具有所述编号的数据块重新传送到接收方。通过重传传输错误的数据块及其编号,可以纠正这种错误,保证数据文件的真实、完整和准确性,而且不必重新传送整个数据文件,从而提高了数据文件的传送效率。
在本公开的实施例的传送数据文件的方法中,将数据文件中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值传送到接收方,使得接收方能够根据接收的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验,这能够实现对数据文件中的数据块的并发乱序传输,极大提升了传输效率,同时还能保证接收方能够对数据文件进行准确校验,支持接收方进行全文校验并且便利于接收方进行文件排重,因此特别适合于较大的数据文件的传输。
图4示出了根据本公开的一个实施例的接收数据文件的方法400的示意性流程图。所述方法400一般应用于数据文件的接收方,诸如图1中的服务器102。所述方法包括步骤401-404。
在步骤401,接收发送方传送的数据文件中的数据块以及所述数据块的编号。所述数据文件包括多个数据块,所述多个数据块中的每个数据块具有按次序的编号。以如前所述的3.4GB大小的数据文件为例,所述数据文件可以包括四个数据块,编号可以分别为按次序的1、2、3、4。如参照图1描述的,终端101将所述多个数据块以及多个数据块的编号传送到服务器102,服务器102可以接收数据文件中的数据块以及所述数据块的编号。作为一个示例,服务器102可以并行接收数据文件中的所述多个数据块以及所述多个数据块的编号,并对所述多个数据块中的每个数据块进行验证。通过使能实现对数据文件的并行接收,能够极大提高文件接收的效率。作为示例,服务器102可以在多个线程上并行接收该数据文件的各个数据块以及其编号。
在一些实施例中,在接收数据文件中的数据块以及其编号之前,可以例如从发送方接收针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,以便于实现对所接收的数据块的校验。
在步骤402,根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值。所述校验表包括针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,并且针对所述每个数据块的第二校验值是由发送方根据针对所述每个数据块的第一校验值以及所述每个数据块的数据内容确定的,针对所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值。由发送方确定第二校验值能保证第二校验值是基于正确的数据分块被确定的,从而也保证了校验的准确性。
作为一个示例,上述校验表是从发送方接收的或者根据发送方发送的信息确定的。例如,图1中的终端101将编号为1、2、3、4的数据块以及参照图3计算的针对所述每个数据块的第一校验值(分别为INIT、sha_ctx1、sha_ctx2、sha_ctx3)和第二校验值(sha_ctx1、sha_ctx2、sha_ctx3、final)传送到服务器102。服务器102接收到上述信息,并可以根据该信息建立如下校验表:
数据块的编号 | 1 | 2 | 3 | 4 |
第一校验值 | INIT | sha_ctx1 | sha_ctx2 | sha_ctx3 |
第二校验值 | sha_ctx1 | sha_ctx2 | sha_ctx3 | final |
表1。
如表1所示,如果接收到的数据块的编号为1,则可以确定针对所述数据块的第一校验值为INIT,第二校验值为sha_ctx1,第二校验值sha_ctx1是发送方根据针对所述数据块的第一校验值INIT以及所述数据块的正确数据内容被确定的,第一校验值INIT为预设的任何合适的值。如果数据块的编号为2,则可以确定针对所述数据块的第一校验值为sha_ctx1,第二校验值为sha_ctx2,第二校验值sha_ctx2是发送方根据针对所述数据块的第一校验值sha_ctx1以及所述数据块的正确数据内容被确定的,第一校验值sha_ctx1为编号为1的数据块的第二校验值。
在步骤403,根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值。接收方接收各个数据块后,需要对各个数据块进行校验,以确定所接收的数据块是真实、完整、无篡改的。作为示例,可以使用与发送方根据数据块的第一校验值以及所述数据块的数据内容确定第二校验值时相同校验算法来确定所述第三校验值。作为示例,所述校验算法本质上可以是可用于校验数据的任何合适的算法。
在一些实施例中,可以使用哈希算法来计算每个数据块的第三校验值,也即对所述第一校验值以及所述数据块的数据内容进行哈希运算以确定针对所述数据块的第三校验值。哈希算法包括但不限于SHA-1算法、MD5算法。
图5图示了根据本公开的一个实施例的确定第三校验值的示例性流程图。图5中以参照图3描述的SHA-1算法为例来说明确定第三校验值的流程,其原理与图3所示的确定第二校验值的原理基本一致。
如图5所示,接收方通过线程1接收到编号为1的数据块,然后根据编号1,通过查找校验表可以确定编号为1的数据块对应的第一校验值为INIT,第二校验值为sha_ctx1;然后根据第一校验值和接收到的数据块的内容利用SHA-1算法确定第三校验值。具体地,可以首先调用SHA1_Init(&sha_ctx_update)初始化一个 SHA_CTX结构,然后调用SHA1_Update(&sha_ctx_update, data, data_len)确定编号为1的数据块的第三校验值,即根据针对数据块的第一校验值INIT(sha_ctx_update的初始值)以及所述数据块的数据内容data计算针对所述数据块的第三校验值sha_ctx_update1(更新后的sha_ctx_update),参数data_len为数据块的大小。再例如,接收方通过线程4接收到编号为2的数据块,然后根据编号2,查找校验表可以确定编号为2的数据块对应的第一校验值为sha_ctx1,第二校验值为sha_ctx2;然后根据第一校验值和数据块的内容利用SHA-1算法确定第三校验值。具体地,可以首先调用memcpy(&sha_ctx_update, &sha_ctx1, sizeof(SHA_CTX) )将sha_ctx_update的值初始化为第一校验值,然后调用SHA1_Update(&sha_ctx_update, data, data_len)确定编号为2的数据块的第三校验值sha_ctx_update2。其它数据块的第三校验值sha_ctx_update3和sha_ctx_update4的计算过程与此类似,不再赘述。
在步骤404,响应于第三校验值与所述数据块的第二校验值相同,则确定所述数据块被正确接收。由于确定所述第三校验值时使用了与确定第二校验值时相同校验算法,所以该数据块的第三校验值与该数据块的第二校验值相同意味着传送前的数据块内容与传送后的数据块的内容一致,从而可以确定该数据块满足真实、完整、无篡改的特点,从而可以确定该数据块被正确接收。可选地,响应于第三校验值与所述数据块的第二校验值不同,则发出重传请求以请求发送方重新传送所述数据块,所述重传请求包括所述数据块的编号。该数据块的第三校验值与该数据块的第二校验值不同意味着传送前的数据块内容与传送后的数据块的内容不一致,从而可以确定该数据块未被正确接收,需要发送方重传该数据块。不一致的原因可以是传送过程中,数据块内容被篡改、丢失,或者数据块的内容与其编号不对应等等。如果所有数据块被正确接收,则可以确定所述数据文件被正确接收,说明数据文件的全文都是正确的。
在本公开的实施例的接收数据文件的方法中,可以根据接收到的数据块的编号以及针对所述数据块的第一校验值确定所述数据块的第三校验值,并且通过将第三校验值和发送方发送数据块的正确的第二校验值进行对比,从而确定数据块是否被正确接收。通过这样的流程,能够支持对数据文件中的数据块进行并发乱序传输,极大提升了传输效率,同时还使得接收方能够对数据文件进行准确校验,支持接收方进行全文校验,因此特别适合于较大的数据文件的传输,而且还使接收方便于进行文件排重,从而节省存储空间。
图6示出了根据本公开的一个实施例的传送数据文件的装置600的示例性结构框图。如图6所示,所述装置600包括文件划分模块601,数据块编号模块602,校验值确定模块603,第一传送模块604和第二传送模块605。
文件划分模块601被配置成将所述数据文件分成多个数据块。在一些实施例中,可以将所述数据文件分成具有预设大小的多个数据块,所述预设大小的多个数据块例如可以是固定大小的多个数据块。
数据块编号模块602被配置成对所述多个数据块按次序编号。在一些实施例中,可以按所述多个数据块在数据文件的上下文中的前后次序对所述多个数据块进行按次序编号。
校验值确定模块603被配置成根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,其中所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值。在一些实施例中,校验模块603可以被配置成对所述第一校验值以及所述每个数据块的数据内容进行哈希运算以确定针对所述每个数据块的第二校验值。
第一传送模块604被配置成将所述每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值传送到接收方。在一些实施例中,第一传送模块604可以被配置成按照所述每个数据块及其编号的组合将所述多个数据块以及多个数据块的编号并行传送到接收方。
第二传送模块605被配置成被配置成将所述多个数据块以及多个数据块的编号传送到接收方,使得接收方能够根据所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。在一些实施例中,第二传送模块还可以被配置成:接收重传请求,所述重传请求指示未被接收方正确接收的数据块的编号;将具有所述编号的数据块重新传送到接收方。
图7示出了根据本公开的一个实施例的接收数据文件的装置700的示例性结构框图。如图7所示,所述装置700包括接收模块701,查找模块702,第一确定模块703,第二确定模块704。
接收模块701被配置成接收发送方传送的数据文件中的数据块以及所述数据块的编号,其中所述数据文件包括多个数据块,所述多个数据块中的每个数据块具有按次序的编号。在一些实施例中,接收模块701可以被配置成在接收数据文件中的数据块以及其编号之前,接收针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值。
查找模块702被配置成根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值,其中所述校验表包括针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,并且其中针对所述每个数据块的第二校验值是由发送方根据针对所述每个数据块的第一校验值以及所述每个数据块的数据内容确定的,针对所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值。
第一确定模块703被配置成根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值。在一些实施例中,第一确定模块703可以被配置成对所述第一校验值以及所述数据块的数据内容进行哈希运算以确定针对所述数据块的第三校验值。
第二确定模块704被配置成响应于第三校验值与所述数据块的第二校验值相同,则确定所述数据块被正确接收。第二确定模块704还可以被配置成响应于第三校验值与所述数据块的第二校验值不同,则发出重传请求以请求发送方重新传送所述数据块,所述重传请求包括所述数据块的编号。
图8图示了根据本公开的一个实施例的数据文件的传输系统800的示例性结构框图。如图8所示,所述传输系统800可以包括文件传送装置801,以及文件接收装置802。所述文件传送装置801可以是上面参照图6所描述的传送数据文件的装置600。所述文件接收装置802可以是上面参照图7所描述的接收数据文件的装置700。
图9图示了根据本公开的一个实施例的数据文件的传输系统的示例性交互流程图。所述传输系统可以是图8所述的传输系统800,其包括作为文件的发送方的文件传送装置,以及作为文件的接收方的文件接收装置。
如图9所示,文件传送装置在向文件接收装置传送数据文件时,首先在步骤901将所述数据文件分成多个数据块并对所述多个数据块按次序编号,然后在步骤902根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,其中所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值。接着,在步骤903中文件传送装置将所述每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值作为中间结果传送到文件接收装置。在步骤904中,文件接收装置接收并保存所述中间结果。
在步骤905中,文件传送装置将所述多个数据块以及多个数据块的编号并行传送到文件接收装置。文件接收装置在步骤906中对应地接收文件传送装置传送的多个数据块以及所述多个数据块的编号。在步骤907中,针对每个接收到的数据块,文件接收装置根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值,其中所述校验表包括文件传送装置传送的针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值;并且根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值。在步骤908,文件接收装置判断第三校验值与所述数据块的第二校验值是否相同。如果第三校验值与第二校验值不同,说明所述数据块未被正确接收,文件接收装置则在步骤909向文件传送装置发出重传请求以请求文件传送装置重新传送所述未被正确接收的数据块,所述重传请求包括所述数据块的编号。文件传送装置在步骤910中接收到所述重传请求后,在步骤911中重传所述未被正确接收的数据块。相应地,文件接收装置在步骤912接收所述重新传送的数据块,然后返回步骤907重新确定针对所述数据块的第三校验值。如果第三校验值与第二校验值相同,则确定所述数据块被正确接收。如果所述多个数据块都被正确接收,则说明整个数据文件都被正确接收,流程在步骤913结束。
图10图示了示例系统1000,其包括代表可以实现本文描述的各种技术的一个或多个系统和/或设备的示例计算设备1010。计算设备1010可以是例如服务提供商的服务器、与服务器相关联的设备、片上系统、和/或任何其它合适的计算设备或计算系统。上面参照图6描述的传送数据文件的装置600和参照图7描述的接收数据文件的装置700都可以采取计算设备1010的形式。替换地,传送数据文件的装置600和接收数据文件的装置700都可以以文件同步应用1016的形式被实现为计算机程序。
如图示的示例计算设备1010包括彼此通信耦合的处理系统1011、一个或多个计算机可读介质1012以及一个或多个I / O接口1013。尽管未示出,但是计算设备1010还可以包括系统总线或其他数据和命令传送系统,其将各种组件彼此耦合。系统总线可以包括不同总线结构的任何一个或组合,所述总线结构诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。还构思了各种其他示例,诸如控制和数据线。
处理系统1011代表使用硬件执行一个或多个操作的功能。因此,处理系统1011被图示为包括可被配置为处理器、功能块等的硬件元件1014。这可以包括在硬件中实现为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件1014不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质1012被图示为包括存储器/存储装置1015。存储器/存储装置1015表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置1015可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置1015可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1012可以以下面进一步描述的各种其他方式进行配置。
一个或多个I/O接口1013代表允许用户使用各种输入设备向计算设备1010输入命令和信息并且可选地还允许使用各种输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备1010可以以下面进一步描述的各种方式进行配置以支持用户交互。
计算设备1010还包括文件同步应用1016。文件同步应用1016可以例如是传送数据文件的装置600或接收数据文件的装置700的软件实例,并且与计算设备1010中的其他元件相组合地实现本文描述的技术。
本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”,“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备1010访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备1010的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。术语“调制数据信号”是指这样的信号,该信号的特征中的一个或多个被设置或改变,从而将信息编码到该信号中。作为示例而非限制,通信介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
如前所述,硬件元件1014和计算机可读介质1012代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1014体现的一个或多个指令和/或逻辑。计算设备1010可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件1014,可以至少部分地以硬件来实现将模块实现为可由计算设备1010作为软件执行的模块。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备1010和/或处理系统1011)可执行/可操作以实现本文所述的技术、模块和示例。
在各种实施方式中,计算设备1010可以采用各种不同的配置。例如,计算设备1010可以被实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机类设备。计算设备1010还可以被实现为包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备的移动装置类设备。计算设备1010还可以实现为电视类设备,其包括具有或连接到休闲观看环境中的一般地较大屏幕的设备。这些设备包括电视、机顶盒、游戏机等。
本文描述的技术可以由计算设备1010的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。功能还可以通过使用分布式系统、诸如通过如下所述的平台1022而在“云”1020上全部或部分地实现。
云1020包括和/或代表用于资源1024的平台1022。平台1022抽象云1020的硬件(例如,服务器)和软件资源的底层功能。资源1024可以包括在远离计算设备1010的服务器上执行计算机处理时可以使用的应用和/或数据。资源1024还可以包括通过因特网和/或通过诸如蜂窝或Wi-Fi网络的订户网络提供的服务。
平台1022可以抽象资源和功能以将计算设备1010与其他计算设备连接。平台1022还可以用于抽象资源的分级以提供遇到的对于经由平台1022实现的资源1024的需求的相应水平的分级。因此,在互连设备实施例中,本文描述的功能的实现可以分布在整个系统1000内。例如,功能可以部分地在计算设备1010上以及通过抽象云1020的功能的平台1022来实现。
应当理解,为清楚起见,参考不同的功能单元对本公开的实施例进行了描述。然而,将明显的是,在不偏离本公开的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其它功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本公开可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
将理解的是,尽管第一、第二、第三等术语在本文中可以用来描述各种设备、元件、部件或部分,但是这些设备、元件、部件或部分不应当由这些术语限制。这些术语仅用来将一个设备、元件、部件或部分与另一个设备、元件、部件或部分相区分。
尽管已经结合一些实施例描述了本公开,但是其不旨在被限于在本文中所阐述的特定形式。相反,本公开的范围仅由所附权利要求来限制。附加地,尽管单独的特征可以被包括在不同的权利要求中,但是这些可以可能地被有利地组合,并且包括在不同权利要求中不暗示特征的组合不是可行的和/或有利的。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词“包括”不排除其它元件,并且术语“一”或“一个”不排除多个。权利要求中的附图标记仅作为明确的例子被提供,不应该被解释为以任何方式限制权利要求的范围。
Claims (15)
1.一种传送数据文件的方法,包括:
将所述数据文件分成多个数据块;
对所述多个数据块按次序编号;
根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,其中针对所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;
将所述每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值传送到接收方;
将所述多个数据块以及多个数据块的编号传送到接收方,使得接收方能够根据所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。
2.根据权利要求1所述的方法,其中所述将所述数据文件分成多个数据块,包括:
将所述数据文件分成具有固定大小的多个数据块。
3.根据权利要求1所述的方法,其中所述对所述多个数据块按次序编号包括:
根据所述多个数据块在数据文件的上下文中的前后次序对所述多个数据块按次序编号。
4.根据权利要求1所述的方法,其中根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,包括:
对所述第一校验值以及所述每个数据块的数据内容进行哈希运算以确定针对所述每个数据块的第二校验值。
5.根据权利要求1所述的方法,其中所述将所述多个数据块以及多个数据块的编号传送到接收方,包括:
按照所述每个数据块及其编号的组合将所述多个数据块以及多个数据块的编号并行传送到接收方。
6.根据权利要求1所述的方法,其中所述将所述多个数据块以及多个数据块的编号传送到接收方,包括:
接收重传请求,所述重传请求指示未被接收方正确接收的数据块的编号;
将具有所述编号的数据块重新传送到接收方。
7.一种接收数据文件的方法,包括:
接收发送方传送的数据文件中的数据块以及所述数据块的编号,其中所述数据文件包括多个数据块,所述多个数据块中的每个数据块具有按次序的编号;
根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值,其中所述校验表包括针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,并且其中针对所述每个数据块的第二校验值是由发送方根据针对所述每个数据块的第一校验值以及所述每个数据块的数据内容确定的,针对所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;
根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值;
响应于第三校验值与所述数据块的第二校验值相同,则确定所述数据块被正确接收。
8.根据权利要求7所述的方法,还包括:
响应于第三校验值与所述数据块的第二校验值不同,则发出重传请求以请求发送方重新传送所述数据块,所述重传请求包括所述数据块的编号。
9.根据权利要求7所述的方法,还包括:
在接收发送方传送的数据文件中的数据块以及所述数据块的编号之前,接收针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值。
10.根据权利要求7所述的方法,其中所述根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值,包括:
对所述第一校验值以及所述数据块的数据内容进行哈希运算以确定针对所述数据块的第三校验值。
11.一种传送数据文件的装置,包括:
文件划分模块,被配置成将所述数据文件分成多个数据块;
数据块编号模块,被配置成对所述多个数据块按次序编号;
校验值确定模块,被配置成根据针对所述多个数据块中的每个数据块的第一校验值以及所述每个数据块的数据内容确定针对所述每个数据块的第二校验值,其中所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;
第一传送模块,被配置成将所述每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值传送到接收方;
第二传送模块,被配置成将所述多个数据块以及多个数据块的编号传送到接收方,使得接收方能够根据所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值对所述数据文件进行校验。
12.一种接收数据文件的装置,包括:
接收模块,被配置成接收发送方传送的数据文件中的数据块以及所述数据块的编号,其中所述数据文件包括多个数据块,所述多个数据块中的每个数据块具有按次序的编号;
查找模块,被配置成根据所述数据块的编号从校验表中查找针对所述数据块的第一校验值和第二校验值,其中所述校验表包括针对所述多个数据块中的每个数据块的编号以及针对所述每个数据块的第一校验值和第二校验值,并且其中针对所述每个数据块的第二校验值是由发送方根据针对所述每个数据块的第一校验值以及所述每个数据块的数据内容确定的,针对所述每个数据块的第一校验值为针对所述每个数据块的前一次序编号的数据块的第二校验值,并且针对第一次序编号的数据块的第一校验值为预设值;
第一确定模块,被配置成根据针对所述数据块的第一校验值以及所述数据块的数据内容确定针对所述数据块的第三校验值;
第二确定模块,被配置成响应于第三校验值与所述数据块的第二校验值相同,则确定所述数据块被正确接收。
13.一种数据文件的传输系统,包括:
文件传送装置,其包括根据权利要求11所述的传送数据文件的装置;
文件接收装置,其包括根据权利要求12所述的接收数据文件的装置。
14.一种计算设备,包括
存储器,其被配置成存储计算机可执行指令;
处理器,其被配置成当所述计算机可执行指令被处理器执行时执行如权利要求1-10中的任一项所述的方法。
15.一种计算机可读存储介质,其存储有计算机可执行指令,当所述计算机可执行指令被执行时,执行如权利要求1-10中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010783526.7A CN111835871A (zh) | 2020-08-06 | 2020-08-06 | 传送数据文件的方法和装置、接收数据文件的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010783526.7A CN111835871A (zh) | 2020-08-06 | 2020-08-06 | 传送数据文件的方法和装置、接收数据文件的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111835871A true CN111835871A (zh) | 2020-10-27 |
Family
ID=72919491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010783526.7A Pending CN111835871A (zh) | 2020-08-06 | 2020-08-06 | 传送数据文件的方法和装置、接收数据文件的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111835871A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532740A (zh) * | 2020-12-11 | 2021-03-19 | 平安科技(深圳)有限公司 | 文件上传方法和装置、文件校验方法和装置 |
CN113542520A (zh) * | 2021-07-19 | 2021-10-22 | 珠海艾派克微电子有限公司 | 数据传输方法、读写设备和耗材芯片 |
-
2020
- 2020-08-06 CN CN202010783526.7A patent/CN111835871A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532740A (zh) * | 2020-12-11 | 2021-03-19 | 平安科技(深圳)有限公司 | 文件上传方法和装置、文件校验方法和装置 |
CN113542520A (zh) * | 2021-07-19 | 2021-10-22 | 珠海艾派克微电子有限公司 | 数据传输方法、读写设备和耗材芯片 |
CN113542520B (zh) * | 2021-07-19 | 2024-06-25 | 极海微电子股份有限公司 | 数据传输方法、读写设备和耗材芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109831487B (zh) | 分片文件验证方法及终端设备 | |
CN107579848B (zh) | 实用拜占庭容错共识机制中动态更改共识节点的方法 | |
US10496489B1 (en) | Storage system configured for controlled transition between asynchronous and synchronous replication modes | |
US20210209373A1 (en) | Media authentication using distributed ledger | |
CN111344706B (zh) | 管理区块链上的交易的方法和系统 | |
CN111163182B (zh) | 基于区块链的设备注册方法、装置、电子设备和存储介质 | |
US9436722B1 (en) | Parallel checksumming of data chunks of a shared data object using a log-structured file system | |
US11120434B2 (en) | System and method for securing transaction in a blockchain network | |
CN108733311B (zh) | 用于管理存储系统的方法和设备 | |
US8601358B2 (en) | Buffer transfer check on variable length data | |
CN113938269B (zh) | 一种文件分片上传校验方法和系统 | |
CN110389859B (zh) | 用于复制数据块的方法、设备和计算机程序产品 | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
KR20210055631A (ko) | 에러 정정 코드에 기초한 공유 블록체인 데이터 저장의 데이터 보안 | |
US10664349B2 (en) | Method and device for file storage | |
CN109254998B (zh) | 数据管理方法、物联网设备、数据库服务器及系统 | |
CN111835871A (zh) | 传送数据文件的方法和装置、接收数据文件的方法和装置 | |
CN114127724A (zh) | 针对多副本存储的完整性审计 | |
CN114092252A (zh) | 一种区块链交易执行方法、装置、设备及可读存储介质 | |
US20140279946A1 (en) | System and Method for Automatic Integrity Checks in a Key/Value Store | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
CN111338834B (zh) | 数据存储方法和装置 | |
US9767139B1 (en) | End-to-end data integrity in parallel storage systems | |
CN116192395A (zh) | 用于分散式数据存储的可信系统 | |
CN114756624A (zh) | 全量节点的数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40030102 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |