一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据传输方法及装置与流程

2022-02-22 17:04:17 来源:中国专利 TAG:
1.本技术涉及数据传输领域,具体涉及一种数据传输方法及装置。
背景技术
::2.随着高速互联网的普及、个人计算机计算能力和存储能力的提升,互联网用户可以通过网络共享文件。例如,互联网用户可以利用互联网中散布的大量存储节点,将存储资料分布到所有网络节点上。各个网络节点可以利用闲置的存储空间,执行存储任务,从而达到海量存储的目的。3.当用户需要下载资源时,可以向下载节点发起下载请求,进而执行资源下载。然而,在该过程中,恶意的下载节点可以窥探用户所请求的资源,从而窥探用户的隐私。4.为解决上述问题,现有技术通常假设网络中存在可信第三方,例如可信节点或可信执行环境,这样可以通过可信节点实现安全隐私保护。然而,该方案无法应用于不可信的网络环境中。5.因此,如何实现安全的数据传输成为一个亟待解决的问题。技术实现要素:6.本技术提供一种数据传输方法及装置,能够提高不可信的网络环境中数据传输的安全性,一定程度上保护用户的隐私。7.第一方面,提供了一种数据传输方法,该方法包括:请求节点向目标下载节点发起m个下载请求,m个下载请求中包括真实的目标下载请求,目标下载请求用于请求下载目标数据,m个下载请求中其余m-1个下载请求为虚构的下载请求,m为大于1的整数;接收目标下载节点根据m个下载请求发送的反馈数据;根据反馈数据获取目标数据。8.示例性地,目标数据也可以成为目标资源或目标文件,本技术实施例对数据的具体形式不做限定。9.目标下载节点上存储目标数据。目标下载节点可以为一个,也可以为多个。10.真实的目标下载请求指的是请求节点所需的目标数据对应的下载请求。虚构的下载请求指的是请求节点不需要的下载请求。需要说明的是,该虚构的下载请求所请求的数据可能存储于目标下载节点上,也可能没有存储于目标下载节点上。虚构的下载请求所请求的数据可以是真实存在的,也可以是不存在的。11.示例性地,请求节点向目标下载节点发起m个下载请求可以包括:请求节点直接向目标下载节点发送m个下载请求。可替换地,请求节点向目标下载节点发起m个下载请求也可以包括:请求节点通过其他网络节点向目标下载节点发送m个下载请求。12.反馈数据可以包括m个下载请求中的至少一个下载请求所请求下载的数据。反馈数据也可以包括提示信息。该提示信息用于当下载请求所请求下载的数据未存储于目标下载节点时提示未查找到相关数据。13.根据本技术实施例中的方案,当请求节点需要下载目标数据时,同时并发多个下载请求,将目标下载请求隐藏于多个下载请求中,使目标下载节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据传输,提高了不可信的网络环境中数据传输的安全性。14.结合第一方面,在第一方面的某些实现方式中,方法还包括:获取目标下载节点的公钥和m个下载请求对应的扰动值;利用目标下载节点的公钥对请求节点的对称密钥进行加密;利用目标下载请求对应的扰动值对加密结果进行扰动;将扰动结果发送至目标下载节点;以及,根据反馈数据获取目标数据,包括:利用请求节点的对称密钥对反馈数据进行解密,获取目标数据;其中,反馈数据包括加密数据,加密数据是根据扰动结果得到的。15.该加密数据是利用m个下载请求对应的密钥对m个下载请求所请求的数据分别进行加密得到的,m个下载请求对应的密钥是利用目标下载节点的私钥对m个下载请求对应的解扰结果进行解密得到的,m个下载请求对应的解扰结果是利用m个下载请求对应的扰动值对该扰动结果进行解扰得到的。16.其中,目标下载节点的公钥可以预先存储在请求节点中,或者,目标下载节点的公钥可以由目标下载节点发送至请求节点。17.请求节点可以通过多种方式获取该扰动值。该扰动值可以是预先存储的。或者,该扰动值也可以是根据需要生成的。本技术实施例对扰动值的获取方式不做限定,其他获取扰动值的方式均可以应用于本技术实施例的方案。例如,还可以由其他节点将扰动值发送给请求节点和目标下载节点。18.根据本技术实施例的方案,目标下载节点不知晓请求节点的真实需求,利用m个扰动值解扰并解密后得到的密钥中,只有一个是请求节点的对称密钥。利用这些密钥对对应的数据加密后,请求节点利用自身的对称密钥也只能解密出目标数据,无法解密除其他数据。这样,请求节点只能获取自己所需的目标数据,无法获得目标下载节点上的其他数据,可以保证目标下载节点的隐私,也就是说同时保护了请求节点和目标下载节点的隐私。19.结合第一方面,在第一方面的某些实现方式中,方法应用于分布式结构化p2p存储网络中,方法还包括:获取目标数据的哈希值;根据目标数据的哈希值确定m个下载请求。20.其中,目标数据的哈希值可以是根据目标数据的相关信息生成的。数据的相关信息包括数据的名称、数据的关键词或数据的内容等。21.在分布式结构化p2p存储网络中,数据的哈希值与数据可以是一一对应的,下载请求可以是基于哈希值确定的,例如,目标数据的哈希值为k1,则目标下载请求可以用于请求下载k1对应的数据。除目标下载请求之外,其余m-1个下载请求可以用于请求其余m-1个哈希值对应的数据。22.结合第一方面,在第一方面的某些实现方式中,根据目标数据的哈希值确定m个下载请求,包括:生成与目标数据的哈希值距离最近的m-1个哈希值;将基于m个哈希值的下载请求作为m个下载请求。23.其中,该距离为逻辑距离,逻辑距离可以通过kademlia算法或chord算法等计算。24.距离最近的哈希值可以为大于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为小于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为以目标数据的哈希值为中心,距离目标数据的哈希值最近的哈希值。本技术实施例对此不做限定。25.根据本技术实施例的方案,当数据存储在与数据的哈希值相等或相近的节点id对应的网络节点上时,根据该方式确定的m-1个下载请求所请求的数据更有可能存储在目标下载节点上,有利于隐藏请求节点的真实需求。26.结合第一方面,在第一方面的某些实现方式中,在请求节点向目标下载节点发起m个下载请求之前,方法还包括:请求节点向索引节点发起k个检索请求,k个检索请求中包括真实的目标检索请求,目标检索请求用于请求检索目标数据的目标下载节点,k个检索请求中其余k-1个检索请求为虚构的检索请求,k为大于1的整数;接收索引节点根据k个检索请求发送的索引信息,索引信息用于指示数据的下载节点;根据索引信息确定目标下载节点。27.其中,索引节点指的是存储有索引信息的网络节点。28.真实的目标检索请求指的是请求节点所需检索的目标数据对应的检索请求。虚构的检索请求指的是请求节点不需要的检索请求。需要说明的是,该虚构的检索请求所请求的数据可以是真实存在的,也可以是不存在的。29.示例性地,请求节点向索引节点发起k个检索请求可以包括:请求节点直接向索引节点发送k个检索请求。可替换地,请求节点向索引节点发起k个检索请求也可以包括:请求节点通过其他网络节点向目标下载节点发送k个检索请求。30.示例性地,索引信息可以包括指示k个检索请求中至少一个检索请求所请求检索的数据的下载节点的信息。或者,索引信息也可以包括提示信息。该提示信息用于当检索请求所请求检索的数据不存在时提示未查找到相关数据。31.根据本技术实施例的方案,同时并发多个检索请求,将目标检索请求隐藏于多个检索请求中,使中间节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据检索,提高了不可信的网络环境中数据传输的安全性。32.结合第一方面,在第一方面的某些实现方式中,方法还包括:根据索引信息中的第一索引信息确定其余m-1个下载请求,第一索引信息指示的下载节点为目标下载节点。33.根据索引信息中的第一索引信息确定其余m-1个下载请求可以包括:根据将第一索引信息对应的检索请求所请求检索的数据确定其余m-1个下载请求所请求下载的数据。34.也就是说,其余m-1个下载请求所请求下载的数据位于目标下载节点上。35.根据本技术实施例的方案,根据反馈的索引信息确定其余m-1个下载请求,能够保证其余m-1个下载请求所请求的数据也存储于目标下载节点上,目标下载节点无法知晓请求节点的真实需求,有利于保护请求节点的隐私。36.结合第一方面,在第一方面的某些实现方式中,根据索引信息中的第一索引信息确定其余m-1个下载请求,包括:在第一索引信息的数量大于或等于第一阈值的情况下,根据索引信息中的第一索引信息确定其余m-1个下载请求。37.根据本技术实施例的方案,在所请求检索的数据中,当存储于目标下载节点上的数据的数量较多时,可以对目标下载节点发起更多的下载请求,增加了目标下载节点窥探请求节点的隐私的难度。38.结合第一方面,在第一方面的某些实现方式中,根据索引信息中的第一索引信息确定其余m-1个下载请求,包括:在第一索引信息的数量小于第一阈值的情况下,增大k的值;向索引节点再次发起k个检索请求;重复上述过程,直至第一索引信息的数量大于或等于第一阈值,根据索引信息中的第一索引信息确定其余m-1个下载请求。39.根据本技术实施例的方案,在所请求检索的数据中,存储于目标下载节点上的数据的数量较少时,请求节点发起更多的检索请求,以便增加在所请求检索的数据中,存储于目标下载节点上的数据的数量。这样,可以对目标下载节点发起更多的下载请求,增加了目标下载节点窥探请求节点的隐私的难度。40.结合第一方面,在第一方面的某些实现方式中,方法应用于分布式结构化p2p存储网络中,方法还包括:获取目标数据的哈希值;根据目标数据的哈希值确定k个检索请求。41.其中,目标数据的哈希值可以是根据目标数据的相关信息生成的。数据的相关信息包括数据的名称、数据的关键词或数据的内容等。42.在分布式结构化p2p存储网络中,数据的哈希值与数据可以是一一对应的,检索请求可以是基于哈希值确定的,例如,目标数据的哈希值为k1,则目标检索请求可以用于请求检索k1对应的数据的索引信息。除目标检索请求之外,其余k-1个检索请求可以用于请求其余k-1个哈希值对应的数据的索引信息。43.结合第一方面,在第一方面的某些实现方式中,根据目标数据的哈希值确定k个检索请求,包括:生成与目标数据的哈希值距离最近的k-1个哈希值;将对k个哈希值的检索请求作为k个检索请求。44.其中,该距离为逻辑距离,逻辑距离可以通过kademlia算法或chord算法等计算。45.距离最近的哈希值可以为大于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为小于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为以目标数据的哈希值为中心,距离目标数据的哈希值最近的哈希值。本技术实施例对此不做限定。46.根据本技术实施例的方案,当数据的索引信息存储在与数据的哈希值相等或相近的节点id对应的网络节点上时,根据该方式确定的k-1个检索请求所请求的索引信息更有可能存在于目标数据对应的索引节点上,有利于向目标数据对应的索引节点隐藏请求节点的真实需求,保护请求节点的隐私。47.第二方面,提供了一种数据传输方法,该方法包括:下载节点接收请求节点发送的m个下载请求,其中m为大于1的整数;接收请求节点发送的扰动结果;利用m个下载请求对应的扰动值对扰动结果进行解扰,得到m个下载请求对应的解扰结果;利用下载节点的私钥对m个下载请求对应的解扰结果进行解密,得到m个下载请求对应的密钥;利用m个下载请求对应的密钥对m个下载请求所请求的数据分别进行加密,得到m个加密数据;向请求节点发送m个加密数据。48.该扰动结果是利用目标下载请求对应的扰动值对加密结果进行扰动得到的,该加密结果是利用下载节点的公钥对请求节点的对称密钥进行加密得到的。49.根据本技术实施例的方案,目标下载节点不知晓请求节点的真实需求,利用m个扰动值解扰并解密后得到的密钥中,只有一个是请求节点的对称密钥。利用这些密钥对对应的数据加密后,请求节点利用自身的对称密钥也只能解密出目标数据。这样,请求节点只能获取自己所需的目标数据,无法获得目标下载节点上的其他数据,可以保证目标下载节点的隐私,也就是说同时保护了请求节点和目标下载节点的隐私。50.结合第二方面,在第二方面的某些实现方式中,扰动结果是利用目标下载请求对应的扰动值对加密结果进行加密得到的,以及方法还包括:向请求节点发送下载节点的公钥,公钥用于加密请求节点的对称密钥,得到加密结果。51.第三方面,提供了一种数据传输装置,装置包括用于执行上述第一方面以及第一方面中的任意一种实现方式中的方法的模块或单元。52.第四方面,提供了一种数据传输装置,所述装置包括用于执行上述第二方面以及第二方面中的任意一种实现方式中的方法的模块或单元。53.第五方面,提供了一种数据传输系统,所述系统包括第三方面中的装置和第四方面中的装置。54.第六方面,提供了一种数据传输装置,该装置包括:存储器,用于存储程序;处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行上述第一方面以及第一方面中的任意一种实现方式中的方法。55.第七方面,提供了一种数据传输装置,该装置包括:存储器,用于存储程序;处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行上述第二方面以及第二方面中的任意一种实现方式中的方法。56.第八方面,提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行上述各方面中的任意一种实现方式中的方法。57.第九方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述各方面中的任意一种实现方式中的方法。58.第十方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述各方面中的任意一种实现方式中的方法。59.可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述各方面中的任意一种实现方式中的方法。60.上述芯片具体可以是现场可编程门阵列(field-programmablegatearray,fpga)或者专用集成电路(application-specificintegratedcircuit,asic)。附图说明61.图1为本技术实施例提供的一种中心化p2p存储网络的示意性结构图;62.图2为本技术实施例提供的一种分布式非结构化p2p存储网络的示意性结构图;63.图3为本技术实施例提供的一种分布式结构化p2p存储网络的示意性结构图;64.图4为本技术实施例提供的一种p2p存储网络中的数据下载过程的示意性流程图;65.图5为本技术实施例提供的一种数据传输方法的示意性流程图;66.图6为本技术实施例提供的一种数据检索方法的示意性流程图;67.图7为本技术实施例提供的一种p2p存储网络中文件的存储形式的示意性结构图;68.图8为本技术实施例提供的一种数据传输方法的示意性流程图;69.图9为本技术实施例提供的一种p2p存储网络中数据检索过程的示意性流程图;70.图10为本技术实施例提供的一种数据传输过程的示意性流程图;71.图11为本技术实施例提供的一种数据传输过程的示意性流程图;72.图12为本技术实施例提供的另一种数据传输方法的示意性流程图;73.图13为本技术实施例提供的一种数据检索过程的示意性流程图;74.图14为本技术实施例提供的一种数据传输装置的示意性框图;75.图15为本技术实施例提供的另一种数据传输装置的示意性框图;76.图16为本技术实施例提供的又一种数据传输装置的示意性框图;77.图17为本技术实施例提供的再一种数据传输装置的示意性框图。具体实施方式78.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。79.本技术实施例的技术方案可以应用于设备之间的数据传输场景中。示例性地,本技术实施例的技术方案可以用于能够实现分布式存储网络中。例如,本技术实施例的技术方案可以应用于云存储网络、内容分发网络(contentdeliverynetwork,cdn)或p2p存储网络等。80.本技术实施例中主要以应用于p2p存储网络为例对本技术实施例的数据传输方法进行描述。为了便于理解和描述,下面对p2p存储网络以及涉及的相关术语进行说明。81.随着高速互联网的普及、个人计算机计算能力和存储能力的提升,对等(peertopeer,p2p)计算技术逐渐得到广泛的应用。互联网用户通过p2p技术,可以利用互联网中散布的大量计算节点和存储节点,将计算任务或存储资料分布到所有网络节点上。各个网络节点可以利用闲置的计算能力或存储空间,执行计算任务或存储任务,从而达到高性能计算和海量存储的目的。82.文件存储共享和下载是p2p技术应用最广泛的领域之一。p2p存储网络包括多种拓扑结构,例如,中心化p2p存储网络、分布式非结构化p2p存储网络、分布式结构化p2p存储网络、层次式p2p存储网络或混合型p2p存储网络等。83.下面对三种p2p存储网络的拓扑以及相应的文件检索与下载方式进行说明。84.(1)中心化p2p存储网络85.中心化p2p存储网络包括中心的索引服务器和其他网络节点,中心的索引服务器保存所有用户上传的文件索引和存放位置信息。在中心化p2p存储网络中,该索引服务器也可以成为索引节点。86.在中心化p2p存储网络中,所有文件向中心的索引服务器注册。当网络节点需要某个文件时,首先连接到中心的索引服务器上进行检索。也就是将该文件的检索请求统一发送至中心的索引服务器,索引服务器返回该文件的索引信息,即反馈所有该文件的下载节点列表。再由网络节点与索引信息所指示的网络节点建立连接,进而下载所需文件。索引信息所指示的网络节点即为存储节点,或者说是下载节点。如图1所示的存储网络中包括索引服务器101、网络节点102、网络节点103、网络节点104和网络节点105。网络节点103需要某个文件时,首先连接到索引服务器101上查询索引信息,索引服务器101检索后得到该文件存储于网络节点104上,索引服务器101将文件的索引信息反馈至网络节点103。网络节点103与网络节点104建立连接,进而下载所需文件。87.(2)分布式非结构化p2p存储网络88.分布式非结构化的p2p存储网络中不存在中央索引服务器,采用随机图的组织方式组织应用层节点的连接,网络节点是真正的对等关系,每个节点既是客户机(client),同时又是服务器(server)。89.在文件检索及下载方面,分布式非结构化的p2p存储网络通常采用基于完全随机图的洪泛(flooding)搜索算法以及不完全的下载方式。如图2所示,当网络节点需要某个文件时,先以文件名生成一个查询请求,例如,查询“xyz”即为查询文件名为xyz的文件。将该查询请求发送给和它相连的所有网络节点,如果这些网络节点中某个网络节点中存在该文件,如图2中的文件xyz,则该网络节点与查询的机器建立连接,进而传输该文件。如果这些网络节点中不存在这个文件,则继续在自己的邻居节点中转发这个查询请求,直至找到文件所在的网络节点,进而传输该文件。为了控制搜索消息不至于永远传递下去,一般通过生存时间值(timetolive,ttl)的减值来控制查询的深度。在ttl减小到零时,很难确定已经检索到了全部存放所需文件的网络节点的信息,因此文件的下载过程通常是基于局部信息完成的。90.(3)分布式结构化p2p存储网络91.目前的p2p存储网络大多使用分布式结构化拓扑。分布式结构化p2p存储网络采用确定性拓扑结构,利用分布式散列表(distributedhashtable,dht)组织网络中的节点,也可以称为dht网络。大部分分布式结构化p2p存储网络具有自己的拓扑结构,是基于互联网之上的“覆盖网络(overlaynetwork)”,数据通讯是依赖下层的互联网实现的。92.当请求节点需要下载文件时,向p2p存储网络发起请求,通过中间节点查询定位至所需文件,然后将该请求传输给存放所需文件的下载节点,进而执行文件下载。其中查询定位所需文件可以通过索引算法实现,索引算法可以包括tapestry、pastry、chord或kademlia等。93.dht是一个由广域范围大量分散的节点共同维护的散列表。该散列表被分割为多个不连续的块,每个节点被分配一个属于自己的散列块,并成为这个散列块的管理者。散列表中保存文件的键(key)以及与文件相关的内容(item),例如,以(key,item)的形式存储,key与item是一一对应的。例如,文件相关的内容可以为文件的索引信息,也可以为文件的具体内容。在文件的检索与下载过程中,通过请求查询键值,可以获得文件的相关内容。文件的key可以是通过hash函数将文件的相关信息映射为哈希值得到的。94.分布式结构化p2p存储网络采用确定性网络拓扑结构,文件的检索与下载方式与网络拓扑结构是强相关的。或者说,索引算法与网络拓扑结构是强相关的。文件的检索与下载方式是根据基于确定性拓扑的确定性算法确定的。95.下面以分布式结构化p2p存储网络中的两种拓扑结构为例对文件检索与下载过程进行说明。96.图3是本技术实施例中的一种分布式结构化p2p存储网络拓扑的示意性结构图。97.网络中的节点具有唯一的节点标识符(nodeid)。通过hash函数可以将文件的相关信息映射为哈希值(hashvalue),例如,128位的哈希值或160位的哈希值。将该哈希值作为该文件的资源标识符(objectid)。为了便于文件检索,节点id与资源id通常采用“同构”哈希值。98.其中,文件的相关信息可以包括文件名、文件的关键词或文件的内容等。99.一种实现方式中,如图3所示,在存储文件时,文件1存储于网络节点1。网络节点1通过加密散列(hash)函数产生文件1的资源id,即图2中的k1。然后将文件1的索引信息i1根据索引算法逐跳传输至特定节点的散列块中,如图2中的网络节点3,也可以说是文件1在网络节点3进行注册,网络节点3可以称为文件1的索引节点。例如,网络节点3中以(k1,i1)的形式存储文件1的索引信息。网络节点3可以是根据该文件1的资源id确定的。例如,网络节点3可以为与文件1的资源id相等或相近的节点id对应的节点。100.其中,索引信息用于指示文件的下载地址,例如,索引信息i1指示文件1的下载地址为网络节点1。101.当需要下载文件1时,请求节点,如图3中的网络节点4,可以获取文件1的哈希值k1。根据索引算法逐跳搜索至存储该文件1的索引信息的散列块中,如图3中的网络节点3的散列块。请求节点获取该文件的索引信息i1并完成下载。例如,索引算法可以为kademlia算法。102.具体地,请求节点首先在自身的散列块中查询该文件,若在自身的散列块中记录了该文件的下载地址,则直接从该下载地址下载对应的资源。若请求节点的散列块中没有该文件的下载地址,则向邻居节点发起检索请求。该邻居节点可以是根据与资源id的近似度确定的。例如,如图3所示,在该请求节点的所有邻居节点中,网络节点5的节点id与资源id最接近,且节点id号小于资源id,请求节点将检索请求发送至网络节点5。邻居节点再次执行本地查询,若查询到该文件的下载地址,则将文件的下载地址反馈至请求节点,如果未查询到该文件的下载地址,则继续将该检索请求传递给其他邻居节点,执行迭代查询直至定位至所需资源。103.另一种实现方式中,如图3所示,在存储文件时,网络节点1上传文件1。网络节点1通过加密散列(hash)函数产生文件1的资源id,即图2中的k1。然后将文件1的内容i1根据索引算法逐跳传输至特定节点的散列块中,如图2中的网络节点3,也可以说是文件1在网络节点3进行注册,网络节点3可以称为文件1的下载节点。例如,网络节点3中以(k1,i1)的形式存储文件1的具体内容。网络节点3可以是根据该文件1的资源id确定的。例如,网络节点3可以为与文件1的资源id相等或相近的节点id对应的节点。104.当需要下载文件1时,请求节点,如图3中的网络节点4,可以获取文件1的哈希值k1。根据索引算法逐跳搜索至存储该文件1的散列块中,如图3中的网络节点3的散列块。请求节点获取该文件。例如,索引算法可以为chord算法。105.具体地,请求节点向邻居节点发起检索请求。该邻居节点可以是根据与资源id的近似度确定的。例如,如图3所示,在该请求节点的所有邻居节点中,网络节点5的节点id与资源id最接近,且节点id号小于资源id,请求节点将检索请求发送至网络节点5。邻居节点执行本地查询,若查询到该文件,则将文件反馈至请求节点,如果未查询到该文件,则继续将该检索请求传递给其他邻居节点,执行迭代查询直至定位至所需资源。106.需要说明的是,本技术实施例中仅以图3为例对分布式结构化p2p存储网络的检索与下载过程进行说明,不对分布式结构化p2p存储网络的拓扑结构以及检索与下载过程构成限定。例如,分布式结构化p2p存储网络还可以为环状拓扑,通过chord算法进行文件的检索与下载。chord算法通过使用dht技术,使得发现指定对象只需要维护o(logn)的路由表,可以在o(logn)的时间开销下完成资源索引。107.dht类结构能够自适应网络中的节点的动态加入或退出,有着良好的可扩展性、鲁棒性、节点id分配的均匀性和自组织能力。由于分布式结构化p2p存储网络采用确定性网络拓扑结构,只要目的节点存在于p2p存储网络中,通过dht一定可以发现该节点,能够保证资源发现的准确性。同时,资源的注册/检索(存储/发现)过程均遵循确定的算法进行确定性的数据通信,避免了分布式非结构化p2p存储网络巨大的宽带开销,网络的可扩展性有了明显的提升。108.当用户需要下载文件时,需要将下载请求发送至该文件的存储节点,恶意的存储节点可以窥探请求节点所请求的文件的具体内容,从而窥探用户的隐私。109.以p2p存储网络为例,在资源下载阶段,当请求节点的请求最终传递给文件的下载节点后,恶意的下载节点可以进一步窥探请求节点的所请求的文件的内容。此外,在资源发现阶段,所有中间节点或索引服务器都明确得知了请求节点的检索请求,恶意的中间节点或索引服务器可以发起同样的检索请求,从而得知请求节点所请求的文件的具体内容。也就是说无论是资源发现阶段或是资源下载阶段,用户都面临着隐私暴露的风险。110.如图4所示,请求节点发起查询请求,即网络节点a查询“xyz”,所有中间节点均明确得知网络节点a在查询“xyz”,进而可以发起相同的查询请求,通过“xyz”的索引节点得知下载地址,进而发起下载请求,获取“xyz”的内容,从而窥探网络节点a的隐私。“xyz”的索引节点也可以发起下载请求,获取“xyz”的内容,从而窥探网络节点a的隐私。恶意的下载节点可以进一步窥探“xyz”的内容,从而窥探网络节点a的隐私。111.因此,如何在不可信的网络环境中实现安全的数据传输成为一个亟待解决的问题。112.其中,不可信的网络环境指的是网络中的每个节点都可能有窥探其他用户隐私的恶意动机。113.本技术实施例提出一种数据传输方法及装置,能够在不可信的网络环境中实现安全的数据传输,保护用户的隐私。114.下面结合附图对本技术实施例的数据传输方法进行详细介绍。115.图5是本技术实施例提供的一种数据传输方法500。图5所示的方法500可以由如图1或图2或图3所示的网络中的节点执行。例如,可以通过p2p存储网络中的主机内部软件层实现,也可以通过其他硬件电路实现,还可以通过软件层程序和硬件电路的结合实现。方法500包括步骤s510至步骤s530。下面对步骤s510至步骤s530进行详细说明。116.s510,请求节点向目标下载节点发起m个下载请求。117.该m个下载请求中包括真实的目标下载请求。该目标下载请求用于请求下载目标数据,m个下载请求中除了目标下载请求之外的其余m-1个下载请求为虚构的下载请求。m为大于1的整数。118.示例性地,目标数据也可以成为目标资源或目标文件,本技术实施例对数据的具体形式不做限定。119.目标下载节点可以为一个,也可以为多个。目标下载节点上存储目标数据。120.真实的目标下载请求指的是请求节点所需的目标数据对应的下载请求。虚构的下载请求指的是请求节点不需要的下载请求。当请求节点需要下载目标数据时,可以发起多个下载请求,将目标下载请求隐藏于该多个下载请求之中。需要说明的是,该虚构的下载请求所请求的数据可能存储于目标下载节点上,也可能没有存储于目标下载节点上。虚构的下载请求所请求的数据可以是真实存在的,也可以是不存在的。例如,该m-1个下载请求所请求的数据中部分数据存储于目标下载节点,部分数据没有存储于目标下载节点。再如,该m-1个下载请求所请求的数据中部分数据是真实存在的,部分数据是不存在的。121.例如,在云存储网络中,目标下载节点为云服务器,请求节点可以向云服务器发起m个下载请求,请求下载m个文件,该m个文件中包括目标文件。在该情况下,m个下载请求所请求的数据均为真实存在的。122.再如,在p2p存储网络中,请求节点可能不知晓目标下载节点上除了目标数据之外存储了哪些数据。在该情况下,请求节点向目标下载节点发起m个下载请求,除目标数据外,其余m-1个下载请求所请求的数据不一定存在。如前所述,在分布式结构化p2p存储网络中,数据的哈希值与数据可以是一一对应的,下载请求可以是基于哈希值确定的,例如,目标数据的哈希值为k1,则目标下载请求可以用于请求下载k1对应的数据。除目标下载请求之外,其余m-1个下载请求可以用于请求其余m-1个哈希值对应的数据。123.例如,其余m-1个哈希值可以是其他数据的哈希值,因此,其余m-1个下载请求所请求的数据不一定存储于目标下载节点上。124.可选地,方法500可以应用于分布式结构化p2p存储网络中,请求节点可以获取目标数据的哈希值,进而根据目标数据的哈希值确定该m个下载请求。125.其中,目标数据的哈希值可以是根据目标数据的相关信息生成的。数据的相关信息可以包括数据的名称、数据的关键词或数据的内容等。例如,数据类型可以为文件,数据的相关信息可以包括文件名、文件的关键词或文件的内容等。126.示例性地,请求节点可以生成与目标数据的哈希值距离最近的m-1个哈希值;将对该m个哈希值的下载请求作为该m个下载请求。127.其中,该距离为逻辑距离,距离最近的m-1个哈希值可以通过kademlia算法或chord算法等计算。128.例如,哈希值1000与哈希值1101之间的逻辑距离为0101,十进制表示即为5,也即是说两者之间的逻辑距离为5。129.距离最近的哈希值可以为大于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为小于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为以目标数据的哈希值为中心,距离目标数据的哈希值最近的哈希值。本技术实施例对此不做限定。130.例如,目标数据的哈希值为1010,目标检索请求用于向目标下载节点请求哈希值1010对应的数据。m-1个下载请求可以请求与哈希值1010距离最近的m-1哈希值对应的数据。例如,m为3,m-1个哈希值可以为1011、1100和1101。或者m-1个哈希值可以为1001、1000和0111。或者,m-1个哈希值可以为1011、1100和1001。或者,m-1个哈希值可以为1001、1000和1011。131.当数据存储在与数据的资源id相等或相近的节点id对应的网络节点上,该资源id为数据对应的哈希值时,根据该方式确定的m-1个下载请求所请求的数据更有可能存储在目标下载节点上,有利于隐藏请求节点的真实需求。132.请求节点向目标下载节点发起m个下载请求可以包括,请求节点直接向目标下载节点发送m个下载请求;也可以包括:请求节点通过其他网络节点向目标下载节点发送m个下载请求。133.本技术实施例中仅以请求节点需要一个目标数据为例进行说明,当请求节点同时需要多个目标数据时也可以采用本技术实施例中的数据传输方法,只要发起的下载请求数量多于目标下载请求的数量即可。例如,目标下载请求为2,请求节点可以发起2m个下载请求,m为大于1的整数。再如,目标下载请求为2,请求节点可以发起m个下载请求,m为大于2的整数。134.s520,目标下载节点根据m个下载请求发送反馈数据。135.请求节点接收目标下载节点发送的反馈数据。136.对该m个下载请求的反馈数据可以为m个,也可以不为m个。137.例如,当目标下载节点上存在m个下载请求所请求下载的数据时,目标下载节点可以为m个下载请求中的每个下载请求发送对应的反馈数据。当目标下载节点上不存在m个下载请求中的一个或多个下载请求所请求下载的数据时,目标下载节点可以仅为存储于自身的数据所对应的下载请求发送反馈数据。再如,当目标下载节点上不存在m个下载请求中的一个或多个下载请求所请求下载的数据时,目标下载节点可以为m个下载请求中的每个下载请求发送对应的反馈数据,所请求的数据没有存储于目标下载节点的下载请求对应的反馈数据可以为提示信息。该提示信息用于提示未查找到相关数据。也就是说,反馈数据可以包括数据,也可以包括其他提示信息。138.s530,请求节点根据反馈数据获取目标数据。139.该反馈数据可以包括多个下载请求所请求的数据,请求节点可以从多个数据中得到目标数据。140.该反馈数据可以为其他形式的数据,请求节点可以对该反馈数据进行处理,得到目标数据。141.例如,该反馈数据可以为加密数据,请求节点可以对该加密数据进行解密,进而得到目标数据。142.可选地,方法500还包括:143.(1)请求节点获取目标下载节点的公钥和m个下载请求对应的扰动值。144.其中,目标下载节点的公钥可以预先存储在请求节点中,或者,目标下载节点的公钥可以由目标下载节点发送至请求节点。145.若m个下载请求所请求下载的数据存在于目标下载节点,则m个下载请求对应的扰动值也可以理解为m个下载请求所请求的数据所对应的扰动值。146.请求节点可以通过多种方式获取该扰动值。该扰动值可以是预先存储的,例如,该扰动值可以存储在目标下载节点和请求节点。再如,该扰动值存储于目标下载节点,由目标下载节点发送至请求节点。再如,该扰动值存储在请求节点,由请求节点发送至目标下载节点。该扰动值也可以是根据需要生成的。例如,在请求节点需要发起m个下载请求时,可以根据该m个下载请求生成对应的m个扰动值,并发送给目标下载节点。再如,在目标下载节点接收到m个下载请求时,可以根据该m个下载请求生成对应的m个扰动值,并发送给请求节点。再如,请求节点需要发起m个下载请求时,可以根据该m个下载请求生成对应的m个扰动值,在目标下载节点接收到m个下载请求时,可以根据该m个下载请求按照同样的方式生成对应的m个扰动值。以上仅为示例,本技术实施例对扰动值的获取方式不做限定,其他能够使请求节点和目标下载节点获取扰动值的方式均可以应用于本技术实施例的方案。例如,还可以由其他节点将扰动值发送给请求节点和目标下载节点。147.(2)请求节点利用目标下载节点的公钥对请求节点的对称密钥进行加密。148.(3)请求节点利用目标下载请求对应的扰动值对加密结果进行扰动。149.(4)请求节点将扰动结果发送至目标下载节点。150.(5)目标下载节点利用m个下载请求对应的扰动值对扰动结果进行解扰,得到m个下载请求对应的解扰结果。151.由于目标下载节点不知晓请求节点的真实需求,即不知晓目标下载请求,利用m个下载请求对应的扰动值对扰动结果进行解扰后,只有一个解扰结果为正确的解扰结果。152.(6)目标下载节点利用目标下载节点的私钥对m个下载请求对应的解扰结果进行解密,得到m个下载请求对应的密钥。153.由于步骤(5)中只有一个解扰结果为正确的解扰结果,步骤(6)中也只能得到一个正确的密钥。只有目标下载请求对应的密钥为请求节点的对称密钥。154.(7)目标下载节点利用m个下载请求对应的密钥对m个下载请求所请求的数据分别进行加密,得到m个加密数据。155.(8)目标下载节点向请求节点发送m个加密数据。该m个加密数据即为反馈数据。156.在该情况下,步骤s530包括:157.请求节点利用请求节点的对称密钥对所述加密数据进行解密,获取目标数据。158.由于步骤(6)中只有目标下载请求对应的密钥为请求节点的对称密钥,因此请求节点的对称密钥也只能解密目标下载请求所请求的数据,即目标数据。159.这样,请求节点只能获取自己所需的目标数据,无法获得目标下载节点上的其他数据,可以保证目标下载节点的隐私,也就是说同时保护了请求节点和目标下载节点的隐私。160.根据本技术实施例的方案,当请求节点需要下载目标数据时,同时并发多个下载请求,将目标下载请求隐藏于多个下载请求中,使目标下载节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据传输,提高了不可信的网络环境中数据传输的安全性。161.对于一些存储网络,例如,p2p存储网络,请求节点需要下载资源时,需要先进行检索,定位该资源的位置。在数据检索的过程中,参与数据检索的中间节点也有可能知晓请求节点所要请求的数据,从而窥探用户的隐私。162.本技术实施例提供了一种数据检索方法,能够避免在数据检索过程中用户的隐私被泄露。163.图6示出了本技术实施例提供的一种数据检索方法600,该方法600可以在方法500之前执行,也就是说在请求节点向目标下载节点发起下载请求之前执行,用于确定目标下载节点。示例性地,图6所示的方法600可以由如图1或图2或图3所示的网络中的节点执行。方法600包括步骤s610至步骤s630。下面对步骤s610至步骤s630进行详细说明。164.s610,请求节点向索引节点发起k个检索请求。165.该k个检索请求中包括真实的目标检索请求。目标检索请求用于请求检索目标数据的目标下载节点。在k个检索请求中,除了目标检索请求之外的其他检索请求为虚构的检索请求。k为大于1的整数。166.本技术实施例中,检索请求也可以称为查询请求。索引节点指的是存储有索引信息的网络节点。索引信息用于指示数据的下载节点的地址,为了便于描述,也可以理解为索引信息用于指示数据的下载节点。167.真实的目标检索请求指的是请求节点所需检索的目标数据对应的检索请求。虚构的检索请求指的是请求节点不需要的检索请求。当请求节点需要检索目标数据时,可以发起多个检索请求,将目标检索请求隐藏于该多个检索请求之中。需要说明的是,该虚构的检索请求所请求的数据可以是真实存在的,也可以是不存在的。168.例如,在p2p存储网络中,请求节点可能不知晓各个数据的存储位置。在该情况下,请求节点向索引节点发起k个检索请求,除目标数据外,其余k-1个检索请求所请求的数据不一定存在。如前所述,在分布式结构化p2p存储网络中,数据的哈希值与数据可以是一一对应的,检索请求可以是基于哈希值确定的,例如,目标数据的哈希值为k1,则目标检索请求可以用于请求检索k1对应的索引信息。除目标检索请求之外,其余k-1个检索请求可以用于请求其他k-1个哈希值对应的数据。169.示例性地,k-1个哈希值可以是其他数据的哈希值。170.例如,请求节点可以获取目标数据的哈希值和其他数据的哈希值。数据的哈希值可以是根据数据的相关信息生成的。其中,数据的相关信息可以包括数据的名称、数据的关键词或数据的内容等。例如,数据类型可以为文件,数据的相关信息可以包括文件名、文件的关键词或文件的内容等。检索数据时所采用的相关信息与存储该数据时所采用的相关信息是相同的。例如,在存储数据1#时,根据数据1#的内容生成哈希值,然后根据该哈希值存储数据1#的索引信息。在检索数据1#时,也可以根据数据1#的内容生成哈希值,然后对该哈希值发起检索请求以获得数据1#的索引信息。171.例如,请求节点可以获取目标数据的哈希值和其他k-1个数据的哈希值,目标数据的哈希值是根据目标数据的内容生成的,其他k-1个数据的哈希值是根据其他k-1个数据的内容分别生成的。在该情况下,k个检索请求用于请求检索k个数据的索引信息。172.示例性地,k-1个哈希值可以是随机生成的。173.在该情况下,由于其他k-1个检索请求对应的哈希值是随机生成的,其他k-1个检索请求所请求检索的数据可能不存在于网络中。174.可选地,方法600可以应用于分布式结构化p2p存储网络中,请求节点可以根据目标数据的相关信息生成目标数据的哈希值,进而根据目标数据的哈希值确定该k个检索请求。175.示例性地,请求节点可以生成与目标数据的哈希值距离最近的k-1个哈希值;将对该k个哈希值的检索请求作为该k个检索请求。176.其中,该距离为逻辑距离,距离最近的k-1个哈希值可以通过kademlia算法或chord算法等计算。177.例如,哈希值1000与哈希值1101之间的逻辑距离为0101,十进制表示即为5,也即是说两者之间的逻辑距离为5。178.距离最近的哈希值可以为大于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为小于目标数据的哈希值中距离目标数据的哈希值最近的哈希值。或者,距离最近的哈希值可以为以目标数据的哈希值为中心,距离目标数据的哈希值最近的哈希值。本技术实施例对此不做限定。179.例如,目标数据的哈希值为1010,目标检索请求用于向目标下载节点请求哈希值1010对应的数据。k-1个检索请求可以请求与哈希值1010距离最近的k-1哈希值对应的数据。例如,k为3,k-1个哈希值可以为1011、1100和1101。或者k-1个哈希值可以为1001、1000和0111。或者,k-1个哈希值可以为1011、1100和1001。或者,k-1个哈希值可以为1001、1000和1011。180.当数据的索引信息存储在与数据的资源id相等或相近的节点id对应的网络节点上,该资源id为数据对应的哈希值时,根据该方式确定的k-1个检索请求所请求的索引信息更有可能存在于目标数据对应的索引节点上,有利于向目标数据对应的索引节点隐藏请求节点的真实需求。181.请求节点向索引节点发起k个检索请求可以包括,请求节点直接向索引节点发送k个检索请求;也可以包括:请求节点通过其他网络节点向目标下载节点发送k个检索请求。182.例如,在图1所示的中心化p2p存储网络中,索引节点即为中心的索引服务器,请求节点可以直接向索引服务器发起k个检索请求。183.再如,在图3所示的分布式结构化p2p存储网络中,索引节点不是唯一的,每个中间节点都可以是索引节点,请求节点通过索引算法将检索请求逐跳传输至索引节点。也就是说,k个检索请求可能被传递给不同的网络节点以获取k个检索请求分别对应的索引信息。184.本技术实施例中仅以请求节点需要一个目标数据为例进行说明,当请求节点同时需要多个目标数据时也可以采用本技术实施例中的数据检索方法,只要发起的检索请求数量多于目标检索请求的数量即可。例如,目标检索请求为2,请求节点可以发起2k个检索请求,k为大于1的整数。再如,目标检索请求为2,请求节点可以发起k个检索请求,k为大于2的整数。185.s620,索引节点根据k个检索请求发送索引信息。186.请求节点接收索引节点发送的索引信息。187.索引节点可以指示检索请求所请求检索的数据的索引信息。例如,索引节点上可以存储数据的索引信息。再如,索引节点上可以存储数据。在该情况下,索引节点反馈的索引信息即为该索引节点的地址,该索引节点也可以称为下载节点。188.根据该k个检索请求发送的索引信息可以为k个,也可以不为k个。189.例如,当索引节点上存在k个检索请求所请求的数据的索引信息时,索引节点可以为k个检索请求中的每个检索请求发送对应的索引信息。当索引节点上不存在k个检索请求中的一个或多个检索请求所请求的索引信息时,索引节点可以仅为存储于自身的索引信息所对应的检索请求发送索引信息。再如,当索引节点上不存在k个检索请求中的一个或多个检索请求所请求的数据的索引信息时,索引节点可以为k个检索请求中的每个检索请求发送对应的索引信息,所请求的索引信息没有存储于索引节点的检索请求对应的索引信息可以为提示信息。该提示信息用于提示未查找到相关数据。也就是说,索引信息中也可以包括其他提示信息。再如,索引信息还可以为响应信息,该响应信息用于在请求节点和下载节点建立连接。当索引节点即为下载节点时,索引节点收到检索请求后,可以向请求节点发送响应信息,以便与下载节点建立连接。本技术实施例对索引信息的具体形式不做限定。190.s630,请求节点根据索引信息确定目标下载节点。191.该索引信息可以包括多个检索请求对应的索引信息,请求节点可以从中得到目标检索请求对应的索引信息,即目标数据的目标下载节点。192.进一步地,请求节点可以根据该索引信息确定方法500中的m个下载请求。193.可选地,在m个下载请求中除了目标下载请求之外的其余m-1个下载请求可以是根据索引信息中第一索引信息确定的。第一索引信息指示的下载节点为目标下载节点。194.根据索引信息中的第一索引信息确定其余m-1个下载请求可以包括:根据将第一索引信息对应的检索请求所请求检索的数据确定其余m-1个下载请求所请求下载的数据。195.也就是说,其余m-1个下载请求所请求下载的数据位于目标下载节点上。196.根据反馈的索引信息确定其余m-1个下载请求,能够保证其余m-1个下载请求所请求的数据也存储于目标下载节点上,目标下载节点无法知晓请求节点的真实需求,有利于保护请求节点的隐私。197.请求节点根据索引节点反馈的检索请求对应的下载节点可以确定目标检索请求对应的目标下载节点,其他k-1个检索请求中存在h个检索请求对应的下载节点也为目标下载节点。也就是说该h个检索请求所请求检索的数据存储于目标下载节点上。该h个检索请求对应的索引信息即为第一索引信息。在该情况下,请求节点可以从该h个数据中选择m-1个数据,发起对该m-1个数据的下载请求,即为方法500中的m-1个下载请求。h为正整数,h≥m-1。或者,请求节点可以将对该h个数据的下载请求作为m-1个下载请求,h为正整数,h=m。198.可选地,其余m-1个下载请求是根据索引信息中第一索引信息确定的,包括:199.在第一索引信息的数量大于或等于第一阈值的情况下,根据索引信息中第一索引信息确定所述其余m-1个下载请求。200.第一索引信息的数量也可以理解为目标下载节点被反馈的次数。也就是说第一索引信息的数量等于k个检索请求所请求检索的数据中位于目标下载节点的数据的数量。201.如前所述,该h个检索请求对应的索引信息即为第一索引信息,即第一索引信息的数量为h。当k-1个检索请求所请求检索的数据中,存储于目标下载节点的数据的数量较多时,根据第一索引信息确定其余m-1个下载请求。也就是说,当k-1个检索请求所请求检索的数据中,存储于目标下载节点的数据的数量h较大时,请求节点可以从该h个数据中选择m-1个数据,发起对该m-1个数据的下载请求,即为方法500中的m-1个下载请求。h为正整数,h≥m。或者,请求节点可以将对该h个数据的下载请求作为m个下载请求,h为正整数,h=m。202.这样,当存储于目标下载节点上的数据的数量较多时,可以对目标下载节点发起更多的下载请求,增加了目标下载节点窥探请求节点的隐私的难度。203.可选地,其余m-1个下载请求是根据索引信息中第一索引信息确定的,包括:204.在第一索引信息的数量小于第一阈值的情况下,增大k的值;205.向索引节点再次发起k个检索请求;206.重复上述过程,直至满足第一终止条件,根据索引信息中第一索引信息确定其余m-1个下载请求。其中,增大k的值可以包括线性增大k的值,例如以2倍的增速增大k的值。第一终止条件可以包括以下任意一项或几项:索引信息中第一索引信息的数量大于或等于第一阈值、发起检索请求的次数大于或等于第二阈值或k大于或等于第三阈值kmax。第一终止条件可以根据需要设定,本技术实施例对第一终止条件的具体内容不做限定。207.可选地,其余m-1个下载请求是根据索引信息中第一索引信息确定的,包括:208.在第一索引信息的数量小于第一阈值的情况下;209.向索引节点再次发起p个检索请求;210.重复上述过程,直至满足第一终止条件,根据索引信息中第一索引信息确定其余m-1个下载请求。其中,第一终止条件可以包括以下任意一项或几项:索引信息中第一索引信息的数量大于或等于第一阈值、发起检索请求的次数大于或等于第二阈值或发起检索请求的总数量大于或等于第三阈值kmax。第一终止条件可以根据需要设定,本技术实施例对第一终止条件的具体内容不做限定。211.也就是说当k-1个检索请求所请求检索的数据中,存储于目标下载节点的数据的数量较少时,请求节点发起更多的检索请求,直至满足第一终止条件,例如,存储于目标下载节点的数量大于或等于第一阈值。根据第一索引信息确定其余m-1个下载请求。也就是说,请求节点可以从该h个数据中选择m-1个数据,发起对该m-1个数据的下载请求,即为方法500中的m-1个下载请求。h为正整数,h≥m。或者,请求节点可以将对该h个数据的下载请求作为m个下载请求,h为正整数,h=m。212.在所请求检索的数据中,存储于目标下载节点上的数据的数量较少时,请求节点发起更多的检索请求,以便增加在所请求检索的数据中,存储于目标下载节点上的数据的数量。这样,可以对目标下载节点发起更多的下载请求,增加了目标下载节点窥探请求节点的隐私的难度。213.通过设置检索请求的总数量的上限值,使得请求节点不会发起过多的检索请求,浪费检索资源。例如,当目标下载节点上存储的资源的数量少于第一阈值时,无论发起多少检索请求,第一索引信息的数量都不会达到第一阈值。因此,设置最大的检索请求的数量可以避免浪费检索资源,节约时间成本。214.根据本技术实施例的方案,同时并发多个检索请求,将目标检索请求隐藏于多个检索请求中,使中间节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据检索,提高了不可信的网络环境中数据传输的安全性。215.本技术实施例中的方案可以应用于多种数据传输的场景中,下面以应用于分布式结构化p2p存储网络为例,通过两个具体的实现方式(方式1和方式2)对本技术实施例中数据传输方法进行说明。216.当将资源或文件存储至分布式结构化p2p存储网络时,可以直接对该资源进行存储或注册。也可以将资源或文件切分成多个资源块或文件块,例如,多个相同大小的资源块或文件块,然后对该多个资源块或文件块分别进行存储或注册。217.图7示出了一种文件存储方式。在一种实现方式中,当一个文件a存储至分布式结构化p2p存储网络中时,可以被切分为多个相同大小的文件块。首先根据每个文件块的相关信息计算出每个文件块的哈希值,然后根据每个文件块的哈希值,在每个文件块对应的索引节点完成信息注册,也就是将每个文件块的索引信息分别存储到每个文件块对应的索引节点中。该多个文件块可以存储于同一个下载节点,也可以存储于不同的下载节点。当需要下载文件a时,请求节点可以从每个文件块对应的索引节点分别获得每个文件块的下载节点的地址,完成下载。需要下载文件a时,可以通过下文中的方法800进行数据传输。218.可替换地,当一个文件a存储至分布式结构化p2p存储网络中时,可以被切分为多个相同大小的文件块。首先根据每个文件块的相关信息计算出每个文件块的哈希值,然后根据每个文件块的哈希值,将每个文件块分别存储到每个文件块对应的下载节点中。当需要下载文件a时,请求节点可以从每个文件块对应的下载节点获得各个文件块。需要下载文件a时,可以通过下文中的方法1200进行数据传输。219.在上述过程中,可以通过特定算法确定索引节点或下载节点。该特定算法是与分布式结构化p2p存储网络的拓扑匹配的算法。例如,p2p存储网络为环状拓扑,与其匹配的算法可以为chord算法。220.方式1221.图8是本技术实施例提供的一种数据传输方法800。图8所示的方法800可以由如图1或图2或图3所示的网络中的节点执行。方法800可以理解为方法500和方法600的一种具体实现方式。具体描述可以参考方法500和方法600,为了避免重复,在描述方法800时做适当省略。222.在分布式结构化p2p存储网络中,网络节点中存储dht表,该dht表中存储有数据的哈希值。当网络节点接收到检索请求时,可以通过查找dht表确定本节点中是否存储检索请求所请求的数据的索引信息。当数据存储至该p2p存储网络或数据离开该p2p存储网络,网络节点实时更新dht表。网络节点可以在请求周期内实时转发请求,并感知网络存储资源变化。223.示例性地,数据的索引信息可以存储于特定的网络节点中。也就是说,当有数据存储至该p2p存储网络时,需要在特定的网络节点完成注册,该特定的网络节点更新dht表。该特定的网络节点可以是与数据的哈希值相等或相近的节点id对应的网络节点。224.在该p2p存储网络中,基于数据的哈希值发起检索请求可以获得数据的索引信息,基于数据的哈希值发起下载请求可以获得数据。225.方法800包括步骤s810至步骤s850。下面对步骤s810至步骤s850进行详细说明。226.s810,请求节点向索引节点发起k个检索请求。227.该k个检索请求中包括真实的目标检索请求。目标检索请求用于请求检索目标数据的目标下载节点。在k个检索请求中,除了目标检索请求之外的其他检索请求为虚构的检索请求。k为大于1的整数。228.例如,该目标数据可以是图7中的文件块。图7中的文件a中的多个文件块的索引信息分别存储于不同的索引节点上,当需要下载文件a时,可以通过方法800获取各个文件块。方法800中仅以索引节点上存储数据的索引信息为例对数据传输方法进行说明,不对本技术实施例的方案构成限定。例如,索引节点上还可以存储数据本身而不存储数据的索引信息,在该情况下,索引节点反馈的索引信息可以指示索引节点本身。229.具体地,请求节点可以先确定目标数据的索引信息是否存储于自身的散列块中。若自身的散列块中没有存储目标数据的索引信息,请求节点可以向索引节点发起k个检索请求。230.为了便于描述,本技术实施例中将该k个检索请求中除了目标检索请求之外的其他k-1个检索请求简称为其他k-1个检索请求。231.示例性地,如图8所示,步骤s810可以包括步骤s811至步骤s813。232.s811,请求节点确定目标数据的哈希值。233.具体地,目标数据的哈希值可以是根据目标数据的相关信息生成的。例如,目标数据的相关信息包括目标数据的名称、目标数据的关键词或目标数据的内容等。234.请求检索数据时所采用的相关信息与存储该数据时所采用的相关信息是相同的。例如,在存储数据1#时,根据数据1#的内容生成哈希值,然后根据该哈希值存储数据1#的索引信息。在检索数据1#时,也可以根据数据1#的内容生成哈希值,然后对该哈希值发起检索请求以获得数据1#的索引信息。235.s812,请求节点生成与目标数据的哈希值距离最近的k-1个哈希值。236.由于数据的索引信息被存储于与数据的哈希值相等或相近的索引节点中,与目标数据的哈希值距离越接近的哈希值所对应数据的索引信息更有可能被存储在目标索引节点中。目标索引节点指的是存储目标资源的索引信息的节点。这样,更多的检索请求可能被传输至目标索引节点中,目标索引节点无法知晓请求节点的真实需求,在一定程度上保护了请求节点的隐私。237.应理解,步骤s812仅作为一种生成k-1个哈希值的方法的示例,还可以通过其他方式生成k-1个哈希值。例如,可以根据其他数据的相关信息生成k-1个哈希值,再如,可以随机生成k-1个哈希值。具体描述参见方法600中的步骤s610,此处不再赘述。238.s813,请求节点发送与该k个哈希值对应的k个检索请求。239.哈希值对应的检索请求用于请求检索该哈希值,也就是检索该哈希值对应的数据的索引信息。发起与哈希值对应的检索请求也可以理解为对哈希值发起检索请求。240.例如,哈希值1000对应的检索请求1#用于请求检索哈希值1000,也就是检索哈希值1000对应的数据的索引信息。241.示例性地,请求节点通过索引算法逐跳向索引节点发送检索请求。索引节点可以为一个,也可以为多个。例如,索引算法可以包括chord算法或kademlia算法等。在逐跳转发检索请求的过程中的中间节点可以是根据该索引算法确定的。242.该索引节点可以包括k个检索请求对应的网络节点。请求节点可以将k个检索请求分别发送至k个检索请求对应的网络节点。243.示例性地,请求节点向至少一个第一邻居节点发送该k个哈希值对应的k个检索请求。该至少一个第一邻居节点可以是根据k个哈希值确定的。例如,根据每个哈希值确定每个检索请求对应的第一邻居节点,将k个检索请求分别发送至对应的第一邻居节点。k个检索请求对应的第一邻居节点可以相同,也可以不同。每个检索请求对应的第一邻居节点可以为一个,也可以为多个。重复执行上述过程,直至将k个检索请求分别发送至对应的索引节点。244.该索引节点可以为目标索引请求对应的网络节点。请求节点也可以将k个检索请求发送至目标索引节点。目标索引节点上存在目标数据的索引信息。245.示例性地,请求节点向至少一个第一邻居节点发送该k个哈希值对应的k个检索请求。该至少一个第一邻居节点可以是根据目标数据的哈希值确定的。例如,根据目标数据的哈希值确定目标检索请求对应的第一邻居节点,将k个检索请求发送至目标检索请求对应的第一邻居节点。目标检索请求对应的第一邻居节点可以为一个,也可以为多个。重复执行上述过程,直至将k个检索请求发送至目标索引节点。246.具体地,根据哈希值确定邻居节点可以为通过特定的算法计算该哈希值对应的邻居节点。247.例如,当p2p存储网络中的网络节点接收到请求节点发送的检索请求,在本地的dht中检索到本地未存储请求数据的索引信息时,根据特定的算法向特定的邻居节点转发检索请求。248.示例性地,第一邻居节点可以根据与哈希值的近似度匹配程度确定。249.具体地,请求节点可以将所有邻居节点中与哈希值距离最近的节点id对应的一个或多个节点作为第一邻居节点。250.例如,检索请求1#所请求检索的数据的索引信息为哈希值1000对应的数据的索引信息。当请求节点在本地dht中检索到本地未存储哈希值1000对应的数据的索引信息,请求节点将与哈希值1000之间的逻辑距离最近的n个邻居节点作为检索请求1#对应的第一邻居节点,n为正整数。请求节点向该n个第一邻居节点发送检索请求1#。251.若在该n个第一邻居节点检索到哈希值1000对应的数据的索引信息,则请求节点接收第一邻居节点发送的哈希值1000对应的数据的索引信息,对检索请求1#的检索过程结束。第一邻居节点中存储哈希值1000对应的数据的索引信息的网络节点即为检索请求1#对应的索引节点。252.若在该n个第一邻居节点未检索到哈希值1000对应的数据的索引信息,则该n个第一邻居节点计算各自的邻居节点的节点id与哈希值1000之间的逻辑距离。将与哈希值1000之间的逻辑距离最近的n个邻居节点作为第二邻居节点。第一邻居节点将检索请求1#发送至第二邻居节点。重复上述过程直至检索到哈希值1000对应的数据的索引信息或者直至检索时长超过第四阈值或无法检索到与哈希值1000更接近的网络节点。253.或者,若在该n个第一邻居节点未检索到哈希值1000对应的数据的索引信息,则该n个第一邻居节点计算各自的邻居节点的节点id与哈希值1000之间的逻辑距离。将与哈希值1000之间的逻辑距离最近的n个邻居节点发送至请求节点,请求节点可以从反馈的网络节点中确定第二邻居节点,将检索请求1#发送至第二邻居节点。重复上述过程直至检索到哈希值1000对应的数据的索引信息或者直至检索时长超过第四阈值或无法检索到与哈希值1000更接近的网络节点。254.如图9所示,请求节点910,向第一邻居节点,如图9中的网络节点920,发送k个检索请求。例如,该第一邻居节点可以是根据目标资源的哈希值确定的。在第一邻居节点中未检索到目标资源的索引信息,将检索请求发送至第二邻居节点。如图9所示,第一邻居节点将检索请求发送至两个第二邻居节点,即网络节点930和网络节点940,在其中一个第二邻居节点,即网络节点930中存储了目标数据的索引信息以及其他k-1个检索请求中的部分检索请求所请求的数据的索引信息,第二邻居节点将索引信息发送至请求节点。网络节点930即为目标数据的索引节点。255.应理解,以上仅为示意,本技术实施例中的资源检索的具体过程还可以由其他方式实现,本技术实施例对此不做限定。256.s820,请求节点接收索引节点根据k个检索请求发送的索引信息,根据该索引信息确定目标下载节点。257.步骤s820与方法600中的步骤s620至步骤s630对应。258.示例性地,如图8所示,步骤s820包括步骤s821。259.s821,请求节点接收索引节点根据k个检索请求发送的索引信息。260.根据k个检索请求发送的索引信息可以为k个,也可以不为k个。261.例如,在步骤s813中,用于转发检索请求的中间节点可以是根据目标数据的哈希值确定的。在该情况下,步骤s821中的索引节点即为目标索引节点。当目标索引节点上存在k个检索请求所请求的数据的索引信息时,目标索引节点可以为k个检索请求中的每个检索请求发送对应的索引信息。当目标索引节点上不存在k个检索请求中的一个或多个检索请求所请求的索引信息时,目标索引节点可以仅为存储于自身的索引信息所对应的检索请求发送索引信息。再如,当目标索引节点上不存在k个检索请求中的一个或多个检索请求所请求的数据的索引信息时,目标索引节点可以为k个检索请求中的每个检索请求发送对应的索引信息,所请求的索引信息没有存储于索引节点的检索请求对应的索引信息可以为提示信息。该提示信息用于提示未查找到相关数据。262.如图9所示,k为5,即请求节点发起5个检索请求,目标索引节点仅存储了其中两个检索请求所请求的数据的索引信息,因此,仅为其中两个检索请求发送对应的检索信息。263.进一步地,步骤s820包括步骤s822和步骤s823。264.s822,判断第一索引信息的数量是否大于或等于第一阈值。265.第一索引信息指示的下载节点为目标下载节点。266.第一索引信息的数量也可以理解为目标下载节点被反馈的次数。也就是说第一索引信息的数量等于k个检索请求所请求检索的数据中位于目标下载节点的数据的数量。267.若第一索引信息的数量大于或等于第一阈值,则执行步骤s830。268.示例性地,若第一索引信息的数量小于第一阈值,则执行步骤s823。269.s823,增加k的值,重复执行步骤s812至步骤s820。270.如图8所示,在第一索引信息的数量小于第一阈值的情况下,增加检索请求的数量,直至第一索引信息的数量大于或等于第一阈值。271.可替换地,步骤s823还可以包括:判断当前的k值是否大于或等于第三阈值kmax。272.若是,则执行步骤s830。若否,则增加k的值,重复执行步骤s812至步骤s820,直至满足第一终止条件。第一终止条件包括以下任意一项或几项:索引信息中第一索引信息的数量大于或等于第一阈值、发起检索请求的次数大于或等于第二阈值或k大于或等于第三阈值kmax。273.应理解,步骤s823仅为示例,在第一索引信息的数量小于第一阈值的情况下,还可以通过其他方式增加检索请求的数量,具体描述参见方法600中的步骤s630,此处不再赘述。274.如图7所示,文件被存储至分布式结构化p2p存储网络中时,可以被分为多个文件块,然后基于该多个文件块的哈希值分别在对应的索引节点进行注册。在一种实施方式中,该文件的多个文件块存储于同一个下载节点,多个文件块的索引信息存储于不同的索引节点。在该情况下,每个文件块的索引信息指示的下载节点都是相同的。因此,在需要下载文件时,可以仅对一个文件块,例如,首个文件块,执行数据检索过程,即步骤s810至步骤s820,获取目标下载节点。对于其他文件块,请求节点可以跳过步骤s810和步骤s820,从步骤s830开始执行,如图10所示,请求节点1010与目标下载节点1020之间通过底层网络1030直接交互,无需经过其他中间节点。这样,可以避免重复检索带来的时间浪费,提高数据传输效率。275.s830,请求节点向目标下载节点发送m个下载请求。276.请求节点根据第一索引信息确定位于目标下载节点上的数据的哈希值。根据位于目标下载节点上的数据的哈希值发起m个下载请求。m个下载请求对应m个哈希值。277.示例性地,第一索引信息的数量为h,也就是说k个检索请求中有h个检索请求所请求的数据存储于目标下载节点。请求节点可以从该h个检索请求对应的哈希值中选择m-1个哈希值,发起对该m-1个哈希值的下载请求,h为正整数,h≥m。或者,请求节点可以将对该h个检索请求对应的哈希值的下载请求作为m个下载请求,h为正整数,h=m。278.如图11所示,m=3,目标数据为data1,目标数据的哈希值为hash1。请求节点将基于hash0、hash1和hash2这3个哈希值的下载请求发送至目标下载节点。279.s840,目标下载节点根据m个下载请求向请求节点发送反馈数据。280.示例性地,如图8所示,步骤s840包括步骤s841至步骤s845。281.s841,请求节点获取m个下载请求对应的扰动值以及目标下载节点的公钥。282.目标下载节点反馈m个下载请求对应的扰动值以及目标下载节点的公钥。283.示例性地,m个下载请求对应的扰动值可以为m个下载请求对应的哈希值。284.示例性地,m个下载请求对应的扰动值可以是m个哈希值对应的随机数。285.例如,网络节点可以为m个下载请求对应的哈希值生成对应的随机数。在该情况下,随机数可以由请求节点生成,也可以由目标下载节点生成。286.再如,网络节点为本地文件的哈希值列表(dht)中的每一个哈希值生成一个唯一对应的随机数,存放于随机数列表中。也就是说,p2p存储网络中的主机除了维持dht之外,还要维护一张随机数列表。如图10所示,所有p2p存储网络中的网络节点中均可以存储本地数据的哈希值列表以及随机数列表。本地数据的哈希值列表存储本地数据的哈希值,随机数列表存储本地数据的哈希值对应的随机数。当有新数据存储至该p2p存储网络,网络节点实时更新dht,生成对应的随机数并更新到随机数列表。当有数据离开该p2p存储网络,网络节点实时更新dht,随机数列表中删除对应的随机数。在该情况下,该随机数可以存储于目标下载节点中,由目标下载节点发送至请求节点。287.如图10所示,请求节点基于m个哈希值发起m个下载请求。目标下载节点根据m个下载请求确定m个哈希值。根据随机数列表确定m个哈希值对应的随机数,并将该随机数发送给请求节点。例如,以(哈希值,随机数)的数据对的形式向请求节点发送哈希值对应的随机数,也就是将(哈希值1,随机数1)、(哈希值2,随机数2),…,(哈希值m,随机数m)。288.如图11所示,目标下载节点将本节点的公钥e以及3个哈希值对应的随机数发送至请求节点。具体地,目标下载节点向请求节点发送(hash0,x0)、(hash1,x1)和(hash2,x2)以及公钥e。289.目标下载节点具有非对称密钥(d,e),公钥e可以用于加密数据,私钥d可以用于解密被公钥e加密的数据。290.应理解,步骤s841仅为示例,请求节点还可以通过其他方式获得m个下载请求对应的扰动值以及目标下载节点的公钥。具体描述参见方法500,此处不再赘述。291.s842,请求节点利用公钥对请求节点的对称密钥进行加密,并利用目标下载请求对应的扰动值对加密结果进行扰动。292.示例性地,请求节点可以从目标下载节点反馈的随机数中确定目标数据的哈希值b对应的随机数b,利用公钥e对自身的对称密钥k进行加密,并利用随机数b对加密结果进行扰动,得到扰动结果v,v满足293.v=随机数b pu(e,k);294.其中,pu(e,k)表示利用公钥e对对称密钥k进行加密。295.如图11所示,b=1,目标数据为data1,请求节点确定目标数据的哈希值hash1对应的随机数为x1。请求节点利用公钥e对自身的对称密钥k进行加密,并利用x1对加密结果进行扰动,得到扰动结果v,v=x1 pu(e,k)。296.s843,请求节点将扰动结果发送至目标下载节点。297.s844,目标下载节点利用m个下载请求对应的扰动值对扰动结果进行解扰,并利用自身的私钥对解扰结果进行解密,得到m个下载请求对应的密钥。298.示例性地,目标下载节点分别利用m个哈希值对应的随机数对扰动结果进行解扰,然后利用自身的私钥d对解扰结果进行解密,得到m个随机数对应的密钥k0、k1…km-1,也就是m个哈希值对应的密钥,即m个下载请求对应的密钥。第i个随机数对应的密钥ki满足:299.ki=pr(d,v-xi);300.其中,i=0,1,…m-1,xi表示第i个随机数,pr(d,v-xi)表示利用私钥d对v-xi进行解密。301.如图11所示,目标下载节点利用3个随机数x0、x1和x2分别对扰动结果v进行解扰,并利用自身的私钥d进行解密,得到3个随机数对应的密钥。其中,只有x1对应的密钥k1为请求节点的对称密钥k,而目标下载节点不知晓请求节点所请求的目标数据,保护了请求节点的隐私。该解密过程也可以理解为目标下载节点制作密钥的过程。302.s845,目标下载节点利用m个下载请求对应密钥对m个下载请求所请求的数据分别进行加密,并将m个加密数据作为反馈数据发送至请求节点。303.示例性地,目标下载节点利用m个随机数对应的密钥分别对m个随机数对应的数据进行加密,得到m个加密数据c0、c1…cm-1。第i个随机数对应的加密数据ci满足:304.ci=pu(ki,datai);305.其中,pu(ki,datai)表示利用密钥ki对数据datai进行加密。306.如图11所示,目标下载节点利用3个随机数对应的密钥分别对3个随机数对应的数据进行加密,得到3个加密数据c0、c1和c2。307.s850,请求节点根据反馈数据获得目标数据。308.示例性地,如图8所示,步骤s850包括步骤s851。309.s851,请求节点利用自身的对称密钥k对m个加密数据进行解密,得到目标数据。310.请求节点利用自身的对称密钥k对m个加密数据进行解密,得到m个解密数据。由于只有kb=k,因此,请求节点只能解密目标数据,无法解密其他数据,也就无法窥探目标下载节点的隐私,实现不经意传输。311.如图11所示,pr(k,c1)表示利用对称密钥k对c1进行解密,只有c1可以被成功解密,得到目标数据。312.根据本技术实施例的方案,将目标下载请求隐藏于多个下载请求中,同时并发多个下载请求,使目标下载节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据传输,提高了不可信的网络环境中数据传输的安全性。313.此外,通过随机密钥交互,目标下载利用多个密钥对请求节点请求的数据进行加密,请求节点只能利用自身的密钥获取自己所需的目标数据,无法获得目标下载节点上的其他数据,可以保证目标下载节点的隐私,也就是说同时保护了请求节点和目标下载节点的隐私。314.同时,根据本技术实施例的方案,将目标检索请求隐藏于多个检索请求中,同时并发多个检索请求,使中间节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据检索,提高了不可信的网络环境中数据传输的安全性。315.此外,根据与目标数据的哈希值的距离生成检索请求,其余k-1个检索请求所请求的索引信息更有可能存储在目标数据对应的索引节点上,有利于向目标数据对应的索引节点隐藏请求节点的真实需求。316.方式2317.图12是本技术实施例提供的一种数据传输方法1200。图12所示的方法1200可以由如图1或图2或图3所示的网络中的节点执行。方法1200可以理解为方法500和方法600的一种具体实现方式。具体描述可以参考方法500和方法600,为了避免重复,在描述方法800时做适当省略。318.在分布式结构化p2p存储网络中,网络节点中存储dht表,该dht表中存储有数据的哈希值。当网络节点接收到检索请求时,可以通过查找dht表确定本节点中是否存储检索请求所请求的数据。当数据存储至该p2p存储网络或数据离开该p2p存储网络,网络节点实时更新dht表。319.示例性地,数据可以存储于特定的网络节点中。也就是说,当有数据存储至该p2p存储网络时,需要存储在特定的网络节点,该特定的网络节点更新dht表。该特定的网络节点可以是与数据的哈希值相等或相近的节点id对应的网络节点。320.在该p2p存储网络中,基于数据的哈希值发起检索请求或下载请求可以获得数据,也就是说检索请求和下载请求可以是相同的请求。321.方法1200包括步骤s1210至步骤s1230。下面对步骤s1210至步骤s1230进行详细说明。322.s1210,请求节点向目标下载节点发起m个下载请求。323.该m个下载请求中包括真实的目标下载请求。目标下载请求用于请求下载目标数据。在m个检索请求中,除了目标下载请求之外的其他下载请求为虚构的下载请求。m为大于1的整数。324.示例性地,该目标数据可以是图7中的文件块。图7中的文件a中的多个文件块分别存储于不同的网络节点上,当需要下载文件a时,可以通过方法1200获取各个文件块。325.在请求节点不知晓目标下载节点的情况下,目标下载请求还用于请求检索目标下载节点的地址。在该情况下,下载请求也可以理解为检索请求。目标下载节点指的是存储目标资源的节点。326.为了便于描述,本技术实施例中将该m个下载请求中除了目标下载请求之外的其他m-1个下载请求简称为其他m-1个下载请求。327.示例性地,如图12所示,步骤s1210可以包括步骤s1211至步骤s1213。328.s1211,请求节点确定目标数据的哈希值。329.具体地,目标数据的哈希值可以是根据目标数据的相关信息生成的。例如,目标数据的相关信息包括目标数据的名称、目标数据的关键词或目标数据的内容等。330.请求下载数据时所采用的相关信息与存储该数据时所采用的相关信息是相同的。例如,在存储数据1#时,根据数据1#的内容生成哈希值,然后根据该哈希值存储数据1#。在请求下载数据1#时,也可以根据数据1#的内容生成哈希值,然后对该哈希值发起下载请求以获得数据1#。331.s1212,请求节点生成与目标数据的哈希值距离最近的m-1个哈希值。332.由于数据被存储于与数据的哈希值相等或相近的下载节点中,与目标数据的哈希值距离越接近的哈希值所对应的数据更有可能被存储在目标下载节点中。这样,更多的下载请求可能被传输至目标下载节点中,目标下载节点无法知晓请求节点的真实需求,在一定程度上保护了请求节点的隐私。333.应理解,步骤s1212仅作为一种生成m-1个哈希值的方法的示例,还可以通过其他方式生成m-1个哈希值。具体描述参见方法600中的步骤s610,此处不再赘述。334.s1213,请求节点发送与该m个哈希值对应的m个下载请求。335.哈希值对应的下载请求用于请求下载哈希值对应的数据。哈希值对应的下载请求也可以理解为基于哈希值发起的下载请求336.例如,哈希值1000对应下载请求1#用于请求检索哈希值1000对应的数据的目标下载地址,并请求下载哈希值1000对应的数据。337.示例性地,请求节点向至少一个第一邻居节点发送该m个哈希值对应的m个下载请求。该至少一个第一邻居节点可以是根据m个哈希值确定的。例如,根据每个哈希值确定每个下载请求对应的第一邻居节点,将m个下载请求分别发送至对应的第一邻居节点。m个下载请求对应的第一邻居节点可以相同,也可以不同。每个下载请求对应的第一邻居节点可以为一个,也可以为多个。338.示例性地,请求节点向至少一个第一邻居节点发送该m个哈希值对应的m个下载请求。该至少一个第一邻居节点可以是根据目标数据的哈希值确定的。例如,根据目标数据的哈希值确定目标下载请求对应的第一邻居节点,将m个下载请求发送至目标下载请求对应的第一邻居节点。目标下载请求对应的第一邻居节点可以为一个,也可以为多个。339.根据哈希值确定第一邻居节点可以为,根据与哈希值的近似度匹配程度确定第一邻居节点。340.具体地,请求节点可以将所有邻居节点中与哈希值距离最近的节点id对应的一个或多个节点作为第一邻居节点。341.例如,下载请求1#所请求下载的数据为哈希值1000对应的数据。请求节点将与哈希值1000之间的逻辑距离最近的n个邻居节点作为下载请求1#对应的第一邻居节点,n为正整数。请求节点向该n个第一邻居节点发送下载请求1#。342.若在该n个第一邻居节点检索到哈希值1000对应的数据,则执行步骤s1220,对下载请求1#的检索过程结束。第一邻居节点中存储哈希值1000对应的数据的网络节点即为下载请求1#对应的下载节点。343.若在该n个第一邻居节点未检索到哈希值1000对应的数据,则该n个第一邻居节点计算各自的邻居节点的节点id与哈希值1000之间的逻辑距离。将与哈希值1000之间的逻辑距离最近的n个邻居节点作为第二邻居节点。第一邻居节点将下载请求1#发送至第二邻居节点。重复上述过程直至检索到哈希值1000对应的数据或者直至检索时长超过第四阈值或无法检索到与哈希值1000更接近的网络节点。344.或者,若在该n个第一邻居节点未检索到哈希值1000对应的数据,则该n个第一邻居节点计算各自的邻居节点的节点id与哈希值1000之间的逻辑距离。将与哈希值1000之间的逻辑距离最近的n个邻居节点发送至请求节点,请求节点可以从反馈的网络节点中确定第二邻居节点,将下载请求1#发送至第二邻居节点。重复上述过程直至检索到哈希值1000对应的数据或者直至检索时长超过第四阈值或无法检索到与哈希值1000更接近的网络节点。345.如图13所示,请求节点1310,向第一邻居节点,如图13中的网络节点1320,发送m个下载请求。例如,该第一邻居节点可以是根据目标资源的哈希值确定的。在第一邻居节点中未检索到目标资源,将下载请求发送至第二邻居节点。如图13所示,第一邻居节点将下载请求发送至两个第二邻居节点,即网络节点1330和网络节点1340,在其中一个第二邻居节点,即网络节点1330中存储了目标数据以及其他m-1个下载请求中的部分下载请求所请求的数据,至此完成步骤s1210。网络节点1330即为目标下载节点。也就是说,在该情况下,请求节点是通过其他网络节点向目标下载节点发送m个下载请求的。346.应理解,以上仅为示意,本技术实施例中的资源检索的具体过程还可以由其他方式实现,本技术实施例对此不做限定。347.s1220,目标下载节点根据m个下载请求向请求节点发送反馈数据。348.示例性地,如图12所示,步骤s1220包括步骤s1221至步骤s1225。步骤s1220的具体描述可以参见前述方法800中的步骤s840以及图11,在描述步骤s1220时做适当省略。349.s1221,请求节点获取m个下载请求对应的扰动值以及目标下载节点的公钥。350.目标下载节点反馈m个下载请求对应的扰动值以及目标下载节点的公钥。351.示例性地,m个下载请求对应的扰动值可以为m个下载请求对应的哈希值。352.示例性地,m个下载请求对应的扰动值可以是m个哈希值对应的随机数。353.例如,网络节点可以为m个下载请求对应的哈希值生成对应的随机数。在该情况下,随机数可以由请求节点生成,也可以由目标下载节点生成。354.再如,网络节点为本地文件的哈希值列表(dht)中的每一个哈希值生成一个唯一对应的随机数,存放于随机数列表中。如图10所示,所有p2p存储网络中的网络节点中均可以存储本地数据的哈希值列表以及随机数列表。本地数据的哈希值列表存储本地数据的哈希值,随机数列表存储本地数据的哈希值对应的随机数。当有新数据存储至该p2p存储网络,网络节点实时更新dht,生成对应的随机数并更新到随机数列表。当有数据离开该p2p存储网络,网络节点实时更新dht,随机数列表中删除对应的随机数。在该情况下,该随机数可以存储于目标下载节点中,由目标下载节点发送至请求节点。355.如图10所示,请求节点基于m个哈希值发起m个下载请求。目标下载节点根据m个下载请求确定m个哈希值。根据随机数列表确定m个哈希值对应的随机数,并将该随机数发送给请求节点。例如,以(哈希值,随机数)的数据对的形式向请求节点发送哈希值对应的随机数。需要说明的是,m个哈希值不一定都存储于目标下载节点上,因此m个下载请求对应的扰动值的数量可能小于m个。356.应理解,步骤s1221仅为示例,请求节点还可以通过其他方式获得m个下载请求对应的扰动值以及目标下载节点的公钥。具体描述参见方法500,此处不再赘述。357.s1222,请求节点利用公钥对请求节点的对称密钥进行加密,并利用目标下载请求对应的扰动值对加密结果进行扰动。358.示例性地,请求节点可以从目标下载节点反馈的随机数中确定目标数据的哈希值b对应的随机数b,利用公钥e对自身的对称密钥k进行加密,并利用随机数b对加密结果进行扰动,得到扰动结果v。359.s1223,请求节点将扰动结果发送至目标下载节点。360.s1224,目标下载节点利用m个下载请求对应的扰动值对扰动结果进行解扰,并利用自身的私钥对解扰结果进行解密,得到m个下载请求对应的密钥。361.s1225,目标下载节点利用m个下载请求对应密钥对m个下载请求所请求的数据分别进行加密,并将加密数据作为反馈数据发送至请求节点。362.s1230,请求节点根据反馈数据获得目标数据。363.示例性地,如图12所示,步骤s1230包括步骤s1231。364.s1231,请求节点利用自身的对称密钥对加密数据进行解密,得到目标数据。365.请求节点利用自身的对称密钥k对加密数据进行解密,得到解密数据。由于只有kb=k,因此,请求节点只能解密目标数据,无法解密其他数据,也就无法窥探目标下载节点的隐私,实现不经意传输。366.根据本技术实施例的方案,将目标下载请求隐藏于多个下载请求中,同时并发多个下载请求,使目标下载节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据传输,提高了不可信的网络环境中数据传输的安全性。367.此外,通过随机密钥交互,目标下载利用多个密钥对请求节点请求的数据进行加密,只有目标数据是利用请求节点的对称密钥加密的数据,因此,请求节点只能利用自身的对称密钥获取自己所需的目标数据,无法获得目标下载节点上的其他数据,可以保证目标下载节点的隐私,也就是说同时保护了请求节点和目标下载节点的隐私。368.同时,根据本技术实施例的方案,将目标下载请求隐藏于多个下载请求中,同时并发多个下载请求,在数据检索过程中,使中间节点无法准确得知请求节点的真实需求,一定程度上保护了用户的隐私。本技术实施例的方案不依赖于任何可信第三方,在不可信的网络环境中完成数据检索,提高了不可信的网络环境中数据传输的安全性。369.此外,根据与目标数据的哈希值的距离生成下载请求,其余m-1个下载请求所请求的数据更有可能存储在目标下载节点上,有利于向目标下载节点隐藏请求节点的真实需求。370.下面结合图14至图17对本技术实施例的装置进行说明。应理解,下面描述的装置能够执行前述本技术实施例的方法,为了避免不必要的重复,下面在介绍本技术实施例的装置时适当省略重复的描述。371.图14是本技术实施例的数据传输装置的示意性框图。图14所示的数据传输装置1400包括收发单元1410和处理单元1420。收发单元1410可以包括一个单元,也可以包括两个单元,例如发送单元和接收单元,本技术实施例对此不做限定。372.收发单元1410和处理单元1420可以用于执行本技术实施例的数据传输方法500或方法600或方法800或方法1200。373.收发单元1410,用于向目标下载节点发起m个下载请求,m个下载请求中包括真实的目标下载请求,目标下载请求用于请求下载目标数据,m个下载请求中其余m-1个下载请求为虚构的下载请求,m为大于1的整数;接收目标下载节点根据m个下载请求发送的反馈数据。374.处理单元1420用于:根据反馈数据获取目标数据。375.可选地,作为一个实施例,处理单元1420还用于:获取目标下载节点的公钥和m个下载请求对应的扰动值;利用目标下载节点的公钥对请求节点的对称密钥进行加密;利用目标下载请求对应的扰动值对加密结果进行扰动;将扰动结果发送至目标下载节点;利用请求节点的对称密钥对反馈数据进行解密,获取目标数据;其中,反馈数据包括加密数据,加密数据是根据扰动结果得到的。376.可选地,作为一个实施例,收发单元1410还用于:向索引节点发起k个检索请求,k个检索请求中包括真实的目标检索请求,目标检索请求用于请求检索目标数据的目标下载节点,k个检索请求中其余k-1个检索请求为虚构的检索请求,k为大于1的整数;接收索引节点根据k个检索请求发送的索引信息,索引信息用于指示数据的下载节点;处理单元1420还用于:根据索引信息确定目标下载节点。377.可选地,作为一个实施例,处理单元1420还用于:根据索引信息中的第一索引信息确定其余m-1个下载请求,第一索引信息指示的下载节点为目标下载节点。378.可选地,作为一个实施例,处理单元1420具体用于:在第一索引信息的数量大于或等于第一阈值的情况下,根据索引信息中的第一索引信息确定其余m-1个下载请求。379.可选地,作为一个实施例,处理单元1420具体用于:在第一索引信息的数量小于第一阈值的情况下,增大k的值;向索引节点再次发起k个检索请求;重复上述过程,直至第一索引信息的数量大于或等于第一阈值,根据索引信息中的第一索引信息确定其余m-1个下载请求。380.可选地,作为一个实施例,装置应用于分布式结构化p2p存储网络中,处理单元1420还用于:获取目标数据的哈希值;根据目标数据的哈希值确定k个检索请求。381.可选地,作为一个实施例,处理单元1420具体用于:生成与目标数据的哈希值距离最近的k-1个哈希值;将对k个哈希值的检索请求作为k个检索请求。382.图15是本技术实施例的数据传输装置的示意性框图。图15所示的数据传输装置1500包括收发单元1510和处理单元1520。383.收发单元1510和处理单元1520可以用于执行本技术实施例的数据传输方法500或方法600或方法800或方法1200。收发单元1510可以包括一个单元,也可以包括两个单元,例如发送单元和接收单元,本技术实施例对此不做限定。384.收发单元1510,用于:接收请求节点发送的m个下载请求,其中m为大于1的整数;接收请求节点发送的扰动结果。385.处理单元1520用于:利用m个下载请求对应的扰动值对扰动结果进行解扰,得到m个下载请求对应的解扰结果;利用下载节点的私钥对m个下载请求对应的解扰结果进行解密,得到m个下载请求对应的密钥;利用m个下载请求对应的密钥对m个下载请求所请求的数据分别进行加密,得到m个加密数据。386.收发单元1510,还用于:向请求节点发送m个加密数据。387.可选地,作为一个实施例,扰动结果是利用目标下载请求对应的扰动值对加密结果进行加密得到的,收发单元1510还用于:向请求节点发送下载节点的公钥,公钥用于加密请求节点的对称密钥,得到加密结果。388.需要说明的是,上述装置1400和装置1500以功能单元的形式体现。这里的术语“单元”可以通过软件和/或硬件形式实现,对此不作具体限定。389.例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(applicationspecificintegratedcircuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。390.因此,在本技术的实施例中描述的各示例的单元,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。391.图16是本技术实施例提供的数据传输装置的硬件结构示意图。图16所示的数据传输装置1600(该装置1600具体可以是一种计算机设备)包括存储器1601、处理器1602、通信接口1603以及总线1604。其中,存储器1601、处理器1602、通信接口1603通过总线1604实现彼此之间的通信连接。392.存储器1601可以是只读存储器(readonlymemory,rom),静态存储设备,动态存储设备或者随机存取存储器(randomaccessmemory,ram)。存储器1601可以存储程序,当存储器1601中存储的程序被处理器1602执行时,处理器1602和通信接口1603用于执行本技术实施例的数据传输方法的各个步骤。393.处理器1602可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),图形处理器(graphicsprocessingunit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例的数据传输装置中的单元所需执行的功能,或者执行本技术方法实施例的数据传输方法。394.处理器1602还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术的数据传输方法的各个步骤可以通过处理器1602中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1602还可以是通用处理器、数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1601,处理器1602读取存储器1601中的信息,结合其硬件完成本技术实施例的数据传输装置中包括的单元所需执行的功能,或者执行本技术方法实施例的数据传输方法。395.通信接口1603使用例如但不限于收发器一类的收发装置,来实现装置1600与其他设备或通信网络之间的通信。例如,可以通过通信接口1603向目标下载节点发起m个下载请求。还可以通过通信接口1603获取目标下载节点根据m个下载请求发送的反馈数据。396.总线1604可包括在装置1600各个部件(例如,存储器1601、处理器1602、通信接口1603)之间传送信息的通路。397.应理解,数据传输装置1400中的收发单元1410相当于数据传输装置1600中的通信接口1603;数据传输装置1400中的处理单元1420可以相当于处理器1602。398.图17是本技术实施例提供的数据传输装置的硬件结构示意图。图17所示的数据传输装置1700(该装置1700具体可以是一种计算机设备)包括存储器1701、处理器1702、通信接口1703以及总线1704。其中,存储器1701、处理器1702、通信接口1703通过总线1704实现彼此之间的通信连接。399.存储器1701可以是只读存储器(readonlymemory,rom),静态存储设备,动态存储设备或者随机存取存储器(randomaccessmemory,ram)。存储器1701可以存储程序,当存储器1701中存储的程序被处理器1702执行时,处理器1702和通信接口1703用于执行本技术实施例的数据传输方法的各个步骤。400.处理器1702可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),图形处理器(graphicsprocessingunit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例的数据传输装置中的单元所需执行的功能,或者执行本技术方法实施例的数据传输方法。401.处理器1702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术的数据传输方法的各个步骤可以通过处理器1702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1702还可以是通用处理器、数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1701,处理器1702读取存储器1701中的信息,结合其硬件完成本技术实施例的数据传输装置中包括的单元所需执行的功能,或者执行本技术方法实施例的数据传输方法。402.通信接口1703使用例如但不限于收发器一类的收发装置,来实现装置1700与其他设备或通信网络之间的通信。例如,可以通过通信接口1703获取请求节点发送的m个下载请求以及请求节点发送的扰动结果等。403.总线1704可包括在装置1700各个部件(例如,存储器1701、处理器1702、通信接口1703)之间传送信息的通路。404.应理解,数据传输装置1500中的收发单元1510相当于数据传输装置1700中的通信接口1703;数据传输装置1500中的处理单元1520可以相当于处理器1702。405.应注意,尽管图16、图17所示的装置仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,装置1600、装置1700还包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,装置1600、装置1700还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,装置1600、装置1700也可仅仅包括实现本技术实施例所必须的器件,而不必包括图16、图17中所示的全部器件。406.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。407.应理解,本技术实施例中的处理器可以为中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。408.还应理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(randomaccessmemory,ram)可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。409.上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘。410.应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。411.本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。412.应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。413.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。414.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。415.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。416.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。417.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。418.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。419.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献