一种kad网络资源信息的获取方法及系统的制作方法

文档序号:7778960阅读:335来源:国知局
一种kad网络资源信息的获取方法及系统的制作方法
【专利摘要】本发明提供一种KAD网络资源信息的获取方法及系统。该方法包括:在KAD网络的节点ID空间内选取n个均匀分布的节点ID,构造相应的n个模拟节点加入所述KAD网络,其中n为正整数。由所述模拟节点监听所述KAD网络,以及由所述模拟节点解析其他节点发来的资源信息存储请求消息并且获取资源信息。本发明在加快信息获取速度的同时,可以较全面地得到KAD网络中的资源信息。
【专利说明】—种KAD网络资源信息的获取方法及系统
【技术领域】
[0001]本发明涉及对等网络技术,尤其涉及一种KAD网络资源信息的获取方法及系统。【背景技术】
[0002]KAD (Kademlia)协议是DHT技术的一种实现,eMule从v0.40版本开始加入了对KAD协议的支持(简称eMule-KAD)。随着eMule的普及,KAD已成为目前广泛部署和应用的DHT网络,据统计eMule-KAD中同时在线的节点数可高达5百万。
[0003]在KAD网络中,每个用户都可以与网络中的其他用户共享自己的资源。由于KAD网络中的节点数量巨大,其中传递的资源数量更是数以亿计。如何在海量的信息中较全面地获取资源(例如关键词资源或文件资源信息)信息,是本领域的一个技术难点。目前,一种方法是通过节点监听消息来获取资源信息,但是一个节点能监听和获取到的信息有限,这是因为KAD网络中的资源是向离该资源ID较近的节点上发布的。为了获取较全面的信息,另一种方法是在KAD网络中选择多个主机节点,在每个节点上启动一个监测程序,然而这样做的弊端是代价太高。

【发明内容】

[0004]为解决现有技术中存在的问题,根据本发明的一个实施例,提供一种KAD网络资源信息的获取方法,该方法包括:
[0005]步骤I)、在KAD网络的节点ID空间内选取n个均匀分布的节点ID,构造相应的n个模拟节点加入所述KAD网络,其中n为正整数;
[0006]步骤2)、由所述模拟节点监听所述KAD网络;以及
[0007]步骤3)、由所述模拟节点解析其他节点发来的资源信息存储请求消息并且获取资源信息。
[0008]在一个实施例中,步骤3)包括:当所述模拟节点接收到其他节点发来的消息时,判断该消息的类型。
[0009]如果是查询请求消息,本文中查询请求消息指资源存储的节点查询请求消息,则从所有模拟节点中选择节点ID与所述查询请求消息中包括的资源ID距离较近的一个或多个模拟节点,并且将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点;如果是资源信息存储请求消息,则解析该消息并且获取资源信息。
[0010]在一个实施例中,所述查询请求消息包括:消息类型、资源ID,和发送所述查询请求消息的节点的节点ID。在一个实施例中,所述资源信息存储请求消息包括:消息类型,和关键词资源信息或文件资源信息。
[0011]在一个实施例中,步骤3)中,在将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点之后,还包括:由发送所述查询请求消息的节点向所选择的一个或多个模拟节点发送与所述资源ID相对应的资源信息存储请求消息。
[0012]在一个实施例中,步骤3)中,在解析资源信息存储请求消息并且获取资源信息之后,还包括:由接收所述资源信息存储请求消息的模拟节点将获取的资源信息发送给资源统计服务器。
[0013]在进一步的实施例中,n的值为32。
[0014]在一个实施例中,所述方法还包括:
[0015]步骤4)、结束监听所述KAD网络。
[0016]根据本发明的一个实施例,还提供一种KAD网络资源信息的获取系统,包括:
[0017]模拟节点构造模块,用于在KAD网络的节点ID空间内选取n个均匀分布的节点ID,构造相应的n个模拟节点加入所述KAD网络,其中n为正整数;以及
[0018]监听模块,用于由所述模拟节点监听所述KAD网络;以及由所述模拟节点解析其他节点发来的资源信息存储请求消息并且获取资源信息。
[0019]在一个实施例中,所述监听模块用于当所述模拟节点接收到其他节点发来的消息时,判断该消息的类型;如果是资源存储的节点查询请求消息,则从所有模拟节点中选择节点ID与所述查询请求消息中包括的资源ID距离较近的一个或多个模拟节点,并且将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点;如果是资源信息存储请求消息,则解析该消息并且获取资源信息。
[0020]在一个实施例中,所述监听模块还用于:在将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点之后,由发送所述查询请求消息的节点向所选择的一个或多个模拟节点发送与所述资源ID相对应的资源信息存储请求消息。
[0021]在一个实施例中,所述监听模块还用于:在解析资源信息存储请求消息并且获取资源信息之后,由接收所述资源信息存储请求消息的模拟节点将获取的资源信息发送给资源统计服务器。
[0022]采用本发明可以达到如下的有益效果:
[0023]本发明通过在KAD网络中加入均匀分布的多个模拟节点来监听消息,从而获得该KAD网络中的资源信息。在加快资源信息获取速度的同时,可以较全面地获得KAD网络中的资源信息。
【专利附图】

【附图说明】
[0024]图1是KAD网络中资源检索信息交互示意图;
[0025]图2是根据本发明的一个实施例,在KAD网络中均匀分布的模拟节点的示意图;
[0026]图3是根据本发明的一个实施例,由模拟节点应答资源存储节点的查询请求消息的方法的流程图;以及
[0027]图4是根据本发明一个实施例,由模拟节点获取资源信息的方法的流程图。【具体实施方式】
[0028]下面结合附图和具体实施例对本发明加以说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0029]在描述本发明提供的KAD网络资源信息的获取方法以及系统之前,先简要说明KAD协议中的几个模块:
[0030](I) KAD 节点:[0031]在KAD网络中,采用128位的二进制字符串来表示一个节点ID(或称用户ID)。节点ID通常是在该节点第一次启动时通过MD4哈希函数生成,哈希的随机性保证了节点的均匀性和无碰撞。网络中节点ID可以组成一个查找二叉树,节点按照各自的ID前缀分布在这个二叉树上,可由节点间的异或运算来跳跃式查找的对于指定节点ID的搜索。
[0032](2)关键词资源
[0033]关键词资源用于索引文件资源的信息,其形式可以为〈key,value〉,其中key是将哈希函数作用于由分词规则分割的关键词而生成的ID值,value则包括了含有该关键词的文件资源的一系列信息,如文件名、文件大小以及文件ID等。
[0034](3)文件资源
[0035]文件资源用于索引下载源信息,其形式为〈key,value〉,其中key为该文件的内容根据MD4哈希函数计算得到的128位ID值,value包括共享此文件的节点的一系列信息,如节点ID,IP地址以及端口等。下文中的资源ID是关键词资源ID (key)和文件资源ID(key)的统称。
[0036](4)资源检索
[0037]在进行关键词资源检索时,KAD会根据MD4哈希函数计算出该关键词的哈希值,通过迭代查找(发送KADEMLIA_REQ消息)找到位于关键词ID偏移区间内的节点后,向其发送KADEMLIA_SEARCH_REQ 或 KADEMLIA2_SEARCH_KEY_REQ 请求消息,其消息交互如图1 所示。当用户选择某个文件准备下载时,KAD便开始执行文件资源的检索过程,过程与关键词检索类似。
[0038]根据本发明的一个实施例,提供一种KAD网络资源信息的获取方法。简要概括,该方法通过在KAD网络中加入均匀分布的模拟节点来监听KAD网络上其他节点(也称作资源发布节点)发送的消息。针对资源存储的节点查询请求消息,计算其中节点ID与该消息中的资源ID距离较小的模拟节点作为相应资源的最佳资源信息存储结点;针对资源信息存储请求消息,将从该消息中获取到的资源信息发送给资源统计服务器。图2示出了在KAD网络中的模拟节点分布示意图。
[0039]现参考图3和图4,具体描述了 KAD网络资源信息的获取方法的实施例。其中,图3描述了针对查询请求消息,确定相应资源的最佳资源信息存储节点(即确定资源存储节点将要向其发送相应的资源信息存储请求消息的模拟节点)的方法,包括以下步骤:
[0040]步骤SlOl、在KAD网络的节点ID逻辑空间内随机选取n个节点ID,使得所选取的这n个节点ID尽量均匀地分布在整个逻辑空间。
[0041]根据本发明的一个实施例,为节省成本,本发明在一台主机(即节点)上构造n个模拟节点并启动监听,其中n可以是大于I的整数。n个模拟节点ID均匀分布在整个逻辑空间可以保证构造的模拟节点能够监听到较全面的资源信息。
[0042]步骤S102、用选取的n个节点ID构造KAD网络的模拟节点(简称模拟节点),启动该模拟节点加入KAD网络,并且由这些模拟节点自动地扩散自己的节点信息。其中,该节点信息可以包括模拟节点的IP地址、UDP端口号以及节点ID等。
[0043]步骤S103、在模拟节点上监听KAD网络中其它节点(也称作资源存储节点)发送的KAD协议消息。
[0044]步骤S104、当模拟节点收到其他节点发来的消息时,首先判断该消息是否为资源存储的节点查询请求消息。
[0045]在一个实施例中,查询请求消息可以包括消息类型、资源ID,以及发送该消息的资源存储节点的节点ID这三部分,其中资源ID是发送该消息的资源存储节点所存储的资源(包括关键词资源和文件资源)的资源ID。消息类型可用于判断该消息是否是查询请求消息,即,在该消息的数据包中,根据表示消息类型的数据位来进行判断。节点ID表示该消息的来源。
[0046]步骤S105、如果确定所收到的消息是资源存储的节点查询请求消息,则解析该消息的数据包,获取其中的资源ID (例如关键词资源ID或文件资源ID),并将该资源ID与所有n个模拟节点的节点ID进行相似度运算。例如,采用二进制异或运算来计算ID之间的距离。接着获取n个模拟节点中距离该资源ID较近的一个或若干模拟节点作为相应资源的最佳资源信息存储节点;否则,继续监听KAD网络。
[0047]在KAD网络中,资源是存储在距离资源ID最近的一个或若干个节点上的,在查找到距离自己最近的节点后,便会向其发布资源信息,并请求其存储。因此,这里选取最近的一个或多个模拟节点能够使获取资源信息的效率更高。
[0048]步骤S106、由收到查询请求消息的模拟节点用上一步得到的最佳资源信息存储节点的信息来应答发送该查询请求消息的节点。
[0049]其中,应答消息中包括最佳资源信息存储节点的信息,例如,可包括最佳资源信息存储节点的IP地址、UDP端口号、节点ID等。接着,模拟节点可继续监听该KAD网络。
[0050]发出查询请求消息的资源存储节点收到应答后,得到资源ID的相应资源的最佳资源信息存储节点的信息。接着,可向该最佳资源信息存储节点发送与该资源ID相对应的资源信息存储请求消息。
[0051]步骤S107、判断是否满足退出条件(例如用户关闭监听程序)。若是,则退出结束;否则,继续监听KAD网络。
[0052]图4描述了针对资源信息存储请求消息,模拟节点将从该消息中获取到的资源信息发送给资源统计服务器的方法的一个实施例,包括以下步骤:
[0053]步骤S201、在模拟节点上监听KAD网络中其它节点的KAD协议消息。
[0054]步骤S202、模拟节点判断接收到的来自其他节点的消息是否为资源信息存储请求消息。
[0055]资源信息存储请求消息用于请求目标模拟节点存储该消息中包含的关键词资源信息或者文件资源信息。如上文所述,其数据部分结构均为〈key,value〉结构。对于关键词资源,其资源信息包括文件ID、文件名、文件类型、文件大小等等;对于文件资源,其资源信息包括节点ID、IP地址、UDP端口等等。
[0056]与查询请求消息类似,资源信息存储请求消息还可以包括指示消息类型的数据位,可根据该数据位来判断接收的消息是否为资源信息存储请求消息。
[0057]步骤S203、如果确定所收到的是资源信息存储请求消息,则模拟节点解析该消息的数据包,并且从中获取资源信息(关键词资源信息或者文件资源信息)。接着,可以将获得的资源信息发送到资源统计服务器;如果不是,则继续监听KAD网络。
[0058]在另一个实施例中,模拟节点可以先存储资源信息,再将存储的资源信息发送给资源统计服务器。[0059]步骤S204.判断是否满足退出条件(如用户关闭监听程序)。若是,退出结束;否贝U,继续监听KAD网络。
[0060]应注意到,由于模拟节点接收到的消息可能是查询请求消息,也可能是资源信息存储请求消息。因此,确定资源的最佳资源信息存储节点过程和获取资源信息的过程可以是并发进行的。
[0061]发明人通过实验发现,当模拟节点个数n的值取32时,本发明提供的KAD网络资源信息获取方法的性能较好,即采用较少的模拟节点较为全面地获取了 KAD网络中的资源信息。
[0062]根据本发明的一个实施例,还提供一种KAD网络资源信息获取系统,包括模拟节点构造模块和监听模块两个部分。
[0063]其中,模拟节点构造模块用于在KAD网络的节点ID空间内选取n个均匀分布的节点ID,构造相应的n个模拟节点加入KAD网络,这里的n为正整数。
[0064]监听模块用于由模拟节点监听KAD网络,当模拟节点接收到其他节点发来的消息时,判断该消息的类型。
[0065]其中,如果该消息是资源存储的节点查询请求消息,则从所有模拟节点中选择节点ID与查询请求消息中包括的资源ID距离较近的一个或多个模拟节点,并且将关于所选择的一个或多个模拟节点的信息返回给发送查询请求消息的节点。
[0066]如果该消息是资源信息存储请求消息,则解析该消息并且获取资源信息(包括关键词资源信息或者文件资源信息)。如果不是以上这两种消息,则继续监听KAD网络。
[0067]监听模块还用于判断是否满足退出条件(例如用户关闭监听程序)。若是,则退出结束;否则,继续监听KAD网络。
[0068]应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
【权利要求】
1.一种KAD网络资源信息的获取方法,包括: 步骤I)、在KAD网络的节点ID空间内选取n个均匀分布的节点ID,构造相应的n个模拟节点加入所述KAD网络,其中n为正整数; 步骤2)、由所述模拟节点监听所述KAD网络;以及 步骤3)、由所述模拟节点解析其他节点发来的资源信息存储请求消息并且获取资源信 息。
2.根据权利要求1所述的方法,其中,步骤3)包括: 当所述模拟节点接收到其他节点发来的消息时,判断该消息的类型; 如果是查询请求消息,则从所有模拟节点中选择节点ID与所述查询请求消息中包括的资源ID距离较近的一个或多个模拟节点,并且将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点; 如果是资源信息存储请求消息,则解析该消息并且获取资源信息。
3.根据权利要求2所述的方法,其中,所述查询请求消息包括:消息类型、资源ID,和发送所述查询请求消息的节点的节点ID。
4.根据权利要求1-3中任何一个所述的方法,其中,所述资源信息存储请求消息包括:消息类型,和关键词资源信息或文件资源信息。
5.根据权利要2或3所述的方法,步骤3)中,在将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点之后,还包括: 由发送所述查询请求消息的节点向所选择的一个或多个模拟节点发送与所述资源ID相对应的资源信息存储请求消息。
6.根据权利要求1-3中任何一个所述的方法,步骤3)中,在解析资源信息存储请求消息并且获取资源信息之后,还包括: 由接收所述资源信息存储请求消息的模拟节点将获取的资源信息发送给资源统计服务器。
7.根据权利要求1-3中任何一个所述的方法,其中,n为32。
8.根据权利要求1-3中任何一个所述的方法,还包括: 步骤4)、结束监听所述KAD网络。
9.一种KAD网络资源信息的获取系统,包括: 模拟节点构造模块,用于在KAD网络的节点ID空间内选取n个均匀分布的节点ID,构造相应的n个模拟节点加入所述KAD网络,其中n为正整数;以及 监听模块,用于由所述模拟节点监听所述KAD网络;以及由所述模拟节点解析其他节点发来的资源信息存储请求消息并且获取资源信息。
10.根据权利要求9所述的系统,其中,所述监听模块用于当所述模拟节点接收到其他节点发来的消息时,判断该消息的类型;如果是查询请求消息,则从所有模拟节点中选择节点ID与所述查询请求消息中包括的资源ID距离较近的一个或多个模拟节点,并且将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点;如果是资源信息存储请求消息,则解析该消息并且获取资源信息。
11.根据权利要求10所述的系统,其中,所述监听模块还用于:在将关于所选择的一个或多个模拟节点的信息返回给发送所述查询请求消息的节点之后,由发送所述查询请求消息的节点向所选择的一个或多个模拟节点发送与所述资源ID相对应的资源信息存储请求消息。
12.根据权利要求9-11中任何一个所述的系统,其中,所述监听模块还用于:在解析资源信息存储请求消息并且获取资源信息之后,由接收所述资源信息存储请求消息的模拟节点将获取的资源信息发送给资源统计服务器。
【文档编号】H04L29/06GK103618725SQ201310645762
【公开日】2014年3月5日 申请日期:2013年12月4日 优先权日:2013年12月4日
【发明者】程学旗, 冯凯, 席鹏弼, 刘备, 王元卓, 刘悦, 孙庆 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1