基于NDN网络的文件下载方法、装置、节点、终端
技术领域
本发明实施例涉及电子通讯技术领域,具体涉及一种基于NDN网络的文件下载方法、装置、节点、终端。
背景技术
在现有技术中,每当从下载文件的时候,一般是先和服务器建立连接,从服务器下载文件,中间的网络设备只对下载的文件进行网络报文转发,即所有的下载需要都需要集中式服务器来提供下载服务。
现在技术中的下载模式,对集中式服务器带来很大的服务压力。特别是下载的超大文件时对集中式服务器的要求较高。
命名数据网络(Named Data Networking,NDN)供一种基于数据的架构,以数据作为网络中的实体,采用“名字”作为数据的唯一标识。NDN定义了两种格式的数据,一种是用于发送请求的数据,可称为“兴趣包(Interest packet)”;另一种是包含内容的数据,可称为“数据包(data packet)”。每种格式的数据都采用名字作为唯一标识,例如:兴趣包的名字用于唯一标识该兴趣包获取内容的请求,数据包的名字用于唯一标识该数据包负载的内容。
发明内容
为此,本发明实施例提供一种基于NDN网络的文件下载方法、装置、节点、终端及存储介质,以解决现有技术中由于每次下载都需要访问集中式服务器而造成的服务器压力大的问题。
为了实现上述目的,本发明的实施方式提供如下技术方案:
在本发明的实施方式的第一方面中,提供了一种基于NDN网络的文件下载方法,包括:第一NDN节点从第二NDN节点或请求者终端接收文件分片下载请求,所述文件分片下载请求包括文件分片标识;当所述第一NDN节点存储了所述文件分片标识对应的文件分片时,所述第一NDN节点向所述第二NDN节点或所述请求者终端发送所述文件分片标识对应的文件分片;当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,所述第一NDN节点向第三NDN节点或文件服务器发送所述文件分片下载请求;当所述第一NDN节点从所述第二NDN节点接收所述文件分片下载请求时,所述文件分片下载请求为所述第二NDN节点从所述请求者终端接收到的信息,所述第二NDN节点没有存储所述文件分片标识对应的文件分片。
在本发明的一个实施例中,当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,在所述第一NDN节点向第三NDN节点或文件服务器发送所述文件分片标识之后,所述文件下载方法还包括:所述第一NDN节点从所述第三NDN节点或所述文件服务器接收所述文件分片标识对应的文件分片;所述第一NDN节点向所述第二NDN节点或所述请求者终端发送所述文件分片标识对应的文件分片。
在本发明的另一实施例中,所述文件分片标识为所述请求者终端从所述文件服务器接收的信息;所述文件分片标识对应的文件分片为所述文件服务器分片处理得到的文件分片。
在本发明的实施方式的第二方面中,提供了一种基于NDN网络的文件下载方法,包括:请求者终端向第一NDN节点或第二NDN节点发送文件分片下载请求,所述文件分片下载请求包括文件分片标识;当所述请求者终端向第二NDN节点发送文件分片下载请求时,且当所述第二NDN节点没有存储所述文件分片标识对应的文件分片时,所述第二NDN节点用于向第一NDN节点发送所述文件分片下载请求;当所述第一NDN节点存储了所述文件分片标识对应的文件分片时,所述请求者终端从所述第一NDN节点接收所述文件分片标识对应的文件分片;当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,所述第一NDN节点用于向第三NDN节点或文件服务器发送所述文件分片下载请求。
在本发明的一个实施例中,当所述第一NDN节点没有存储所述文件分片标识对应的文件分片,且所述请求者终端向第一NDN节点发送文件分片下载请求时,所述请求者终端从所述第一NDN节点接收所述文件标识对应的文件分片,所述文件标识对应的文件分片为所述第一NDN节点从所述第三NDN节点或所述文件服务器接收得到的信息;当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,且所述请求者终端向第二NDN节点发送文件分片下载请求,且所述第二NDN节点没有存储所述文件分片标识对应的文件分片时,所述请求者终端从所述第二NDN节点接收所述文件标识对应的文件分片,所述文件标识对应的文件分片为所述第一NDN节点从所述第三NDN节点或所述文件服务器接收得到由所述第一NDN节点转发给所述第二NDN节点的信息。
在本发明的实施方式的第三方面中,提供了一种基于NDN网络的文件下载装置,包括:第一接收单元,用于从第二NDN节点或请求者终端接收文件分片下载请求,所述文件分片下载请求包括文件分片标识;第一发送单元,用于当第一NDN节点存储了所述文件分片标识对应的文件分片时,向所述第二NDN节点或所述请求者终端发送所述文件分片标识对应的文件分片;第一发送单元还用于当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,向第三NDN节点或文件服务器发送所述文件分片下载请求;当所述第一接收单元从所述第二NDN节点接收所述文件分片下载请求时,所述文件分片下载请求为所述第二NDN节点从所述请求者终端接收到的信息,所述第二NDN节点没有存储所述文件分片标识对应的文件分片。
在本发明的实施方式的第四方面中,提供了一种基于NDN网络的文件下载装置,包括:第二发送单元,用于向第一NDN节点或第二NDN节点发送文件分片下载请求,所述文件分片下载请求包括文件分片标识;当所述第二发送单元向第二NDN节点发送文件分片下载请求时,且当所述第二NDN节点没有存储所述文件分片标识对应的文件分片时,所述第二NDN节点用于向第一NDN节点发送所述文件分片下载请求;第二接收单元,用于当所述第一NDN节点存储了所述文件分片标识对应的文件分片时,从所述第一NDN节点接收所述文件分片标识对应的文件分片;当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,所述第一NDN节点用于向第三NDN节点或文件服务器发送所述文件分片下载请求。
在本发明的实施方式的第五方面中,提供了一种NDN节点,包括第一处理器和第一存储器;其中,所述第一存储器存储代码;所述第一处理器执行所述代码,用于执行第一方面所述的文件下载方法。
在本发明的实施方式的第六方面中,提供了一种终端,包括第二处理器和第二存储器;其中,所述第二存储器存储代码;所述第二处理器执行所述代码,用于执行第二方面所述的文件下载方法。
在本发明的实施方式的第七方面中,提供了一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令被计算机执行时,使所述计算机执行第一方面所述的文件下载方法或第二方面所述的文件下载方法。
根据本发明的实施方式,本发明实施例提供的基于NDN网络的下载方法、装置、节点、终端及存储介质具有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
图1为本发明的一实施例提供的一种基于NDN网络的文件下载方法流程图;
图2为本发明的另一实施例提供的基于NDN网络的文件下载装置结构示意图;
图3为本发明的另一实施例提供的基于NDN网络的文件下载装置结构示意图;
图4为本发明的另一实施例提供的一种NDN节点结构示意图;
图5为本发明的另一实施例提供的一种终端结构示意图。
图中:21.第一接收单元,22.第一发送单元,31.第二发送单元,32.第二接收单元,41.第一处理器,42.第一存储器,51.第二处理器,52.第二存储器。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的基于NDN网络的文件下载方法适用的架构中包括多个NDN节点,多个NDN节点中的至少一个节点可以为文件服务器。多个NDN节点中的一个或多个节点可以为请求者终端。请求者终端为用户用来下载文件的终端。
接下来在本发明实施例的方案进行具体介绍。
实施例1
本实施例提供了一种基于NDN网络的文件下载方法,该方法的执行主体为NDN网络中的一个NDN节点。参考图1,该文件下载方法包括如下步骤。
步骤11、第一NDN节点从第二NDN节点或请求者终端接收文件分片下载请求,所述文件分片下载请求包括文件分片标识。
一个文件分片下载请求包括一个文件分片标识,一个文件分片标识用于标识一个文件分片,即一个文件分片下载请求用于请求下载一个文件分片。
所述文件分片标识为所述请求者终端从所述文件服务器接收的信息;所述文件分片标识对应的文件分片为所述文件服务器分片处理得到的文件分片。
文件服务器可以将发布的文件进行分片和加密处理。分片处理可以按照预设的分片算法进行分片,该预设的算法可以为现有技术中的分片算法,例如,一个100MB的文件,可以分成10个文件分片,每个文件分片为10MB。文件服务器为每个文件分片生成一个在整个NDN网络中唯一的文件标识。
文件服务器可以将文件的名称(一个文件的名称在整个NDN网络中是唯一的,用于标识唯一的一个文件)和/或文件分片标识发送至请求者终端。当文件服务器只将文件的名称发送给请求者终端时,请求者终端可以根据文件的名称向文件服务器请求该文件对应的文件分片的文件分片标识。
具体地,文件服务器可以发送兴趣包请求信息,所述兴趣包请求信息包括文件的信息、订阅者标识。该订阅者标识对应的订阅者可以作为请求下载文件的请求者。兴趣包请求信息为文件服务器发送的用于请求订阅者发送兴趣包的信息。文件的信息可以包括文件的名称和/或文件的文件分片的文件分片标识。
订阅者标识为NDN网络中一个唯一的标识码,用于唯一标识订阅者。
在所述发送兴趣包请求信息之前,文件服务器获取所述文件的信息、订阅者信息;根据所述文件的信息、订阅者信息生成所述订阅者标识。在该示例中,某个或某几个订阅者订阅了某方面的内容,文件服务器在发布文件时,获取发布的文件的信息和订阅者的信息,从而可以得出订阅了该文件的订阅者,或者对该文件有兴趣的订阅者,进而可以这些订阅者的订阅者标识。
所述根据所述文件的信息、订阅者信息生成所述订阅者标识包括根据所述文件的信息、订阅者信息和参考信息生成所述订阅者标识,所述参考信息包括发布者信息和/或随机值;所述文件的信息还可以包括以下任一种或多种:所述文件的文件名、md5值、存储路径、URL、发布者、发布时间。所述文件的文件名、md5值、存储路径、URL、发布者、发布时间等可以用于确定发布的文件。
在所述发送兴趣包请求信息之后,当在所述发送兴趣包请求信息之后的预设时间内没有接收到确认信息时,发送所述兴趣包请求信息。该示例中,在订阅者的终端接收到兴趣包请求信息时,向文件服务器反馈确认信息,以表示收到了兴趣包请求信息。如果在预设时间内,文件服务器没有接收到确认信息,则可以认为订阅者没有接收到兴趣包请求信息,即兴趣包请求信息发送失败,进而再次发送兴趣包请求信息。预设时间可以为管理者预先设置的时间,也可以为文件服务器对NDN网络状况进行评估,根据评估结果设置的时间。对NDN网络状况的评估也可以参照现有技术中网络评估方法,此处不再赘述。
当兴趣包请求信息中的文件信息只包括文件的名称时,在发送了兴趣包请求信息之后,文件服务器可以从订阅者所用终端接收兴趣包,所述兴趣包为所述订阅者标识对应的订阅者根据所述文件的信息发送的信息。兴趣包用于请求文件的名称对应的文件分片的文件分片标识。
即,在本实施例中,在没有接收到兴趣包请求信息时,不发送兴趣包,只有在接收到兴趣包请求信息时,才发送兴趣包。
兴趣包请求信息中包括订阅者标识,因此,兴趣包请求信息在NDN网络中会被转发到订阅者所使用的终端。
文件服务器接收到兴趣包后,向所述订阅者发送数据包,所述数据包包括文件分片标识。
当订阅者获取了一个文件的所有文件分片标识后,如果想下文件,可以向NDN节点发送文件分片下载请求,其中包括文件分片标识。此时,上述订阅者可以成为请求者,其使用的终端称为请求者终端。
当请求下载文件时,请求者终端需要向NDN网络中的NDN节点发送该文件的所有文件分片的文件分片下载请求。
请求者终端可以向一个NDN节点发送该文件的所有文件分片的文件分片下载请求。
请求者终端也可以将该文件的所有文件分片的文件分片下载请求发给不同的NDN节点,并且一个NDN节点接收的文件分片下载请求的数量不受限制。例如,一个文件具有10个文件分片,相应的需要发送10个文件分片下载请求,请求者终端可以将10个文件分片下载请求发送给10个NDN节点,即每个NDN节点接收1个文件分片下载请求。再例如,一个文件具有10个文件分片,相应的需要发送10个文件分片下载请求,请求者终端可以将10个文件分片下载请求发送给5个NDN节点,即每个NDN节点接收2个文件分片下载请求。再例如,一个文件具有10个文件分片,相应的需要发送10个文件分片下载请求,请求者终端可以将10个文件分片下载请求发送给5个NDN节点,其中,一个NDN节点接收6个文件分片下载请求,另外四个NDN节点分别接收一个文件分片下载请求。
步骤12、当所述第一NDN节点存储了所述文件分片标识对应的文件分片时,所述第一NDN节点向所述第二NDN节点或所述请求者终端发送所述文件分片标识对应的文件分片;当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,所述第一NDN节点向第三NDN节点或文件服务器发送所述文件分片下载请求。
当所述第一NDN节点从所述第二NDN节点接收所述文件分片下载请求时,所述文件分片下载请求为所述第二NDN节点从所述请求者终端接收到的信息,所述第二NDN节点没有存储所述文件分片标识对应的文件分片。
当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,在所述第一NDN节点向第三NDN节点或文件服务器发送所述文件分片标识之后,所述文件下载方法还包括:所述第一NDN节点从所述第三NDN节点或所述文件服务器接收所述文件分片标识对应的文件分片;所述第一NDN节点向所述第二NDN节点或所述请求者终端发送所述文件分片标识对应的文件分片。
举例而言,如第二NDN节点从请求者终端接收文件分片下载请求,并根据其中的文件分片标识查找自身是否缓存了此文件分片,如果缓存了此文件分片,则将此文件分片发送给请求者终端,如果没有缓存此文件分片,将文件分片下载请求转发此请求给其他NDN节点,如转发给第一NDN节点,第一NDN节点重复第二NDN节点的操作,如果第一NDN节点也没有缓存次文件分片,第一NDN节点将文件分片下载请求转发给第三NDN节点或者文件服务器。
当第一NDN节点将文件分片下载请求转发给文件服务器时,文件服务器必定包含文件服务器发布的文件的所有文件分片,所以文件服务器会响应第一NDN节点转发的文件分片下载请求而将相应文件分片发送给第一NDN节点(第一NDN节点为文件服务器的文件分片请求者),第一NDN节点获得文件分片之后会将此文件分片发送给第二NDN节点(第二NDN节点为第一NDN节点的文件分片请求者)(每个NDN节点会有记录谁向自己请求过什么文件分片),第二NDN节点将文件分片发送给请求者终端。
当第一NDN节点将文件分片下载请求转发给第三NDN节点时,第三NDN节点重复第一节点的操作。当请求到文件分片时,文件分片的传输路径也如上文所述。
文件分片传输路径上的所有NDN节点都会缓存此文件分片,当请求者终端再次向其中任一NDN节点请求此文件分片时,该NDN节点可直接响应请求者终端,将此文件分片发送给请求者终端。
需要说明的是,在本实施例中,文件缓存为一种文件存储方式。
本发明实施例提供的基于NDN网络的下载方法具有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
实施例2
本实施例提供了一种基于NDN网络的文件下载方法,该文件下载方法的执行主体为请求者终端。该文件下载方法包括:请求者终端向第一NDN节点或第二NDN节点发送文件分片下载请求,所述文件分片下载请求包括文件分片标识;当所述请求者终端向第二NDN节点发送文件分片下载请求时,且当所述第二NDN节点没有存储所述文件分片标识对应的文件分片时,所述第二NDN节点用于向第一NDN节点发送所述文件分片下载请求;当所述第一NDN节点存储了所述文件分片标识对应的文件分片时,所述请求者终端从所述第一NDN节点接收所述文件分片标识对应的文件分片;当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,所述第一NDN节点用于向第三NDN节点或文件服务器发送所述文件分片下载请求。
在一个示例中,当所述第一NDN节点没有存储所述文件分片标识对应的文件分片,且所述请求者终端向第一NDN节点发送文件分片下载请求时,所述请求者终端从所述第一NDN节点接收所述文件标识对应的文件分片,所述文件标识对应的文件分片为所述第一NDN节点从所述第三NDN节点或所述文件服务器接收得到的信息;当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,且所述请求者终端向第二NDN节点发送文件分片下载请求,且所述第二NDN节点没有存储所述文件分片标识对应的文件分片时,所述请求者终端从所述第二NDN节点接收所述文件标识对应的文件分片,所述文件标识对应的文件分片为所述第一NDN节点从所述第三NDN节点或所述文件服务器接收得到由所述第一NDN节点转发给所述第二NDN节点的信息。
本实施例提供的文件下载方法可以参考实施例1记载的内容实现,此处不再赘述。
本实施例提供的基于NDN网络的文件下载方法有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
实施例3
本实施例提供了一种基于NDN网络的文件下载装置,如图2所示,包括:
第一接收单元21,用于从第二NDN节点或请求者终端接收文件分片下载请求,所述文件分片下载请求包括文件分片标识;
第一发送单元22,用于当第一NDN节点存储了所述文件分片标识对应的文件分片时,向所述第二NDN节点或所述请求者终端发送所述文件分片标识对应的文件分片;
第一发送单元22还用于当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,向第三NDN节点或文件服务器发送所述文件分片下载请求;
当所述第一接收单元21从所述第二NDN节点接收所述文件分片下载请求时,所述文件分片下载请求为所述第二NDN节点从所述请求者终端接收到的信息,所述第二NDN节点没有存储所述文件分片标识对应的文件分片。
本实施例提供的基于NDN网络的文件下载装置各功能单元的功能可以参考实施例1记载的内容实现,此处不再赘述。
本实施例提供的基于NDN网络的文件下载装置有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
实施例4
本实施例提供了一种基于NDN网络的文件下载装置,如图3所示,包括:
第二发送单元31,用于向第一NDN节点或第二NDN节点发送文件分片下载请求,所述文件分片下载请求包括文件分片标识;
当所述第二发送单元31向第二NDN节点发送文件分片下载请求时,且当所述第二NDN节点没有存储所述文件分片标识对应的文件分片时,所述第二NDN节点用于向第一NDN节点发送所述文件分片下载请求;
第二接收单元32,用于当所述第一NDN节点存储了所述文件分片标识对应的文件分片时,从所述第一NDN节点接收所述文件分片标识对应的文件分片;
当所述第一NDN节点没有存储所述文件分片标识对应的文件分片时,所述第一NDN节点用于向第三NDN节点或文件服务器发送所述文件分片下载请求。
本实施例提供的基于NDN网络的文件下载装置各功能单元的功能可以参考实施例1和实施例2记载的内容实现,此处不再赘述。
本实施例提供的基于NDN网络的文件下载装置有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
实施例5
本实施例提供了一种NDN节点,如图4所示,包括第一处理器41和第一存储器42;其中,
所述第一存储器42存储代码;
所述第一处理器41执行所述代码,用于执行实施例1所述的文件下载方法。
本实施例提供的NDN节点有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
实施例6
本实施例提供了一种终端,如图5所示,包括第二处理器51和第二存储器52;其中,
所述第二存储器52存储代码;
所述第二处理器51执行所述代码,用于执行实施例1所述的文件下载方法。
本实施例提供的终端有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
实施例7
本实施例提供了一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令被计算机执行时,使所述计算机执行实施例1所述的文件下载方法或实施例2所述的文件下载方法。
本实施例提供的存储程序的计算机可读存储介质有如下优点:先尝试从一个NDN节点下载文件分片,当该NDN节点没有存储文件分片时,再尝试从其他NDN节点下载文件分片,从而无需每次下载都由文件服务器进行处理,缓解了文件服务器的服务压力。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。