一种基于ndn网络架构的p2p文件传输方法

文档序号:8003661阅读:1087来源:国知局
一种基于ndn网络架构的p2p文件传输方法【专利摘要】本申请公开了一种基于NDN网络架构的P2P文件传输方法,当前用户上线后即可准确地维护其在线用户列表,并通过向NDN网络中发送搜索请求包来获取目的用户返回的搜索结果数据包,从而获取目标文件的详细信息,当前用户通过向NDN网络中发送下载请求包来获取目的用户返回的下载数据包,从而获取目标文件的分块,之后当前用户将目标文件的分块拼接得到完整的目标文件,从而实现在NDN网络中P2P文件的稳定传输。【专利说明】一种基于NDN网络架构的P2P文件传输方法【
技术领域
】[0001]本申请涉及网络通信领域,具体涉及一种基于NDN网络的P2P文件传输方法。【
背景技术
】[0002]P2P(Peer-to-Peer)网络是构建在IP网络之上的覆盖网,在P2P网络中,每一台主机既是客户端,也是服务器,每一台主机都贡献出自己的一部分系统资源,比如文件、带宽、外设等来为同一P2P网络中的其他主机服务。P2P网络的最主要用途之一是进行文件共享,它允许任意终端用户对等体(Peer)间直接通过因特网完成文件交换,不需要修改已存在的软件协议和网络的底层结构就能快速地添加新的网络功能。[0003]但是,目前TCP/IP网络架构下的P2P应用普遍存在以下几个问题:[0004](I)现有P2P文件共享系统并不是完全去中心化的。[0005]实际上,P2P模式中也并不一定是完全无中心的,它可分为纯粹的P2P和混合P2P两类。纯粹的P2P模式是指所有参与的计算机都是对等点,各对等点之间直接通讯,自始至终完全没有中心服务器对对等点间的信息交换进行控制、协调或处理。而混合P2P模式则依赖于中心服务器去执行部分功能。[0006]目前P2P文件交换系统有以下几种不同的形式。一种是“中心文件目录/分布式文件系统”,其交换数据时是通过中央服务器来进行目录管理的。由于采用集中式目录管理,所以不可避免地存在单点瓶颈的问题。另外一类属于完全的P2P,这类系统没有中间服务器,更接近于绝对的自由,因为没有中间服务器,这样形成的P2P网络很难进行诸如安全管理、身份认证、流量管理、计费等控制。第三类系统是上两类系统的折衷——有中间服务器,但文件目录是分布的。[0007](2)网络地址转换(NAT,NetworkAddressTranslation)的穿透问题是P2P技术发展所必须解决的主要问题之一。[0008]通过NAT上网时,只能由NAT内的主机主动向外部的主机发起连接请求,禁止外部主机主动与NAT内部主机建立连接。对于采用P2P方式的下载程序而言,由于NAT内的主机不能接收NAT外部的连接,从而导致连接数目过少,下载速度慢。因此P2P软件必须解决NAT的内部主机不能被外部连接的问题。[0009](3)现有P2P文件共享系统仍然面临着中央服务器负载过大的问题。[0010]由于目前TCP/IP网络架构下的P2P文件共享系统中的某些功能仍需要中央服务器的支持,比如BT(BitTorrent)中的tracker(中央目录服务器)、天网Maze中的用户服务器和心跳服务器等。当系统中出现大量结点动态的加入或离开时,会给这些中央服务器带来很大的负载。此外,利用中央服务器负责目录管理的服务因为受到服务器的限制,存在服务质量无法提高和单点崩溃的问题。[0011](4)在现有P2P文件共享系统中,就近下载功能的实现方法并不是很精确。[0012]在P2P网络中,节点间距离是经常被研究的问题。从字面上,距离表示了节点间在空间上的相对关系,距离相对较近的节点可以互相称为“邻居”。TCP/IP协议以位置为基本要素,IP地址表示节点的位置信息,所以对于“距离”的定义十分直观。在现有的P2P文件共享系统中,距离计算的基本原理是根据用户IP的前X位(例如前16位)作为前缀进行分组。这一方法虽然操作简单,但其准确度不高。[0013](5)现有P2P文件共享应用的最大优点是充分利用网络资源,但是下载效率并不是很理想,对网络带宽的利用率也不高。[0014]现有P2P文件共享应用虽然充分利用了用户个人的电脑及其上传、下载的速度,分摊了服务器的压力,但同时对网络设施提出了更高的要求,对网络带宽占用量极大且利用率不高,有时甚至会导致网络拥塞现象,而且不便于搜索,下载也不稳定。[0015]NDN网络介绍:[0016]当前广泛使用的计算机网络传输协议(TCP/IP协议)的核心思想是在上世纪六七十年代提出来的,当时计算机网络主要被设计用来解决资源共享问题,比如远程使用巨型计算机等,因而设计出来的是一种点对点(Point-to-Point)的通信模型,通常是一方提出使用资源,另一方则提供授权。但在经过半个世纪的发展后,计算机硬件设备已经变得非常廉价,同时整个互联网的发展速度超乎人们的想象,网络中的数据内容不断呈爆炸趋势增长。人们也逐渐将重点转移到想要获取的数据内容上,而不再是共享使用远程硬件资源。然而,网络通信模型却仍在沿用上个世纪六七十年代的设计理念,如果要获取数据,首先必须获知数据所在主机的IP地址信息,并通过建立端到端的连接来传输所需要的数据。这种设计给数据的传输带来了很多问题,比如数据信道的安全问题,网络拥塞问题,WIFI传输中的断开与重连问题等等。在这种背景下,以数据内容为核心的命名数据网络传输机制(NamedDataNetworking,NDN)应运而生。[0017]NDN亦称为Content-CentricNetworking(CCN),是由美国著名的PARC研究所于2006年发起的关于未来互联网体系结构,即FIA(FutureInternetArchitecture)研究的项目,参与者包括美国十余所大学与研究所。该项目在2010年获得了美国国家自然基金(NSF)的资助。NDN项目的领导人主要有UCLA的张丽霞教授和PARC研究所的VanJacobson,其中Jacobson以发明了TCP/IP的拥塞算法而闻名,他提出NDN协议的目的正是为了解决TCP/IP架构下存在的诸多问题。VanJacobson指出,在互联网数据爆炸的今天,人们使用互联网时关注于网络中包含的内容(What),而通信方式仍然是基于位置(Where)的,这种不一致带来了有效性和安全性等问题,解决的办法就是引入命名数据(NamedData),用“是什么”取代“在哪里”。NDN协议就是构建于这种命名数据的基础上的。[0018]NDN项目旨在开发一个新的互联网架构,来充分利用当前基于主机的点对点通讯的互联网架构的优势,并解决当前网络架构的不足,以自然地适应新兴的互联网通信模式。通过数据命名,而不是位置命名,NDN将数据变成最主要的实体。NDN协议框架以传播的数据为核心元素,依靠数据本身的信息通过构建合理有效的命名来完成数据传输,而不再需要关注数据的物理位置,这一特点更加符合当前互联网中大部分数据驱动应用的工作模式。目前的互联网保证数据容器(主机)的安全,而NDN保证内容的安全,这样的设计将数据可信和主机可信分离开来,使一些高度可扩展的通信机制变得可能,例如通过自动缓存来优化带宽。[0019]NDN为了兼容当前已有的网络协议,采用了一种“universaloverlay”的设计。也就是说NDN理论上可以运行在任何网络之上,当然也包括传统的TCP/IP网络。CCNx工程是PARC的CSL实验室对NDN理论进行的一种开源工程实现,整个工程构建于传统TCP/IP网络之上,实现了NDN中的Interest/Data通信机制。【
发明内容】[0020]本申请提供一种基于NDN网络的P2P文件传输方法,能够实现在NDN网络中P2P文件的稳定传输。[0021]该基于NDN网络架构的P2P文件传输方法,包括:[0022]当前用户创建一个空的在线用户列表,根据该空在线用户列表计算得到摘要值,并向NDN网络中发送同步请求包,所述同步请求包包括空在线用户列表的摘要值。[0023]若当前用户在预设时间内没有获取到其它在线用户根据所述同步请求包返回的同步数据包时,当前用户将自身加入到在线用户列表中,并更新当前在线用户列表的摘要值;若当前用户在预设时间内获取到其它用户根据所述同步请求包返回的同步数据包时,当前用户根据该同步数据包更新当前用户的在线用户列表及其摘要值,之后,当前用户再将自身加入到在线用户列表中,并更新当前在线用户列表的摘要值。[0024]当前用户向NDN网络中发送搜索请求包,所述搜索请求包包括目的用户信息,之后当前用户获取目的用户根据所述搜索请求包返回的搜索结果数据包,所述搜索结果数据包包括当前用户搜索的目标文件的信息。[0025]当前用户根据所述目标文件的信息向NDN网络中发送用于下载目标文件的下载请求包,并获取具有目标文件的在线用户根据所述下载请求包返回的下载数据包,所述下载数据包包括目标文件的分块,之后,当前用户将目标文件的分块拼接得到完整的目标文件。[0026]本申请提供的基于NDN网络架构的P2P文件传输方法,当前用户上线后即可准确地维护其在线用户列表,并且实现在NDN网络中P2P文件的稳定传输。【专利附图】【附图说明】[0027]图1为本申请一种实施例中请求包的命名格式示意图;[0028]图2为本申请一种实施例中基于NDN网络架构的P2P文件传输方法流程示意图;[0029]图3为本申请一种实施例中用户发现机制的方法流程示意图;[0030]图4为本申请一种实施例中目标文件传输的基本过程示意图;[0031]图5为本申请一种实施例中采用基于NDN网络架构的P2P文件传输方法时的平均传输往返延迟时间示意图;[0032]图6为本申请一种实施例中采用基于NDN网络架构的P2P文件传输方法时的平均下载速度示意图;[0033]图7为本申请一种实施例中采用基于NDN网络架构的P2P文件传输方法时的网络负载示意图。【具体实施方式】[0034]NDN协议:NamedDataNetworking,命名数据网络传输协议,NDN亦称为Content-CentricNetworking(CCN),NDN协议框架以网络中传播的数据为核心元素,依靠数据本身的信息通过构建合理有效的命名来完成数据传输,而不再需要关注数据的物理位置。对应的,使用NDN协议进行数据传输的网络称为NDN网络。[0035]由于NDN协议框架以传播的数据为核心元素的特点以及“接收端驱动”的设计思想与P2P文件传输功能有着天然的相似性,所以将NDN协议与P2P文件传输结合便成为了一种可能。本申请实施例中,将NDN协议应用到P2P文件传输中,旨在解决上面提到的现有P2P文件传输尚存在的几个主要问题。[0036]目前NDN协议的相关研究主要有两种思路:一种是通过理论分析和模拟实验验证的方法,探讨协议实现的具体细节,包括如何实现快速路由表查询、如何选择缓存和替换策略、如何交换路由信息等,同时还考虑协议未来大规模部署情况下的可扩展性,与现有网络协议的兼容性,以及如何由当前的互联网架构平稳过渡到NDN网络架构的问题;另一种是通过开发基于NDN协议的应用,来验证NDN协议的可行性和设计的合理性,从应用开发的过程中得到一些反馈,来进一步改进和完善NDN协议,并为将来其它基于NDN协议的应用开发积累经验。[0037]但是,目前尚未有任何公开的或者公认的基于NDN网络的P2P文件传输方法。本申请实施例中,基于NDN协议的已有工程实现CCNx开源代码,通过对在NDN协议中用户发现机制、邻居机制、文件搜索及下载等功能实现方法的一系列设计,展现了一种基于NDN网络的P2P文件传输方法。[0038]为了方便对本申请的理解,本申请实施例中主要以天网Maze文件共享系统为例,来对本申请提供的基于NDN网络架构的P2P文件传输方法进行说明。[0039]为了更好地实现基于NDN网络的P2P文件传输,本申请实施例首先提供了一种NDN协议架构命名原则,其采用具有层次结构化的可变长度标识符(HSVLI)作为命名规则。[0040]基于NDN网络中的请求包的命名格式分为下面两种:[0041]I)指定目的用户:ccnx:/〈APPName>/uni/<UserID>/〈function_parameters>。[0042]2)未指定目的用户(例如广播类的请求包):[0043]ccnx:/〈APPName>/multi/〈function_parameters>0[0044]其中,ccnx:/是NDN协议标识,〈APPName)为应用标识,uni和multi用于区分请求包的类型(指定目的用户或未指定目的用户),<function_parameters>是针对特定功能的实现需要设置的参数值。[0045]以天网Maze文件共享系统为例,其请求包的命名格式如图1所示,其中,Namespace为天网Maze文件共享系统的服务器网址!ApplicationName为ndnmaze;Destination指该请求包发往的目的用户信息,如果该请求包为指定目的用户类型时,则采用uni来标识,如果该请求包为未指定目的用户类型时,则采用multi来标识;Function_Parameters即包括了该请求包携带的功能参数值。[0046]下面通过【具体实施方式】结合附图对本申请作进一步详细说明。[0047]请参考图2,本实施例提供了一种基于NDN网络架构的P2P文件传输方法,包括:[0048]步骤1.1:当前用户向其它在线用户发送同步请求包。当前用户上线后,当前用户创建一个空的在线用户列表,根据该空在线用户列表计算得到摘要值,并向NDN网络中发送同步请求包,该同步请求包包括空在线用户列表的摘要值。[0049]步骤1.2:若当前用户在预设时间内没有获取到其它用户根据同步请求包返回的同步数据包时,当前用户将自身加入到在线用户列表中,并更新当前在线用户列表的摘要值;若当前用户在预设时间内获取到其它用户根据同步请求包返回的同步数据包时,当前用户根据该同步数据包更新当前用户的在线用户列表及其摘要值,之后,当前用户再将自身加入到在线用户列表中,并更新当前在线用户列表的摘要值。[0050]步骤1.3:当前用户向NDN网络中发送搜索请求包,搜索请求包包括目的用户信肩、O[0051]步骤1.4:当前用户获取目的用户根据搜索请求包返回的搜索结果数据包,搜索结果数据包包括当前用户搜索的目标文件的信息。[0052]步骤1.5:当前用户根据目标文件的信息向NDN网络中发送用于下载目标文件的下载请求包。[0053]步骤1.6:当前用户获取具有目标文件的在线用户根据下载请求包返回的下载数据包,下载数据包包括目标文件的分块,之后,当前用户将目标文件的分块拼接得到完整的目标文件。[0054]本实施例中,当前用户每次更新自身的在线用户列表及其摘要值时,还将更新时用户的变化信息记录在更新日志中。相应的,同步数据包包括同步请求包中在线用户列表的摘要值与发送该同步数据包的用户的在线用户列表的摘要值之间用户的变化信息;当前用户根据该同步数据包更新当前用户的在线用户列表及其摘要值,为当前用户根据该同步数据包中用户的变化信息更新当前用户的在线用户列表及其摘要值。[0055]在步骤1.2中,当前用户在预设时间内若接收到其它在线用户的同步请求包,则将该同步请求包缓存在待回复列表中,在当前用户更新完自身的在线用户列表及其摘要值后,再对该同步请求包进行回复。[0056]步骤1.1和步骤1.2即为本申请实施例基于NDN网络架构的P2P文件传输方法中的用户发现机制,请参考图2,为其具体方法流程图,包括:[0057]步骤101:当前用户上线后需要创建一个空的在线用户列表,并根据该空在线用户列表计算得到摘要值,该摘要值即作为同步请求包的功能参数值,此时,摘要值也为空,在一具体实例中,摘要值可以为MD5值。[0058]步骤102:当前用户向NDN网络中发送同步请求包。[0059]步骤103:当前用户是否在预设时间内获取到其它在线用户根据该同步请求包返回的同步数据包,如果是,则转到步骤104,如果否,则转到步骤105。[0060]需要说明的是,当前用户在这段预设时间内,也会收到其它在线用户的同步请求包,此时当前用户将收到的同步请求包保存在本地的PIT(pendinginteresttable,等待回复的请求包列表)里。[0061]步骤104:若当前用户在预设时间内获取到了其它在线用户返回的同步数据包,则根据该同步数据包更新自身的在线用户列表及其摘要值,之后再转到步骤105。[0062]步骤105:若当前用户在预设时间内没有获取到其它在线用户返回的同步数据包,则说明当前用户是系统中的唯一在线用户,直接从步骤103后执行步骤105,否则在执行完步骤104后执行步骤105。此时当前用户将自身加入到在线用户列表中,并更新其摘要值。[0063]步骤106:当前用户将本次更新的用户的变化信息记录到更新日志中,当前用户只要对在线用户列表及其摘要值进行了更新,都需要将该次更新的用户的变化信息记录到更新日志中。[0064]步骤107:当前用户查询本地PIT中是否存在需要回复的其它在线用户的同步请求包,如果是,则转到步骤108,如果否,则转到步骤102。[0065]步骤108:提取该同步请求包中的摘要值。[0066]步骤109:判断同步请求包中携带的摘要值与当前用户的摘要值是否相同,如果是,则转到步骤110,如果否,则转到步骤111。[0067]步骤110:如果同步数据包中携带的摘要值与当前用户的摘要值相同,则将该同步数据包丢弃。[0068]步骤111:当前用户将自身摘要值与待回复的同步请求包中摘要值之间用户的变化信息打包为同步数据包,回复给相应的在线用户。[0069]应当理解,每一个在线用户都需要维护一个在线用户列表,并根据该在线用户列表计算得到摘要值,新上线的用户在线用户列表为空,摘要值也为空。并且所有在线用户都需要定期发送同步请求包进行信息的同步,即如步骤102、步骤111所示,在执行完当前步骤后都转到步骤102。在线用户之间通过交换同步请求包和同步数据包完成在线用户信息的同步过程,每当在线用户列表有变化时,用户都需要根据新的在线用户列表更新摘要值,并将当次更新过程中用户的变化信息记录到更新日志(TransactionLog)中。[0070]在一具体实例中,同步请求包的格式如下:[0071]ccnx:/maze.tianwang.com/ndnmaze/multi/<digest_value>/[0072]由于同步请求包的发送方式为广播式,所以,同步请求包中使用multi作为发送方式的标识,其中〈digeSt_Value>为用户根据自身维护的在线用户列表计算得到的摘要值。[0073]经过以上过程,就完成了在所有在线用户之间同步信息的过程,也就实现了用户上线的功能。并且利用本实施例提供的基于NDN网络架构的P2P文件传输方法,在在线用户进行信息同步时,与现有的P2P文件传输方法相比更加简单,且属于完全去中心化的,省去了心跳服务器这一重要的中央服务器。[0074]本实施例中,优选的,当前用户更新完自身的在线用户列表及其摘要值后,向在线用户发送搜索请求包前,还包括:[0075]当前用户计算自身与其它在线用户的距离,并将该距离记录在在线用户列表中;当前用户向在线用户发送搜索请求包时,当前用户根据自身与其它在线用户的距离,从近到远依次发送搜索请求包。将用户之间的距离记录在在线用户列表中可以通过下面方式:在每个用户的在线用户列表中添加了一个“latency”字段用于记录用户之间的距离。[0076]当前用户可以通过计算自身与其它在线用户之间的节点数量或传输往返延迟时间来计算自身与其它在线用户的距离,当前用户与其它在线用户之间的节点数量越多或传输往返延迟时间越长,则记为当前用户与该在线用户的距离越远,反之,记为当前用户与该在线用户的距离越近。[0077]在一具体实例中,可以通过下面方法计算当前用户与其它在线用户之间的传输往返延迟时间。[0078]I)每个在线用户都维持着一个在线用户列表,当前用户通过依次给在线用户列表中的用户发送一个请求包来发起一次往返延迟测量,请求包的格式如下:[0079]ccnx:/maze,tianwang.com/ndnmaze/uni/<req_measure_latency>/UserID/〈timestamp〉。[0080]User_ID字段表示的是接收该请求包的用户ID,timestamp字段表示的是发送这一请求包时当前用户本机的当前时间。[0081]2)目的用户收到这该请求包后,回复一个空的数据包,该数据包的timestamp字段对请求包的timestamp不做任何修改直接返回。[0082]3)当前用户收到数据包后,提取出timestamp字段的值,接着将收到数据包时的本机时间与timestamp字段的值之差(即传输往返延迟时间)作为节点之间的距离的测量值保存。[0083]在线用户在维护在线用户列表时,可以按照用户之间距离由近到远的顺序进行排序,从而实现本实施例提供的基于NDN网络的P2P文件传输方法中的用户邻居机制。[0084]在步骤1.3和步骤1.4中,当每个在线用户都维护着一个已经实现了邻居机制的在线用户列表时。当前用户可以通过下面两种方式进行文件搜索:[0085]I)在一种实施例中,搜索请求包还包括目的用户的共享目录标识,目标文件的信息包括共享目录标识下的目录内容。这种文件搜索方法为通过用户发现文件:即从在线用户列表中选择一个用户,发送搜索请求包到NDN网络中,并通过NDN网络根据搜索请求包中携带的目的用户信息传输到目的用户,从而获得目的用户共享目录标识下的目录内容。此时,搜索请求包的格式如下:[0086]ccnx:/maze,tianwang.com/ndnmaze/uni/UserID/<share_root>/[0087]其中,由于搜索请求包是向单个目的用户发送的,因此,搜索请求包中使用uni作为发送方式的标识,UserID为目的用户ID,〈sharejoot〉为目的用户的共享目录标识。[0088]以此类推,通过改变搜索请求包中的<share_root>值,便可分别查看同一个目的用户的各级目录内容,然后由用户从中选择感兴趣的目标文件进行下载。[0089]此时,在搜索目标文件的过程中,可以根据当前用户与其它在线用户之间的距离,由用户先查看距离近的在线用户,从近到远直到搜索到目标文件,可以减小目标文件传输(下载)的时间。[0090]2)在另一实施例中,搜索请求包还包括目标文件的搜索关键词,目标文件的信息与搜索关键词匹配。这种文件搜索方法为通过“群发”方式搜索文件:即当前用户首先对返回数据设置一个上限值,接着按照距离从近到远依次向在线用户列表中的用户发送搜索请求包。此时,搜索请求包的格式如下:[0091]ccnx:/maze,tianwang.com/ndnmaze/uni/<UserID>/<keyword_search>/[0092]其中,<keyword_search>为用户设定的搜索关键词。在搜索结束后,返回给当前用户的目标文件的信息即为与该搜索关键词匹配的信息。[0093]当前用户搜索目标文件时获得的返回的目标文件的信息需要包括目标文件的文件名、文件类型、文件大小等信息,在一具体实例中,目标文件的信息为使用XML组织数据信息,其格式片段如下:[0094]〈Filescount=”2”>[0095]〈File〉[0096]〈Name〉编程之美.pdf〈/Name〉[0097]〈Type〉文件〈/Type〉[0098]<Size>12345678</Size>[0099]<Digest>xxxxxxxx</Digest>[0100]〈/File〉[0101]〈File〉[0102]<Name>C++</Name>[0103]〈Type〉目录〈/Type〉[0104]〈/File〉[0105]〈/Files〉[0106]当前用户作为一个客户端,需要将其搜索目标文件的结果展现给用户,因此,当各个搜索结果依次从多个用户返回之后,由于从各个用户获取的搜索结果也是XML格式的,将这些目标文件的信息合并、整理,然后以用户友好的方式展现在客户端界面上。[0107]在一具体实例中,接收到搜索请求包的在线用户可以将每次搜索的结果缓存一定时间,以便于处理相同的搜索请求包再次到来的情况。在收到相同的搜索请求包时便能够直接返回结果,缓存的结果采用LRU(LeastRecentlyUsed近期最少使用算法)策略进行替换。[0108]本实施例中,当前用户根据目标文件的信息向NDN网络中发送用于下载目标文件的下载请求包,包括:当前用户根据目标文件的信息向具有目标文件同一个或两个以上在线用户发送用于下载目标文件的下载请求包。即当前用户可通过单点下载或多点下载的方式实现目标文件的传输。[0109]在进行单点下载时,在当前用户获取到目的用户返回的搜索结果数据包后,发送下载请求包前,还包括:[0110]当前用户向目的用户发送用于获取目标文件版本信息的版本信息请求包,并获取目的用户返回的具有目标文件版本信息的版本信息数据包;下载请求包包括目标文件版本信息。[0111]在进行文件传输时,当前用户首先发送一个不包含版本信息和分段标识的版本信息请求包,版本信息请求包有两方面作用,一是通知目的用户做好准备传输文件,另一方面是通过版本信息请求包获得要目标文件的版本信息。当前用户获取到目标文件的版本信息后,会再次发送下载请求包,下载请求包含有目标文件的版本信息和分段标识。[0112]在进行多点下载时,当前用户在步骤1.4得到的搜索结果数据包中目标文件的信息的前提下,向NDN网络中发送一个基于目标文件的摘要值的下载请求包,此时,下载请求包的格式如下:[0113]ccnx:/maze,tianwang.com/ndnmaze/multi/<fIlejs_digest_value>/[0114]其中,〈file’s_digest_value>为步骤1.4中返回的目标文件的摘要值(如上述目标文件的信息的格式片段片段中的Digest字段)。[0115]请参考图4,为目标文件传输的基本过程,步骤4.1中当前用户向目的用户发送下载请求包以获得目标文件的某一个分块,步骤4.2中目的用户根据步骤4.1中的下载请求包返回携带有相应目标文件分块的下载数据包,步骤4.3为重复步骤4.1和步骤4.2,直到当前用户从目的用户中获取到了目标文件的所有分块。此时,当前用户通过一系列的下载请求包和下载数据包的交换,获取到目标文件的各个分块后,将目标文件的分块拼接得到完整的目标文件。应当理解,此处的目的用户可以指使用单点下载时的单个在线用户,也可以指使用多点下载时的多个在线用户。[0116]需要说明的是,在一具体实例中,对使用多点下载的目标文件大小进行了限定。为了使得多点下载机制获得更好的性能,所以并不是所有的目标文件都需要多点下载。例如,如果目标文件太小(比如小于10M),那么完全没有必要使用多点下载,而且目的用户越多反而可能因为额外网络通信量的增加造成下载速度下降的现象。比如在天网Maze文件共享系统中,小文件在系统中被大量的共享传播,所以这一限定可以提高系统的文件传输性能,是很有意义的。[0117]应当理解,当前用户向在线用户发送请求包或数据包时,只需要向NDN网络中发送该请求包或数据包即可,NDN网络再根据该请求包或数据包中指向的在线用户转发给相应的在线用户。[0118]本申请实施例基于NDN的已有工程实现CCNx,通过上述方法实现NDN网络下P2P文件的传输,该基于NDN网络的P2P文件传输方法能够充分利用NDN协议中的ContentStore机制,对相同的应用数据进行复用,从而减少网络通信量,降低下载延迟,并提高数据传输效率。[0119]利用本实施例提供的基于NDN网络架构的P2P文件传输方法,在在线用户进行信息同步时,与现有的P2P文件传输方法相比更加简单,且属于完全去中心化的,省去了心跳服务器这一重要的中央服务器。进行目标文件搜索时也不需要完全依赖中央节点,整体上更加的弱中心化,减少了对于服务器负载的需求,也能够减少因为中央节点故障造成服务失效的影响。[0120]位置无关性(Location-1ndependence)是NDN网络的核心设计思想之一,也是与TCP/IP网络架构最大的不同。本申请实施例中,P2P文件传输方法基于NDN网络,无论是浏览在线用户的目录,还是搜索、下载文件等功能的实现方法,其过程都不需要再关注IP地址、端口等位置信息。这一特性在很大程度上降低了网络应用开发工作的压力。[0121]本申请实施例提供的方法可以利用NDN网络架构下自然的网络连通性,从而解决内网穿透的问题。NDN协议的解决方式是类似中继转发的方法,但其实现方式更加自然,无需实现复杂的处理逻辑,只需要简单转发请求包而不需要进行任何修改,数据包按照请求包的反向路径返回即可。在NDN网络环境下,内网用户将不再具有特殊性,其存在就不再成为降低下载成功率和搜索有效率的因素。在P2P文件传输的实现过程中,也无需再处理大量与网络连通性相关的事务逻辑,这对于降低实现复杂度和提高用户体验都非常有益处。[0122]本申请实施例提供了两种方式来定义和测量在线用户间的距离,进而实现邻居机制,用于“就近下载”。一种方法是依据用户间的节点数量(或跳数),节点数量越多通常距离也越远。另一种方法是计算用户交互时的时间延迟。相比于目前TCP/IP网络架构下该机制的实现来讲,本申请实施例中的方法更可靠,更精确。[0123]另外,请参考图4-7,本申请实施例提供的方法,其平均传输往返延迟、平均下载速度和网络负载三个指标上的性能表现优于现有TCP/IP网络架构下的P2P文件传输方法。[0124]图5中,曲线501为采用本申请实施例提供的基于NDN网络架构的P2P文件传输方法时的平均传输往返延迟时间,曲线502为采用传统的TCP/IP网络架构的P2P文件传输方法时的平均传输往返延迟时间。[0125]图6中,曲线601为采用本申请实施例提供的基于NDN网络架构的P2P文件传输方法时的平均下载速度,曲线602为采用传统的TCP/IP网络架构的P2P文件传输方法时的平均下载速度。[0126]图7中,曲线700为理想情况(idealcondition)下的网络负载,曲线701为采用本申请实施例提供的基于NDN网络架构的P2P文件传输方法时的网络负载,曲线702为采用传统的TCP/IP网络架构的P2P文件传输方法时的网络负载。[0127]现有基于TCP/IP网络架构的P2P文件传输方法为了提高数据传输速度采用同时建立多个TCP连接的方式,而这种方法导致网络带宽的大量消耗。而且在TCP/IP协议中,由于每次通信所传输的数据包中都同时包含了发送用户和接收用户的IP地址,这就使得每一次通信所包含的数据只针对本次会话有效。因此当出现对同一数据的多个请求时,同一份数据就不得不重复传输多次,这种情况给中央服务器带来很大的负担,同时也造成了大量的带宽浪费。[0128]相比之下,本申请实施例提供的基于NDN网络架构的P2P文件传输方法,在目标文件的搜索和下载过程中,请求包的名字中并不包含当前用户的信息,也就是说,当有多个用户请求查看同一个共享目录或者请求下载同一个目标文件时,也就会发送相同的请求包到NDN网络中,相应的,同一份数据包可以满足网络中所有相同的请求。这种情况充分利用了NDN协议给数据命名的特性及其内容缓存和分发机制,对相同的应用数据进行复用,避免了相同数据的重复传输,有效缓解了热门用户在被浏览目录时的访问压力以及热门资源在被下载时的带宽压力等问题,从而大大减少了网络通信量,降低平均下载延迟,并提高了数据传输效率。[0129]本领域技术人员可以理解,上述实施方式中各种方法的全部或部分步骤可以通过程序来指令相关硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘或光盘等。[0130]以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属【
技术领域
】的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。【权利要求】1.一种基于NDN网络架构的P2P文件传输方法,其特征在于,包括:当前用户创建一个空的在线用户列表,根据该空在线用户列表计算得到摘要值,并向NDN网络中发送同步请求包,所述同步请求包包括空在线用户列表的摘要值;若当前用户在预设时间内没有获取到其它在线用户根据所述同步请求包返回的同步数据包时,当前用户将自身加入到在线用户列表中,并更新当前在线用户列表的摘要值;若当前用户在预设时间内获取到其它用户根据所述同步请求包返回的同步数据包时,当前用户根据该同步数据包更新当前用户的在线用户列表及其摘要值,之后,当前用户再将自身加入到在线用户列表中,并更新当前在线用户列表的摘要值;当前用户向NDN网络中发送搜索请求包,所述搜索请求包包括目的用户信息,之后当前用户获取目的用户根据所述搜索请求包返回的搜索结果数据包,所述搜索结果数据包包括当前用户搜索的目标文件的信息;当前用户根据所述目标文件的信息向NDN网络中发送用于下载目标文件的下载请求包,并获取具有目标文件的在线用户根据所述下载请求包返回的下载数据包,所述下载数据包包括目标文件的分块,之后,当前用户将目标文件的分块拼接得到完整的目标文件。2.如权利要求1所述的方法,其特征在于,所述搜索请求包还包括目的用户的共享目录标识,所述目标文件的信息包括所述共享目录标识下的目录内容。3.如权利要求1所述的方法,其特征在于,所述搜索请求包还包括目标文件的搜索关键词,所述目标文件的信息与所述搜索关键词匹配。4.如权利要求1所述的方法,其特征在于,在当前用户获取到目的用户返回的搜索结果数据包后,发送下载请求包前,还包括:向目的用户发送用于获取目标文件版本信息的版本信息请求包,并获取目的用户返回的具有目标文件版本信息的版本信息数据包;所述下载请求包包括所述目标文件版本信肩、O5.如权利要求1所述的方法,其特征在于,当前用户根据所述目标文件的信息向NDN网络中发送用于下载目标文件的下载请求包,包括:当前用户根据所述目标文件的信息向具有目标文件同一个或两个以上在线用户发送用于下载目标文件的下载请求包。6.如权利要求1所述的方法,其特征在于,当前用户每次更新自身的在线用户列表及其摘要值时,还将更新时用户的变化信息记录在更新日志中;所述同步数据包包括同步请求包中在线用户列表的摘要值与发送该同步数据包的用户的在线用户列表的摘要值之间用户的变化信息;所述当前用户根据该同步数据包更新当前用户的在线用户列表及其摘要值,为当前用户根据该同步数据包中用户的变化信息更新当前用户的在线用户列表及其摘要值。7.如权利要求1所述的方法,其特征在于,当前用户在所述预设时间内若接收到其它在线用户的同步请求包,则将该同步请求包缓存在待回复列表中,在当前用户更新完自身的在线用户列表及其摘要值后,再对该同步请求包进行回复。8.如权利要求1-7所述的方法,其特征在于,当前用户更新完自身的在线用户列表及其摘要值后,向在线用户发送搜索请求包前,还包括:当前用户计算自身与其它在线用户的距离,并将该距离记录在在线用户列表中;当前用户向在线用户发送搜索请求包时,当前用户根据自身与其它在线用户的距离,从近到远依次发送所述搜索请求包。9.如权利要求8所述的方法,其特征在于,当前用户计算自身与其它在线用户的距离,包括:当前用户计算自身与其它在线用户之间的节点数量或传输往返延迟时间,当前用户与其它在线用户之间的节点数量越多或传输往返延迟时间越长,则记为当前用户与该在线用户的距离越远,反之,记为当前用户与该在线用户的距离越近。【文档编号】H04L29/08GK103457999SQ201310339690【公开日】2013年12月18日申请日期:2013年8月6日优先权日:2013年8月6日【发明者】雷凯,李立华,于倩申请人:北京大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1