CN116389455A - 一种文件传输方法、系统及电子设备 - Google Patents
一种文件传输方法、系统及电子设备 Download PDFInfo
- Publication number
- CN116389455A CN116389455A CN202310217706.2A CN202310217706A CN116389455A CN 116389455 A CN116389455 A CN 116389455A CN 202310217706 A CN202310217706 A CN 202310217706A CN 116389455 A CN116389455 A CN 116389455A
- Authority
- CN
- China
- Prior art keywords
- file
- fragment
- hash
- fragments
- receiving end
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 113
- 238000000034 method Methods 0.000 title claims abstract description 100
- 239000012634 fragment Substances 0.000 claims abstract description 454
- 238000004364 calculation method Methods 0.000 claims abstract description 119
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 27
- 238000012546 transfer Methods 0.000 claims description 21
- 238000012795 verification Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 abstract description 23
- 238000013467 fragmentation Methods 0.000 abstract description 3
- 238000006062 fragmentation reaction Methods 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/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
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种文件传输方法、系统及电子设备,属于云存储技术领域,本申请实施例的文件传输方法包括:对待传输的文件进行分片处理得到N个分片,依次对各个分片进行hash计算以得到对应的hash中间结果,直到得到文件对应的hash值;若计算得到任一分片的hash中间结果,则通过分配给该任一分片的下一分片的链路将该任一分片的hash中间结果和该任一分片的下一分片发送给接收端;以使接收端根据接收到的该任一分片的hash中间结果对该任一分片的下一分片进行hash计算,以得到该任一分片的下一分片的hash中间结果,直到计算得到文件对应的hash值,从而可以大大缩短文件传输的时间,提升文件传输的效率。
Description
技术领域
本申请属于云存储技术领域,具体涉及一种文件传输方法、系统及电子设备。
背景技术
在用户通过云存储的客户端与服务端进行文件传输时,为了对文件的文件内容在两端的一致性进行校验,通常需要在客户端和服务端分别对文件进行哈希(hash)计算,再比较得到的hash值是否相同以确定文件内容是否一致。
由于对文件进行hash计算往往需要对文件的内容进行分块后从头到尾进行迭代计算,因此,客户端和服务端都采取了边传输边计算的方式。为此,对于一个文件只能使用单链路进行文件传输,从而严重限制了文件传输的速度。
发明内容
有鉴于此,本申请提供一种文件传输方法、系统及电子设备,用于解决只能使用单链路进行文件传输,从而严重限制了文件传输的速度的问题。
具体地,本申请是通过如下技术方案实现的:
第一方面,提供了一种文件传输方法,应用于文件传输的发送端,所述方法包括:
对待传输的文件进行分片处理得到N个分片;其中,所述发送端与所述文件传输的接收端之间包括用于分别传输所述N个分片的多条链路;
针对所述N个分片中的第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果,并将所述第一个分片通过从所述多条链路中为所述第一个分片分配的链路传输至所述接收端;其中,所述第一个分片为所述N个分片中的首个分片;
继续将所述第一hash中间结果作为输入数据,针对第二个分片进行hash计算,得到与所述第二个分片对应的第二hash中间结果,并将所述第二个分片和所述第一hash中间结果通过从所述多条链路中为所述第二个分片分配的链路传输至所述接收端,以此类推,直到将第N个分片和与第N-1个分片对应的第N-1hash中间结果通过从所述多条链路中为所述第N个分片分配的链路传输至所述接收端,并继续将所述第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值。
可选的,所述方法还包括:
在通过所述多条链路向所述接收端传输所述N个分片的过程中,预先向所述接收端发送计算得到的所述文件的hash值,以使所述接收端基于接收到的所述文件的hash值确定所述接收端是否已存储了与所述待传输的文件相同的文件;
响应于接收到的所述接收端在确定已存储了与所述待传输的文件相同的文件后返回的提示信息,停止通过所述多条链路向所述接收端继续传输所述N个分片。
可选的,所述方法还包括:
在将所述文件的所有分片都传输至所述接收端后,向所述接收端发送传输完成指示信息,以提示所述接收端对接收到的所述文件进行文件内容校验。
可选的,所述多条链路的数量与所述N个分片的数量相同;其中,从所述多条链路中为所述N个分片中的各个分片分配的链路互不相同。
可选的,所述发送端为云存储客户端,所述接收端为云存储服务端。
第二方面,提供了一种文件传输方法,应用于文件传输的接收端,其中,所述文件传输的发送端与所述接收端之间包括用于分别传输针对待传输的文件进行分片得到的N个分片的多条链路,所述方法包括:
通过从所述多条链路中为所述N个分片中的第一分片分配的链路接收所述发送端传输的所述第一个分片,并针对所述第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果;其中,所述第一个分片为所述N个分片中的首个分片;
通过从所述多条链路中为所述N个分片中的第二个分片分配的链路接收所述发送端传输的所述第二个分片和由所述发送端针对所述第一个分片进行hash计算得到的与所述第一个分片对应的第一hash中间结果,并继续将接收到的第一hash中间结果作为输入数据,针对所述第二个分片进行hash计算,得到所述第二个分片对应的第二hash中间结果,以此类推,直到通过从所述多条链路中为所述N个分片中的第N个分片分配的链路接收所述发送端传输的所述第N个分片和由所述发送端针对第N-1个分片进行hash计算得到的与所述第N-1个分片对应的第N-1hash中间结果,并继续将接收到的第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值;
根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验。
可选的,所述继续将接收到的任一分片对应的hash中间结果作为输入数据,针对所述任一分片的下一分片进行hash计算,包括:
确定计算得到所述任一分片对应的hash结果与接收到的所述任一分片对应的hash结果是否相同;如果是,继续将接收到的任一分片对应的hash中间结果作为输入数据,针对所述任一分片的下一分片进行hash计算。
可选的,所述根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验,包括:
依次确定计算得到的所述N个分片分别对应的hash中间结果与接收到所述N个分片分别对应的hash中间结果是否相同;如果计算出的任一分片对应的hash中间结果与接收到的所述任一分片对应的hash中间结果不同,则丢弃所述任一分片。
可选的,在根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验之前,所述方法还包括:
从所述发送端接收传输完成指示信息。
可选的,所述方法还包括:
在通过所述多条链路从所述发送端接收所述N个分片的过程中,预先从所述发送端接收所述发送端计算得到的针对所述文件的hash值;
根据接收到的hash值,查询是否已存储了与所述待传输的文件相同的文件;若存在,则向所述发送端发送提示信息,以提示所述发送端停止通过所述多条链路向所述接收端继续传输所述N个分片。
可选的,所述发送端为云存储客户端,所述接收端为云存储服务端。
第三方面,提供了一种文件传输系统,包括:
文件传输的发送端和接收端;
其中,所述发送端用于实现第一方面所述的方法;所述接收端用于实现第二方面所述的方法。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面或第二方面所述方法的步骤。
第五方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面或第二方面所述方法的步骤。
本申请实施例通过发送端对文件进行分片处理,然后采用边传输边计算的方式,依次对各个分片进行hash计算以得到各个分片对应的hash中间结果,直到得到文件对应的hash值;若计算得到任一分片的hash中间结果,则通过多条链路中分配给该任一分片的下一分片的链路将该任一分片的hash中间结果和该任一分片的下一分片发送给文件传输的接收端;以使接收端也可以采用边传输边计算的方式,在接收到该任一分片的hash中间结果和该任一分片的下一分片后,根据接收到的该任一分片的hash中间结果对该任一分片的下一分片进行hash计算,以得到该任一分片的下一分片的hash中间结果,直到计算得到文件对应的hash值,以基于两端计算得到的与各个分片对应的hash中间结果和与文件对应的hash值对文件的内容进行校验,由于计算过程相对应于传输过程时间很短,因此,通过多条链路传输多个分片可以认为是近似于并行传输的方式传输文件,从而可以大大缩短文件传输的时间,提升文件传输的效率。
附图说明
图1是本申请一示例性实施例示出的一种文件传输方法的流程示意图;
图2是本申请一示例性实施例示出的另一种文件传输方法的流程示意图;
图3是本申请一示例性实施例未出的一种文件传输方法的信令流程示意图;
图4是本申请一示例性实施例示出的另一种文件传输方法的流程示意图;
图5是本申请一示例性实施例示出的一种文件传输装置的结构示意图;
图6是本申请一示例性实施例示出的另一种文件传输装置的结构示意图;
图7是本申请一示例性实施例示出的一种文件传输系统的结构示意图;
图8是本申请一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在用户使用云存储进行文件存储时,用户可以通过客户端向服务端上传文件,或从服务端下载文件。为了保证文件的文件内容在传输前后的一致性,通常需要在客户端和服务端分别对文件进行hash计算,得到与文件对应的hash值,然后,通过比较两端计算得到的hash值是否相同,以校验文件的文件内容在传输前后是否一致。
对文件进行hash计算采用的hash算法,也可以称为散列算法,hash算法可以包括消息摘要(Message Digest,MD)系列算法和安全散列算法(Secure Hash Algorithm,SHA)系列算法,例如MD5、SHA1、SHA2等等。通常,hash算法都需要先对文件进行分块,再从头到尾对每个分块进行迭代计算,计算得到的上一块的hash中间结果将作为对下一块进行hash计算的输入数据。例如,以SHA2族算法中SHA256算法为例,需要先以512位(bit)为单位对文件进行分块,得到多个分块,然后依次对每个分块进行逐个处理,从将预设的初始hash值作为输入数据来对第一个分块进行hash计算开始,进行迭代计算,最终产生一个256位的hash值,作为与文件对应的hash值,也可以称为文件的消息摘要。又例如,以MD5算法为例,以512位为单位对文件进行分组,且每一分组又被划分为16个32位子分组,依次对每个分组进行迭代计算,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位hash值,作为与文件对应的hash值。
基于hash计算的上述特点,相关技术在采用边传输边计算的方式将文件从客户端发送给接收端时,只能采用单链路的方式传输文件,以使接收端可以在通过单链路接收文件的过程中,依次对接收到的文件的分片进行hash计算。若采用多链路并行的方式传输文件,则接收端只能先接收文件的所有分片,再对所有的分片进行重组,然后对重组后的文件进行hash计算,不符合边传输边计算的传输方式。
有鉴于此,本说明书提出了一种文件传输方法。在文件传输的发送端和接收端之间建立用于分别传输对待传输文件进行分片处理后得到的N个分片的多条链路。发送端在对文件进行分片处理后,对得到的N个分片依次进行hash计算,得到与各个分片对应的hash中间结果,然后通过多条链路分别将各个分片和上一分片对应的hash中间结果发送给接收端。接收端在接收到各个分片和上一分片对应的hash中间结果后,可以直接基于接收到的上一分片对应的hash中间结果来计算各个分片对应的hash中间结果,并最终计算得到文件对应的hash值。然后,根据两端计算得到的各个分片对应的hash中间结果和文件对应hash值对文件的文件内容进行校验。
在实现时,对于文件传输的发送端,发送端先对待传输的文件进行分片处理得到N个分片。依次对每个分片进行hash计算,以得到每个分片对应的hash中间结果;在依次对每个分片进行hash计算的过程中,若得到其中任一分片的hash中间结果,则通过多条链路中分配给该任一分片的下一分片的链路将该任一分片的hash中间结果和该任一分片的下一分片发送给文件传输的接收端,直到计算得到文件对应的hash值并将所有分片均通过分配的链路传输给接收端。
对于文件传输的接收端,接收端通过用于传输N个分片的多个链路接收待传输文件的N个分片。在通过分配给任一分片的下一分片的链路接收到与任一分片对应的hash中间结果和与任一分片的下一分片后,根据该任一分片对应的hash中间结果对所述任一分片的下一分片进行hash计算,得到该任一分片的下一分片对应的hash中间结果,直到计算得到每个分片对应的hash中间结果和文件对应的hash值。通过分别将两端计算得到的各个分片对应的hash中间结果和文件对应的hash值进行比较,以对文件的文件内容进行校验。
在以上技术方案中,通过发送端对文件进行分片处理,然后采用边传输边计算的方式,依次对各个分片进行hash计算以得到各个分片对应的hash中间结果,直到得到文件对应的hash值;若计算得到任一分片的hash中间结果,则通过多条链路中分配给该任一分片的下一分片的链路将该任一分片的hash中间结果和该任一分片的下一分片发送给文件传输的接收端;以使接收端也可以采用边传输边计算的方式,在接收到该任一分片的hash中间结果和该任一分片的下一分片后,根据接收到的该任一分片的hash中间结果对该任一分片的下一分片进行hash计算,以得到该任一分片的下一分片的hash中间结果,直到计算得到文件对应的hash值,以基于两端计算得到的与各个分片对应的hash中间结果和与文件对应的hash值对文件的内容进行校验,由于计算过程相对应于传输过程时间很短,因此,通过多条链路传输多个分片可以认为是近似于并行传输的方式传输文件,从而可以大大缩短文件传输的时间,提升文件传输的效率。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
请参见图1,图1为本申请实施例提供的文件传输方法。该方法可以应用于文件传输的发送端。
其中,文件传输的发送端可以为云存储的客户端,相应的,文件传输的接收端可以为云存储的服务端,发送端发送给接收端的待传输文件可以为用户通过客户端向服务端上传的文件;文件传输的发送端也可以为云存储的服务端,相应的,文件传输的接收端也可以为云存储的客户端,发送端发送给接收端的待传输文件可以为用户通过客户端从服务端下载的文件;所述文件传输的发送端和接收端还可以为两个不同的客户端或者为两个不同的服务端。为了简便起见,在下面的实施例中均以发送端为云存储的客户端,接收端为云存储的服务端为例进行举例说明。
所述发送端与接收端之间可以包括用于分别传输对所述待传输的文件进行分片处理后得到的N个分片的多条链路。
所述文件传输方法可以包括以下步骤。
S110、对待传输的文件进行分片处理得到N个分片;其中,所述发送端与所述文件传输的接收端之间包括用于分别传输所述N个分片的多条链路。
在发送端需要向接收端发送待传输的文件时,发送端可以先对待传输的文件进行分片处理,以得到N个分片,所述N为大于或等于2的正整数。
其中,发送端对待传输的文件进行分片处理得到N个分片的方式可以多种多样,例如,可以基于以下至少一项对所述待传输的文件进行分片处理:发送端与接收端之间可分配用于传输所述待传输文件的多条链路的链路数量;每条链路的带宽;对文件和分片进行hash计算时所采用hash算法;对文件的传输速度的需求;等等。
发送端在对待传输的文件进行分片处理时,可以先预设需要得到的分片数量N,再对所述待传输的文件进行分片处理。例如,可以根据发送端与接收端之间可分配用于传输所述待传输的文件的多条链路的链路数量,设定需要得到的分片数量N为可分配的链路数量的整数倍。
发送端在对待传输的文件进行分片处理时,也可以先预设每个分片的大小,再根据预设的每个分片的大小对所述待传输的文件进行分片处理,依次从所述待传输的文件中截取与预设的每个分片的大小相同的分片,最终得到N个分片。例如,可以先基于对文件和分片进行hash计算时所采用hash算法来确定每个分片的大小,以如上所述的SHA256算法为例,由于在进行基于SHA256算法的hash计算时需要先以512位对文件进行分块,若该文件的数据量不是512位的整数倍,则需要先对该文件进行补零操作,因此,为了方便后续对各个分片进行hash计算,可以将每个分片的大小设定为512位的整数倍;甚至可以直接将512位确定为每个分片的大小,此时,对所述文件进行分片处理可以相当于在对文件进行hash计算时,以512位为单位对文件进行分块。
S120、针对所述N个分片中的第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果,并将所述第一个分片通过从所述多条链路中为所述第一个分片分配的链路传输至所述接收端;其中,所述第一个分片为所述多个分片中的首个分片。
S130、继续将所述第一hash中间结果作为输入数据,针对第二个分片进行hash计算,得到与所述第二个分片对应的第二hash中间结果,并将所述第二个分片和所述第一hash中间结果通过从所述多条链路中为所述第二个分片分配的链路传输至所述接收端,以此类推,直到将第N个分片和与第N-1个分片对应的第N-1hash中间结果通过从所述多条链路中为所述第N个分片分配的链路传输至所述接收端,并继续将所述第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值。
发送端在对所述待传输的文件进行分片处理后,可以采用边传输边计算的方式通过多条链路向接收端发送所述文件的N个分片。所述发送端可以一边依次对所述文件的N个分片中每个分片进行hash计算,以得到每个分片对应hash中间结果,直到在对所述N个分片的最后一个分片,即第N个分片进行hash计算后得到与所述文件对应的hash值;同时,所述发送端还可以一边依次将所述文件的N个分片中的各个分片通过分配给各个分片的链路发送给接收端。其中,所述发送端依次将所述文件的N个分片中的各个分片通过分配给各个分片的链路发送给接收端,包括:对于除所述N个分片中的第一个分片外的任一分片,需要将所述任一分片与所述任一分片的上一分片的hash中间结果一起打包后通过分配给该任一分片的链路发送给接收端。
首先,针对所述N个分片中的首个分片,即第一个分片,发送端可以一边将所述第一分片通过所述多条链路中分配给所述第一个分片的链路向所述接收端传输包括所述第一个分片的数据包,同时,发送端可以一边对所述第一个分片进行hash计算,以得到所述第一个分片对应的第一hash中间结果;
相应的,接收端在通过所述多条链路中分配给所述第一个分片的链路接收到包括所述第一个分片的数据包后,可以对所述第一个分片进行hash计算,以得到所述第一个分片对应的第一hash中间结果;
然后,针对所述N个分片中的第二个分片,发送端在计算得到所述第一个分片对应的第一hash中间结果后,可以一边将所述第二个分片和与所述第一个分片对应的第一hash中间结果打包,通过所述多条链路中分配给所述第二个分片的链路向所述接收端传输包括所述第二个分片和与所述第一个分片对应的第一hash中间结果的数据包,同时,发送端还可以一边将与所述第一个分片对应的第一hash中间结果作为输入数据,对所述第二个分片进行hash计算,以得到所述第二个分片对应的第二hash中间结果;
相应的,接收端在通过所述多条链路中分配给所述第二个分片的链路从发送端接收到包括所述第二个分片和与所述第一个分片对应的第一hash中间结果的数据包后,可以将数据包中的与所述第一个分片对应的第一hash中间结果作为输入数据,对所述第二个分片进行hash计算,以得到所述第二个分片对应的第二hash中间结果;
然后,针对所述N个分片中的第三个分片,发送端在计算得到所述第二个分片对应的第二hash中间结果后,可以一边将所述第三个分片和与所述第二个分片对应的第二hash中间结果打包,通过所述多条链路中分配给所述第二个分片的链路向所述接收端传输包括所述第三个分片和与所述第二个分片对应的第二hash中间结果的数据包,同时,发送端还可以一边将与所述第二个分片对应的第二hash中间结果作为输入数据,对所述第三个分片进行hash计算,以得到所述第三个分片对应的第三hash中间结果;
相应的,接收端在通过所述多条链路中分配给所述第三个分片的链路从发送端接收到包括所述第三个分片和与所述第二个分片对应的第二hash中间结果的数据包后,可以将数据包中的与所述第二个分片对应的第二hash中间结果作为输入数据,对所述第三个分片进行hash计算,以得到所述第三个分片对应的第三hash中间结果;
……,以此类推,直到,针对所述N个分片中的第N个分片,发送端在计算得到所述第N-1个分片对应的第N-1hash中间结果后,可以一边将所述第N个分片和与所述第N-1个分片对应的第N-1hash中间结果打包,通过所述多条链路中分配给所述第N个分片的链路向所述接收端传输包括所述第N个分片和与所述第N-1个分片对应的第N-1hash中间结果的数据包,同时,发送端还可以一边将与所述第N-1个分片对应的第N-1hash中间结果作为输入数据,对所述第N个分片进行hash计算,以得到与所述待传输的文件对应的hash值;
相应的,接收端在通过所述多条链路中分配给所述第N个分片的链路从发送端接收到包括所述第N个分片和与所述第N-1个分片对应的第N-1hash中间结果的数据包后,可以将与所述第N-1个分片对应的第N-1hash中间结果作为输入数据,对所述第N个分片进行hash计算,以得到与所述待传输的文件对应的hash值。
需要说明的是,在发送端通过所述多条链路中分配给任一分片的链路向所述接收端传输所述任一分片时,所述多条链路中分配给任一分片的链路可以是基于预先设定的所述N个分片与多条链路之间的对应关系确定的,其中,每条链路可以对应于一个分片或多个分片;所述多条链路中分配给任一分片的链路也可以是在向所述接收端发送所述任一分片时,基于当前空闲的链路确定的;若当前不存在空闲链路,则可以将包括所述任一分片和与所述任一分片的上一分片的数据包保存到对应的缓存队列中以等待出现空闲的链路后再传输给接收端。可知,若用于传输所述N个分片的多条链路越多,则可以使文件的传输效率更高。例如,所述多条链路的数量与所述N个分片的数量相同;其中,从所述多条链路中为所述N个分片中的各个分片分配的链路互不相同。
在实际应用中,由于可分配的链路相对有限,若分片的数量较多,则无法为每个分片分别分配一个互不相同的链路。另外,由于对各个分片进行hash计算的时长远远短于传输任一分片的时长,因此,在链路数量少于分片数量的情况下,上述实施例中发送端在计算得到任一分片对应的hash中间结果后,通过为所述任一分片的下一分片分配的链路将所述任一分片对应的hash中间结果和所述任一分片的下一分片发送给所述接收端,包括:若为所述任一分片的下一分片分配的链路为空闲状态,则通过为所述任一分片的下一分片分配的链路将所述任一分片对应的hash中间结果和所述任一分片的下一分片发送给所述接收端;若为所述任一分片的下一分片分配的链路不为空闲状态,则可以将所述任一分片对应的hash中间结果和所述任一分片的下一分片保存到对应的缓存队列中,以等待链路空闲后,将所述任一分片对应的hash中间结果和所述任一分片的下一分片发送到接收端。
需要说明的是,图1中步骤S110与S120-S130之间并不一定存在先后顺序,可以在执行完步骤S110之后,再执行步骤S120-S130,也可以同时进行。
请参见图2,发送端在获取到待传输的文件后,可以对所述待传输的文件进行分片处理,所述分片处理的方式可以是基于预设的每个分片的大小,从所述文件中依次获取各个分片。在获取第一个分片后,一边通过链路1将所述第一个分片传输给接收端,一边对所述第一个分片进行hash计算,以得到所述第一个分片对应的第一hash中间结果;在获取到第二个分片后,一边通过链路2将所述第二个分片和第一hash中间结果发送给接收端,一边对所述第二个分片进行hash计算,以得到所述第二个分片对应的第二hash中间结果;在获取到第三个分片后,一边通过链路3将所述第三个分片和第二hash中间结果发送给接收端,一边对所述第三个分片进行hash计算,以得到所述第三个分片对应的第三hash中间结果;……以此类推,直到获取第N个分片,一边通过链路N将所述第N个分片和第N-1hash中间结果发送给接收端,一边对所述第N个分片进行hash计算,以得到所述第N个分片对应的第Nhash中间结果;然后发送端根据所述第N hash中间结果得到所述文件对应的hash值,例如,将所述第N hash中间结果作为所述文件对应的hash值。
需要说明的是,图2中链路N是指分配给第N个分片的链路,若用于分别传输所述N个分片的多条链路的链路数量为3,则所述链路N可以为所述链路1、2、3中的任一分配给所述第N个分片的链路。
在发送端通过所述多条链路将所述N个分片都传输到接收端后,可基于发送端和接收端分别计算得到的与各个分片对应的hash中间结果,以及与文件对应的hash值,来对所述文件进行文件内容校验。对所述文件进行文件内容校验的执行主体可以是发送端也可以是接收端。
若由接收端对所述文件进行文件内容校验,则接收端还需要预先获取发送端计算得到的与文件对应的hash值,由接收端将自身计算得到的与各个分片对应的hash中间结果和与文件对应hash值,分别与从发送端接收到的与各个分片对应的hash中间结果和与文件对应的hash值进行比较;若均相同,则文件内容校验结果为文件内容一致;若任一项不同,则文件内容校验结果为文件内容不一致。
若由发送端对所述文件进行文件内容校验,则发送端需要预先获取接收端计算得到的与各个分片对应的hash中间结果和文件对应hash值,由发送端将自身计算得到的与各个分片对应的hash中间结果和与文件对应hash值,分别与从接收端接收到的与各个分片对应的hash中间结果和与文件对应的hash值进行比较;若均相同,则文件内容校验结果为文件内容一致,本次传输完成;若任一项不同,则文件内容校验结果为文件内容不一致。
为了简便起见,在下面的实施例中均以接收端对所述文件进行文件内容校验为例进行举例说明。
在相关技术中,由于仅通过与文件对应的hash值对文件进行文件内容校验,因此,若两端计算得到的与文件对应的hash值不同,则文件内容校验结果为整个文件的文件内容不一致,接收端可能需要丢弃整个文件,并对整个文件进行重传操作,造成了大量资源浪费。
而在本申请实施例中,在基于发送端和接收端分别计算得到的与各个分片对应的hash中间结果,以及与文件对应的hash值,对所述文件进行文件内容校验时,若其中任一项的比较结果不相同,则可以根据不同的项对不一致的文件内容出现的位置进行定位,即可以确定存在文件内容不一致的分片。接收端仅需要丢弃存在文件内容不一致的分片,并提示发送端重传该分片即可。
所述接收端可以依次确定计算得到的所述N个分片分别对应的hash中间结果与接收到的所述N个分片分别对应的hash中间结果是否相同;如果计算出的任一分片对应的hash中间结果与接收到的所述任一分片对应的hash中间结果不同,则丢弃所述任一分片。例如,若计算得到的与第j个分片对应的第j hash中间结果与接收到与所述j个分片对应的第j hash中间结果不相同,则可以确定第j个分片的文件内容不一致,可以丢弃所述第j个分片;又例如,若两端计算得到的与文件对应的hash值不相同,则可以确定第N个分片的文件内容不一致,可以丢弃所述第N个分片。可见,通过比较两端分别计算得到的与各个分片对应的hash中间结果,以及与文件对应的hash值,可以确定存在文件内容不一致的分片,从而可以通过仅对存在文件内容不一致的分片进行重传,大大减少重传的数据量,节约了传输资源。
可选的,在对所述文件进行文件内容校验之前,发送端在将所述文件的所有分片都传输至所述接收端后,可以向所述接收端发送传输完成指示信息,以提示所述接收端可以对接收到的所述文件进行文件内容校验。所述接收端在接收到所述传输完成指示信息后,还可以将接收到的N个分片进行重组,得到完整的文件;或者,可以先通过如上所述的方式对接收到的所述文件进行文件内容校验,若文件内容校验结果为所有分片的文件内容一致,再将接收到的所述N个分片进行重组,以得到完整的文件。
需要说明的是,为了在客户端和服务端之间实现通过多链路传输所述N个分片,服务端可以提供能够支持多链路同时传输的接口,在客户端与服务端之间传输所述N个分片之前,可以通过预先的信息交互设置进行多链路传输的相关配置参数;例如,可以包括可分配的链路的数量、上传地址、各个数据包的包头参数、重传策略等等。
由上述实施例的技术方案可知,本申请实施例通过发送端对文件进行分片处理,然后采用边传输边计算的方式,依次对各个分片进行hash计算以得到各个分片对应的hash中间结果,直到得到文件对应的hash值;若计算得到任一分片的hash中间结果,则通过多条链路中分配给该任一分片的下一分片的链路将该任一分片的hash中间结果和该任一分片的下一分片发送给文件传输的接收端;以使接收端也可以采用边传输边计算的方式,在接收到该任一分片的hash中间结果和该任一分片的下一分片后,根据接收到的该任一分片的hash中间结果对该任一分片的下一分片进行hash计算,以得到该任一分片的下一分片的hash中间结果,直到计算得到文件对应的hash值,以基于两端计算得到的与各个分片对应的hash中间结果和与文件对应的hash值对文件的内容进行校验,由于计算过程相对应于传输过程时间很短,因此,通过多条链路传输多个分片可以认为是近似于并行传输的方式传输文件,从而可以大大缩短文件传输的时间,提升文件传输的效率。
基于上述实施例,为了能够更快得完成文件传输,所述发送端在计算得到文件对应的hash值之后,在通过所述多条链路向所述接收端传输所述N个分片的过程中,预先向所述接收端发送计算得到的所述文件的hash值,以使所述接收端基于接收到的所述文件的hash值确定所述接收端是否已存储了与所述待传输的文件相同的文件;若存在,则接收端可以向所述发送端发送相应的提示信息,以提示所述发送端停止通过所述多条链路向所述接收端继续传输所述N个分片。
发送端响应于接收到的所述接收端在确定已存储了与所述待传输的文件相同的文件后返回的提示信息,停止通过所述多条链路向所述接收端继续传输所述N个分片。
上述通过向所述接收端发送计算得到的与文件对应的hash值以使接收端确定是否已存储了与所述待传输的文件相同的文件,也可被称为秒传(RapidUpload)模式,主要应用于客户端向服务端上传文件。服务端在确定已存储了与所述待传输的文件相同的文件时,可以通过修改存储地址、建立链接等方式,将该相同的文件保存到用户名下,相当于完成了文件传输。
需要说明的是,预先向所述接收端发送计算得到的所述文件的hash值,以使所述接收端基于接收到的所述文件的hash值确定所述接收端是否已存储了与所述待传输的文件相同的文件,还可以包括:向所述接收端发送对文件的部分内容进行hash计算后得到的hash值,以使接收端根据与所述文件的部分内容对应的hash值来确定是否已存储与所述待传输的文件相同的文件;若存在,则可以更快得完成文件传输,更早得提示发送端停止继续传输所述N个分片;例如,接收端可以根据与第i个分片对应的hash中间结果来确定是否已存储与所述待传输的文件相同的文件。
本申请实施例,通过预先向所述接收端发送计算得到的与文件对应的hash值以使接收端确定是否已存储了与所述待传输的文件相同的文件,从而可以减少了文件传输过程,节省了网络资源。
请参见图3,图3示出了本申请实施例提供的一种文件传输方法的信令流程图。以客户端向服务端上传文件为例进行举例说明。所述服务端可以包括网盘与相册服务(Driveand Photo Service,PDS)节点和对象存储服务(Object Storage Service,OSS)节点。
A1.客户端在获取到需要上传给服务端的待传输的文件时,执行如图1所述的步骤S110,对所述待传输的文件进行分片处理,得到N个分片;
A2.1-A2.5.客户端与服务端协商本次通过多链路传输所述N个分片的相关传输参数;所述相关传输参数可以包括:可分配的链路的数量、所述待传输文件的文件名称、上传地址、各个数据包配置信息,例如包头的配置信息,等等;
A3.1-A3.2.客户端基于所述相关传输参数,执行如图1所述的步骤S120-S130,通过边传输边计算的方式,依次计算与各个分片对应的hash中间结果,直到计算得到与所述文件对应的hash值,同时,通过多条链路依次向所述服务端传输所述N个分片和与所述N个分处对应的hash中间结果;
A4.1-A4.4和A5.1-A5.3.为客户端通过多条链路向所述服务端传输所述N个分片的过程中可能出现的意外情况。其中,A4.1-A4.4为客户端通过从服务端获取已上传的分片,用于确定需要从哪个分片开始向所述服务端传输所述N个分片中的剩余分片;A5.1-5.3可以为在传输过程中出现传输中断或上传地址有效期超时的情况下,客户端需要重新从服务端获取上传地址;
A6.1-A6.4.客户端在将所述文件的所有分片都传输至所述接收端后,向所述接收端发送传输完成指示信息,以提示所述接收端对接收到的所述文件进行文件内容校验。
请参见图4,图4示出了本申请实施例提供的一种文件传输方法。该方法可以应用于文件传输的接收端。所述文件传输的发送端与所述接收端之间包括用于分别传输针对待传输的文件进行分片得到的N个分片的多条链路。
所述文件传输方法包括以下步骤。
S410、通过从所述多条链路中为所述N个分片中的第一分片分配的链路接收所述发送端传输的所述第一个分片,并针对所述第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果;其中,所述第一个分片为所述多个分片中的首个分片;
S420、通过从所述多条链路中为所述N个分片中的第二个分片分配的链路接收所述发送端传输的所述第二个分片和由所述发送端针对所述第一个分片进行hash计算得到的与所述第一个分片对应的第一hash中间结果,并继续将接收到的第一hash中间结果作为输入数据,针对所述第二个分片进行hash计算,得到所述第二个分片对应的第二hash中间结果,以此类推,直到通过从所述多条链路中为所述N个分片中的第N个分片分配的链路接收所述发送端传输的所述第N个分片和由所述发送端针对第N-1个分片进行hash计算得到的与所述第N-1个分片对应的第N-1hash中间结果,并继续将接收到的第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值;
S430、根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验。
需要说明的是,步骤S410-S430为与图1中步骤S110-S130相对应的接收端侧的方法实施例,可以实现步骤S110-S130中发送端和接收端侧的具体方法实施方式,重复部分此处不再赘述。
接收端在通过分配给所述N个分片中的任一分片的链路接收到包括所述任一分片的数据包后,可对所述任一分片进行hash计算,以得到与该任一分片对应的hash中间结果和与所述文件对应的hash值。
其中,针对所述N个分片中的第一个分片,接收端在通过所述多条链路中分配给所述第一个分片的链路接收到包括所述第一个分片的数据包后,可以对所述第一个分片进行hash计算,以得到所述第一个分片对应的第一hash中间结果;
然后,针对所述N个分片中的第二个分片,接收端在通过所述多条链路中分配给所述第二个分片的链路从发送端接收到包括所述第二个分片和与所述第一个分片对应的第一hash中间结果的数据包后,可以将数据包中的与所述第一个分片对应的第一hash中间结果作为输入数据,对所述第二个分片进行hash计算,以得到所述第二个分片对应的第二hash中间结果;
然后,针对所述N个分片中的第三个分片,接收端在通过所述多条链路中分配给所述第三个分片的链路从发送端接收到包括所述第三个分片和与所述第二个分片对应的第二hash中间结果的数据包后,可以将数据包中的与所述第二个分片对应的第二hash中间结果作为输入数据,对所述第三个分片进行hash计算,以得到所述第三个分片对应的第三hash中间结果;
……,以此类推,直到,针对所述N个分片中的第N个分片,接收端在通过所述多条链路中分配给所述第N个分片的链路从发送端接收到包括所述第N个分片和与所述第N-1个分片对应的第N-1hash中间结果的数据包后,可以将与所述第N-1个分片对应的第N-1hash中间结果作为输入数据,对所述第N个分片进行hash计算,以得到与所述待传输的文件对应的hash值;
最后,接收端可基于计算得到的与各个分片对应的hash中间结果,以及与文件对应的hash值,来对所述文件进行文件内容校验。
需要说明的是,在接收端通过多条链路从发送端分别接收所述N个分片的过程中,由于各条链路的实际传输情况存在差异,因此,接收端接收到数据包的接收顺序与发送端发送的数据包的发送顺序可能并不一致。相应的,所述接收端在计算得到各个分片对应hash中间结果和所述文件的hash值的过程中,可以按照所述N个分片的分片顺序进行计算,也可以根据接收到的数据包的顺序进行计算。
在一种示出的实施方式中,若按照所述N个分片的分片顺序进行计算,则在接收到包括所述任一分片对应的hash中间结果和所述任一分片的下一分片的数据包后,可以先确定接收端计算得到所述任一分片对应的hash结果与接收到的所述任一分片对应的hash结果是否相同;如果是,则继续将接收到的任一分片对应的hash中间结果作为输入数据,针对所述任一分片的下一分片进行hash计算。
在一种示出的实施方式中,由于接收端在接收到数据包后,都可以直接根据接收到的数据包,对数据包中包括的任一分片进行hash计算,而不需要依赖于接收端对其它分片的hash计算结果,因此,接收端可以根据接收到数据包的顺序来计算各个分片对应的hash中间结果和文件对应的hash值。
接收端在从发送端接收到所有分片后,可以基于计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值对所述文件进行文件内容校验。接收端可以依次确定计算得到的所述N个分片分别对应的hash中间结果与接收到所述N个分片分别对应的hash中间结果是否相同,以及确定计算得到的与所述文件对应的hash值与接收到的与所述文件对应的hash值是否相同;如果计算出的任一分片对应的hash中间结果与接收到的所述任一分片对应的hash中间结果不同,则丢弃所述任一分片;如果计算得到的与所述文件对应的hash值与接收到的与所述文件对应的hash值不同,则丢弃所述第N个分片;在丢弃任一分片或者丢弃所述N个分片后可以对该任一分片进行重传操作;若均相同,则文件内容校验结果为文件内容一致,本次传输完成。
为了能够尽快得确定存在文件内容不一致的分片,所述接收端还可以在与发送端边传输边计算的过程中,比较两端计算得到的各个分片对应的hash中间结果。所述接收端在接收到包括任一分片的下一分片和与任一分片对应的hash中间结果的数据包后,若接收端已经计算得到与所述任一分片对应的hash中间结果,则可以比较计算得到的与所述任一分片对应hash中间结果和接收到的与所述任一分片对应hash中间结果是否相同;若相同,则确定所述任一分片的文件内容一致;若不相同,则确定所述任一分片的文件内容不一致,所述接收端可以丢弃该任一分片,并且可以对丢弃的该任一分片进行重传。
接收端也可以在确定所述任一分片的文件内容一致后,再继续将接收到的与任一分片对应的hash中间结果作为输入数据,针对所述任一分片的下一分片进行hash计算。
可选的,在对所述文件进行文件内容校验之前,所述方法还包括:
从所述发送端接收传输完成指示信息。
由上述实施例的技术方案中,本申请实施例通过发送端与所述接收端之间建立用于分别传输针对待传输的文件进行分片得到的N个分片的多条链路,接收端可以采用边传输边计算的方式,在接收到该任一分片的hash中间结果和该任一分片的下一分片后,根据接收到的该任一分片的hash中间结果对该任一分片的下一分片进行hash计算,以得到该任一分片的下一分片的hash中间结果,直到计算得到文件对应的hash值,然后再基于两端计算得到的与各个分片对应的hash中间结果和与文件对应的hash值对文件的内容进行校验,由于计算过程相对应于传输过程时间很短,因此,通过多条链路传输多个分片可以认为是近似于并行传输的方式传输文件,从而可以大大缩短文件传输的时间,提升文件传输的效率。
基于上述实施例,可选的,所述方法还包括:
在通过所述多条链路从所述发送端接收所述N个分片的过程中,预先从所述发送端接收所述发送端计算得到的针对所述文件的hash值;
根据接收到的hash值,查询是否已存储了与所述待传输的文件相同的文件;若存在,则向所述发送端发送提示信息,以提示所述发送端停止通过所述多条链路向所述接收端继续传输所述N个分片。
本申请实施例,通过预先从所述发送端获取与文件对应的hash值以使接收端确定是否已存储了与所述待传输的文件相同的文件,从而可以减少了文件传输过程,节省了网络资源。
与前述应用于文件传输的发送端的文件传输方法的实施例相对应,本申请还提供了文件传输装置的实施例。
如图5所示,所述文件传输装置包括:分片处理模块501和发送模块502。
所述分片处理模块501用于对待传输的文件进行分片处理得到N个分片;其中,与所述文件传输的接收端之间包括用于分别传输所述N个分片的多条链路;所述发送模块502用于针对所述N个分片中的第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果,并将所述第一个分片通过从所述多条链路中为所述第一个分片分配的链路传输至所述接收端;其中,所述第一个分片为所述N个分片中的首个分片;继续将所述第一hash中间结果作为输入数据,针对第二个分片进行hash计算,得到与所述第二个分片对应的第二hash中间结果,并将所述第二个分片和所述第一hash中间结果通过从所述多条链路中为所述第二个分片分配的链路传输至所述接收端,以此类推,直到将第N个分片和与第N-1个分片对应的第N-1hash中间结果通过从所述多条链路中为所述第N个分片分配的链路传输至所述接收端,并继续将所述第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值。
可选的,所述发送模块502还用于:
在将所述文件的所有分片都传输至所述接收端后,向所述接收端发送传输完成指示信息,以提示所述接收端对接收到的所述文件进行文件内容校验。
可选的,所述多条链路的数量与所述N个分片的数量相同;其中,从所述多条链路中为所述N个分片中的各个分片分配的链路互不相同。
本申请实施例通过对文件进行分片处理,然后采用边传输边计算的方式,依次对各个分片进行hash计算以得到各个分片对应的hash中间结果,直到得到文件对应的hash值;若计算得到任一分片的hash中间结果,则通过多条链路中分配给该任一分片的下一分片的链路将该任一分片的hash中间结果和该任一分片的下一分片发送给文件传输的接收端;以使接收端也可以采用边传输边计算的方式,在接收到该任一分片的hash中间结果和该任一分片的下一分片后,根据接收到的该任一分片的hash中间结果对该任一分片的下一分片进行hash计算,以得到该任一分片的下一分片的hash中间结果,直到计算得到文件对应的hash值,以基于两端计算得到的与各个分片对应的hash中间结果和与文件对应的hash值对文件的内容进行校验,由于计算过程相对应于传输过程时间很短,因此,通过多条链路传输多个分片可以认为是近似于并行传输的方式传输文件,从而可以大大缩短文件传输的时间,提升文件传输的效率。
可选的,所述发送模块502还用于:
在通过所述多条链路向所述接收端传输所述N个分片的过程中,预先向所述接收端发送计算得到的所述文件的hash值,以使所述接收端基于接收到的所述文件的hash值确定所述接收端是否已存储了与所述待传输的文件相同的文件;
响应于接收到的所述接收端在确定已存储了与所述待传输的文件相同的文件后返回的提示信息,停止通过所述多条链路向所述接收端继续传输所述N个分片。
本申请实施例,通过预先向所述接收端发送计算得到的与文件对应的hash值以使接收端确定是否已存储了与所述待传输的文件相同的文件,从而可以减少了文件传输过程,节省了网络资源。
与前述应用于文件传输的接收端的文件传输方法的实施例相对应,本申请还提供了文件传输装置的实施例。
如图6所示,所述文件传输装置包括:接收模块601和校验模块602。
所述接收模块601用于通过从所述多条链路中为所述N个分片中的第一分片分配的链路接收所述发送端传输的所述第一个分片,并针对所述第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果;其中,所述第一个分片为所述N个分片中的首个分片;通过从所述多条链路中为所述N个分片中的第二个分片分配的链路接收所述发送端传输的所述第二个分片和由所述发送端针对所述第一个分片进行hash计算得到的与所述第一个分片对应的第一hash中间结果,并继续将接收到的第一hash中间结果作为输入数据,针对所述第二个分片进行hash计算,得到所述第二个分片对应的第二hash中间结果,以此类推,直到通过从所述多条链路中为所述N个分片中的第N个分片分配的链路接收所述发送端传输的所述第N个分片和由所述发送端针对第N-1个分片进行hash计算得到的与所述第N-1个分片对应的第N-1hash中间结果,并继续将接收到的第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值;所述校验模块602用于根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验。
可选的,所述校验模块602用于:
确定计算得到所述任一分片对应的hash结果与接收到的所述任一分片对应的hash结果是否相同;如果是,继续将接收到的任一分片对应的hash中间结果作为输入数据,针对所述任一分片的下一分片进行hash计算。
可选的,所述校验模块602用于:
依次确定计算得到的所述N个分片分别对应的hash中间结果与接收到所述N个分片分别对应的hash中间结果是否相同;如果计算出的任一分片对应的hash中间结果与接收到的所述任一分片对应的hash中间结果不同,则丢弃所述任一分片。
可选的,所述接收模块601还用于从所述发送端接收传输完成指示信息。
本申请实施例通过与发送端之间建立用于分别传输针对待传输的文件进行分片得到的N个分片的多条链路,可以采用边传输边计算的方式,在接收到该任一分片的hash中间结果和该任一分片的下一分片后,根据接收到的该任一分片的hash中间结果对该任一分片的下一分片进行hash计算,以得到该任一分片的下一分片的hash中间结果,直到计算得到文件对应的hash值,然后再基于两端计算得到的与各个分片对应的hash中间结果和与文件对应的hash值对文件的内容进行校验,由于计算过程相对应于传输过程时间很短,因此,通过多条链路传输多个分片可以认为是近似于并行传输的方式传输文件,从而可以大大缩短文件传输的时间,提升文件传输的效率。
基于上述实施例,可选的,所述接收模块601还用于在通过所述多条链路从所述发送端接收所述N个分片的过程中,预先从所述发送端接收所述发送端计算得到的针对所述文件的hash值;所述校验模块602还用于根据接收到的hash值,查询是否已存储了与所述待传输的文件相同的文件;若存在,则向所述发送端发送提示信息,以提示所述发送端停止通过所述多条链路向所述接收端继续传输所述N个分片。
本申请实施例,通过预先从所述发送端获取与文件对应的hash值以使接收端确定是否已存储了与所述待传输的文件相同的文件,从而可以减少了文件传输过程,节省了网络资源。
请参见图7,图7示出了本申请实施例的一种文件传输系统,所述文件传输系统,包括:文件传输的发送端701和接收端702;其中,所述文件传输的发送端701可以为云存储的客户端,相应的,文件传输的接收端702可以为云存储的服务端;文件传输的发送端701也可以为云存储的服务端,相应的,文件传输的接收端702也可以为云存储的客户端;所述文件传输的发送端701和接收端702还可以为两个不同的客户端或者为两个不同的服务端。
所述发送端701用于实现如上所述的发送端侧的方法实施例;所述接收端702用于实现如上所述的接收端侧的方法实施例。
本申请文件传输装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,为本申请文件传输装置所在电子设备的一种硬件结构图,除了图8所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述文件传输方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (13)
1.一种文件传输方法,其特征在于,应用于文件传输的发送端,所述方法包括:
对待传输的文件进行分片处理得到N个分片;其中,所述发送端与所述文件传输的接收端之间包括用于分别传输所述N个分片的多条链路;
针对所述N个分片中的第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果,并将所述第一个分片通过从所述多条链路中为所述第一个分片分配的链路传输至所述接收端;其中,所述第一个分片为所述N个分片中的首个分片;
继续将所述第一hash中间结果作为输入数据,针对第二个分片进行hash计算,得到与所述第二个分片对应的第二hash中间结果,并将所述第二个分片和所述第一hash中间结果通过从所述多条链路中为所述第二个分片分配的链路传输至所述接收端,以此类推,直到将第N个分片和与第N-1个分片对应的第N-1hash中间结果通过从所述多条链路中为所述第N个分片分配的链路传输至所述接收端,并继续将所述第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在通过所述多条链路向所述接收端传输所述N个分片的过程中,预先向所述接收端发送计算得到的所述文件的hash值,以使所述接收端基于接收到的所述文件的hash值确定所述接收端是否已存储了与所述待传输的文件相同的文件;
响应于接收到的所述接收端在确定已存储了与所述待传输的文件相同的文件后返回的提示信息,停止通过所述多条链路向所述接收端继续传输所述N个分片。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述文件的所有分片都传输至所述接收端后,向所述接收端发送传输完成指示信息,以提示所述接收端对接收到的所述文件进行文件内容校验。
4.根据权利要求1-3任一所述的方法,其特征在于,所述多条链路的数量与所述N个分片的数量相同;其中,从所述多条链路中为所述N个分片中的各个分片分配的链路互不相同。
5.根据权利要求1-3任一所述的方法,其特征在于,所述发送端为云存储客户端,所述接收端为云存储服务端。
6.一种文件传输方法,其特征在于,应用于文件传输的接收端,其中,所述文件传输的发送端与所述接收端之间包括用于分别传输针对待传输的文件进行分片得到的N个分片的多条链路,所述方法包括:
通过从所述多条链路中为所述N个分片中的第一分片分配的链路接收所述发送端传输的所述第一个分片,并针对所述第一个分片进行hash计算,得到与所述第一个分片对应的第一hash中间结果;其中,所述第一个分片为所述N个分片中的首个分片;
通过从所述多条链路中为所述N个分片中的第二个分片分配的链路接收所述发送端传输的所述第二个分片和由所述发送端针对所述第一个分片进行hash计算得到的与所述第一个分片对应的第一hash中间结果,并继续将接收到的第一hash中间结果作为输入数据,针对所述第二个分片进行hash计算,得到所述第二个分片对应的第二hash中间结果,以此类推,直到通过从所述多条链路中为所述N个分片中的第N个分片分配的链路接收所述发送端传输的所述第N个分片和由所述发送端针对第N-1个分片进行hash计算得到的与所述第N-1个分片对应的第N-1hash中间结果,并继续将接收到的第N-1hash中间结果作为输入数据,针对所述第N个分片进行hash计算,得到针对所述文件的hash值;
根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验。
7.根据权利要求6所述的方法,其特征在于,所述继续将接收到的任一分片对应的hash中间结果作为输入数据,针对所述任一分片的下一分片进行hash计算,包括:
确定计算得到所述任一分片对应的hash结果与接收到的所述任一分片对应的hash结果是否相同;如果是,继续将接收到的任一分片对应的hash中间结果作为输入数据,针对所述任一分片的下一分片进行hash计算。
8.根据权利要求6所述的方法,其特征在于,所述根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验,包括:
依次确定计算得到的所述N个分片分别对应的hash中间结果与接收到所述N个分片分别对应的hash中间结果是否相同;如果计算出的任一分片对应的hash中间结果与接收到的所述任一分片对应的hash中间结果不同,则丢弃所述任一分片。
9.根据权利要求6所述的方法,其特征在于,在根据计算得到的与所述N个分片分别对应的hash中间结果和所述文件的hash值针对所述文件进行文件内容校验之前,所述方法还包括:
从所述发送端接收传输完成指示信息。
10.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在通过所述多条链路从所述发送端接收所述N个分片的过程中,预先从所述发送端接收所述发送端计算得到的针对所述文件的hash值;
根据接收到的hash值,查询是否已存储了与所述待传输的文件相同的文件;若存在,则向所述发送端发送提示信息,以提示所述发送端停止通过所述多条链路向所述接收端继续传输所述N个分片。
11.一种文件传输系统,其特征在于,包括:
文件传输的发送端和接收端;
其中,所述发送端用于实现权利要求1-5任一所述的方法;所述接收端用于实现权利要求6-10任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1-10任一所述方法的步骤。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-10任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310217706.2A CN116389455A (zh) | 2023-03-02 | 2023-03-02 | 一种文件传输方法、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310217706.2A CN116389455A (zh) | 2023-03-02 | 2023-03-02 | 一种文件传输方法、系统及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116389455A true CN116389455A (zh) | 2023-07-04 |
Family
ID=86964735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310217706.2A Pending CN116389455A (zh) | 2023-03-02 | 2023-03-02 | 一种文件传输方法、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116389455A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116933331A (zh) * | 2023-07-28 | 2023-10-24 | 三峡高科信息技术有限责任公司 | 一种基于wasm和web worker的多线程文件哈希方法 |
-
2023
- 2023-03-02 CN CN202310217706.2A patent/CN116389455A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116933331A (zh) * | 2023-07-28 | 2023-10-24 | 三峡高科信息技术有限责任公司 | 一种基于wasm和web worker的多线程文件哈希方法 |
CN116933331B (zh) * | 2023-07-28 | 2024-02-06 | 三峡高科信息技术有限责任公司 | 一种基于wasm和web worker的多线程文件哈希方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9158806B2 (en) | Integrity checking and selective deduplication based on network parameters | |
AU781130B2 (en) | Group chain reaction encoder with variable number of associated input data for each output group code | |
JP4156568B2 (ja) | 通信システムの制御方法、通信制御装置、プログラム | |
US7057534B2 (en) | Information additive code generator and decoder for communication systems | |
US20060112422A1 (en) | Data transfer using hyper-text transfer protocol (HTTP) query strings | |
US20110246763A1 (en) | Parallel method, machine, and computer program product for data transmission and reception over a network | |
CN103581230A (zh) | 文件传输系统和方法、接收端、发送端 | |
US11023412B2 (en) | RDMA data sending and receiving methods, electronic device, and readable storage medium | |
CN116389455A (zh) | 一种文件传输方法、系统及电子设备 | |
WO2023091903A1 (en) | Scalable media file transfer | |
CN109120385B (zh) | 一种基于数据传输系统的数据传输方法、装置及系统 | |
US10949645B2 (en) | Method, apparatus, and storage medium for data verification | |
CN114629891A (zh) | 文件传输方法、装置、电子设备及计算机可读存储介质 | |
CN110912969B (zh) | 一种文件高速传输源节点、目的节点装置及系统 | |
CN114785805A (zh) | 一种数据传输方法、装置、电子设备以及存储介质 | |
CN113904976A (zh) | 基于rdma用于有损网络的多路径数据传输方法和装置 | |
TW201824005A (zh) | 使用兩階記憶體處理封包資料之資料傳輸系統、資料接收方法、及資料傳送方法 | |
KR101151615B1 (ko) | Udp기반의 p2p 데이터 전송 방법 및 시스템 | |
CN111061682A (zh) | 一种数据缓存方法、读取方法、电子设备及存储介质 | |
CN114827125B (zh) | 高性能计算云平台并行数据传输方法、系统及介质 | |
US11252265B2 (en) | Packet communication system and method | |
CN106998361B (zh) | 数据传输方法和系统 | |
US11080145B1 (en) | Dictionary synchronization over a transport with guaranteed ordering | |
CN115567512A (zh) | 数据传输方法、装置、服务器、设备、介质及程序产品 | |
CN116132059A (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 |