网络环境中对等通信的 方法和系统 【技术领域】
本发明涉及网络环境中两个或更多个“对等的”(peer)目标设备之间通信的方法。更具体地说,本发明涉及网络环境中传送和分发信息,如文件或搜索命令的方法。
背景技术
当前在网络环境中向一个或多个目标设备分发信息,如文件或搜索命令的方法中,一个或多个中央服务器可能被用于向多个目标设备传送信息。
这样的集中式系统存在一些困难。例如,对中央服务器的不利效应将影响与该服务器通信的所有目标设备。
分发信息的其他方法使用“对等(peer-to-peer)”分发手段,即其中两个或更多个目标设备能彼此直接通信的系统。然而,当前的“对等”分发搜索和文件共享的协议存在某些困难。
例如,利用Napster“对等”协议,要被共享的文件停留在每个目标设备上无需通过服务器传送。然而,Napster仍使用一个服务器来提供搜索特定文件和启动客户机之间的直接传送的能力。这样,Napster协议可能遇到前述的一些与服务器有关的困难。再有,Napster协议可能遇到与对等协议有关的问题,如在目标设备进入和离开网络时,不断变化的网络阻塞和搜索结果。Napster协议可能需要大量的带宽,可能减慢通信,还可能阻碍结果。
同时,利用Gnutella协议,要被共享的文件停留在每个目标设备上。再有,搜索特定文件的能力还可在每个目标设备上得到。这样,每个目标设备能够作为客户机和服务器二者。然而,当使用Gnutella协议从一个始发目标设备进行搜索时,在响应该始发目标设备地其他目标设备进入和离开该网络时,在始发目标设备处接收的搜索结果可能会逐秒改变。再有,当一个目标设备响应该始发目标设备时,其结果通过曾转发该原始请求的中间目标设备中继到该始发目标设备。当一个搜索在Gnutella网络上散播时,从始发目标设备到具有所希望文件的另一目标设备的路径可能变得更长和更加旋绕。这样,搜索结果可能被延迟,甚至在它们到达始发目标设备之前便可能变得过时了。从远离始发设备的目标设备传送搜索结果可能需要大量的带宽,可能减慢通信和可能阻碍结果。
所以,人们希望提供在多个目标设备之间传送信息的方法,它能是更加有效的能降低网络和处理器的开销并改进性能。
【发明内容】
本发明的一个方面提供在网络环境中在多个对等节点之间进行通信的方法。一发现命令从当前对等节点传送到至少一个相邻对等节点,该相邻对等节点与当前对等节点通信。在当前对等节点处接收一对等节点的汇聚列表,该对等节点汇聚列表包含关于与这至少一个相邻节点通信的至少一个对等节点的信息。
所述发现命令可在经过预定延迟之后从当前对等节点传送。该发现命令可被传送到预定数量的相邻对等节点。可在该当前对等节点处创建一对等表,并以所述对等节点汇聚列表进行更新。在所述当前对等节点处可能接收来自一始发对等节点的第二个发现命令,该对等表可被传送给该始发对等节点以响应这第二个发现命令。在该当前对等节点处可能接收一具有唯一描述符的数据消息。该描述符可与描述符表进行比较,该描述符表包含多个数据消息和相关联的描述符。该描述符表可以以收到的数据消息和所收到的数据消息的描述符来更新。一查询命令可从该当前对等节点转发到预定数量的相邻对等节点。可直接在该当前对等节点接收来自至少一个其他对等节点的响应数据,这至少一个其他对等节点与这至少一个相邻节点通信。可在当前对等节点处接收来自一始发对等节点的查询命令,而响应数据可从该当前对等节点直接传送给该始发对等节点,以响应该查询命令。该查询命令可从该当前对等节点转发到预定个数的相邻对等节点。
本发明的另一方面提供计算机可用介质中的计算机程序产品,其用于在网络环境中在多个对等节点之间进行通信。该程序可包括用于从当前对等节点向至少一个相邻对等节点传送发现命令的手段,该相邻对等节点与该当前对等节点通信,以及用于在该当前对等节点处接收一对等节点汇聚列表的手段,该对等节点汇聚列表包含关于与这至少一个相邻节点通信的至少一个对等节点的信息。
本发明的又一方面提供用于在网络环境中在多个对等节点之间进行通信的系统。该系统可包括用于从当前对等节点向至少一个相邻对等节点传送发现命令的装置,该相邻对等节点与该当前对等节点通信,以及用于在该当前对等节点接收一对等节点汇聚列表的装置,该对等节点汇聚列表包含关于与这至少一个相邻节点通信的至少一个对等节点的信息。
在本发明的一个实施例中,本发明的程序和系统可进一步包括用于在预定延迟之后从所述当前对等节点传送所述发现命令的手段。根据本发明,可以提供向预定数量的相邻对等节点传送所述发现命令的手段,以及用于在所述当前对等节点处创建对等表的手段和用于以所述对等节点汇聚列表更新该对等表的手段。此外,本发明的程序和系统还可包含用于在所述当前对等节点接收来自一始发对等节点的第二个发现命令的手段以及用于从所述当前对等节点直接向该始发对等节点传送该对等表以响应该第二个发现命令和用于在所述当前对等节点接收数据消息的手段,该数据消息有唯一的描述符,以及用于将所接收的数据消息的描述符与一描述符表进行比较的手段,该描述符表包含多个数据消息和相关联的描述符。根据本发明,可以提供用于以所收到的数据消息和所收到的数据消息的描述符更新所述描述符表的手段。本发明的程序和系统可包括用于从所述当前对等节点向预定数量的相邻对等节点传送查询命令的手段。此外,该程序和系统可包含用于在所述当前对等节点直接接收来自至少一个其他对等节点的响应数据的手段,这至少一个其他对等节点与这至少一个相邻节点通信,以及用于在所述当前对等节点从一始发对等节点接收查询命令的手段和用于从所述当前对等节点直接向所述始发对等节点传送响应数据以响应该查询命令的手段。根据本发明的程序和系统,还可提供用于从所述当前对等节点向预定数量的相邻对等节点转发所述查询命令的手段。
【附图说明】
现在将只以举例方式参考如附图所示的优选实施例来描述本发明,其中:
图1是根据本发明的数据处理系统网络的一个实施例的示意图;
图2是根据本发明的数据处理系统的一个实施例的方框图;
图3是根据本发明的数据处理系统的另一实施例的方框图;
图4是根据本发明在网络环境中在多个目标设备之间进行通信的方法的一个实施例的流程图;
图5是图4所示的在网络环境中在多个目标设备之间进行通信的方法中一个子例程的一个实施例的流程图;
图6是图4所示的在网络环境中在多个目标设备之间进行通信的方法中另一个子例程的一个实施例的流程图;
图7是图4所示的在网络环境中在多个目标设备之间进行通信的方法中另一个子例程的一个实施例的流程图;以及
图8是图4所示的在网络环境中在多个目标设备之间进行通信的方法中另一个子例程的一个实施例的流程图。
【具体实施方式】
图1是根据本发明的一个实施例的数据处理系统网络100的示例性表示。网络数据处理系统100可以是在其中可实现本发明实施例的计算机网络。网络数据处理系统100可以包含一个网络。网络102可以是任何适当的介质,其用于在网络数据处理系统100内为彼此连接或彼此通信的各种设备(如计算机)之间提供通信链路。例如,网络102可包括如有线连接、无线通信链路或光纤电缆等连接。
在图1所示实施例中,目标设备112、114、116、118、122、124、126、128、136、138可与网络102通信。这些目标设备可以是例如个人计算机或网络计算机。目标设备112、114、116、118、122、124、126、128、136、138中的一个或多个可用作对等目标设备,如下文中进一步描述的那样。目标设备112、114、116、118、122、124、126、128、136、138还可作为一个或多个对等目标设备的对等节点,如下文中进一步描述的那样。网络数据处理系统100可以包括附加的服务器、客户机、目标设备以及其他未示出的设备。
一个或多个存储单元,如存储单元103、105,也可与网络102通信。存储单元103、105可以存储数据,如引导文件、操作系统映像、应用文件以及可被一个或多个目标设备112、114、116、118、122、124、126、128、136、138处理或传送的应用。存储单元103、105还可存储可由网络102使用或处理的数据和/或可由与网络102通信的其他部件使用的数据,如下文中描述的那样。在本发明的一些实施例中,存储单元103、105还可用作目标设备112、114、116、118、122、124、126、128、136、138的对等体,提供描述符、消息和/或响应数据,如下文进一步详细描述的那样。
如图1中所见,网络数据处理系统100可以是任何适当的处理数据的系统。例如,系统100可以是因特网。或者,网络数据处理系统100还可以是任何适当类型的网络,如内联网、局域网(LAN)或广域网(WAN)。在本发明的一个实施例中,网络102代表使用一套TCP/IP协议彼此进行通信的网络和网关的全球集合。在主要节点或主计算机之间的高速数据通信线路的基干允许在数以千计的传送数据和消息的商业、政府、教育和其他计算机系统之间进行通信。
在本发明的一个实施例中,网络数据处理系统是一个对等的分散式系统。在这样的系统100中,每个目标设备112、114、116、118、122、124、126、128、136、138可以用作服务器也可用作客户机。这样,目标设备112、114、116、118、122、124、126、128、136、138能完成通常与客户机关联的任务,也能完成通常与服务器关联的任务。在本发明的一些实施例中,目标设备112、114、116、118、122、124、126、128、136、138可提供客户机侧接口,通过这些接口用户能完成与客户机关联的任务,如发出查询和查看搜索结果。与此同时,每个目标设备112、114、116、118、122、124、126、128、136、138还可提供与服务器有关的任务,如从其他目标设备接收查询、核查所请求的数据与它自己的数据集的匹配情况和以查询结果响应其他目标设备。分布式系统100是高度容错的,因为如果目标设备的一个子集或节点离线,系统100的操作将不会被中断。例如,区域117突显系统100的目标设备的一个子集(包含目标设备112、114、116、118、128、136、138)。同时,区域127指示系统100的目标设备的第二个子集(包含目标设备122、124、126)。在分布式系统100中,如果区域117子集离线,这不一定是中断系统100的运行、网络102的运行或区域127或目标设备122、124、126的运行。反之,如果区域127子集离线,这不一定会中断系统100的运行、网络102的运行或区域117或目标设备112、114、116、118、128、136、138的运行。
图2和图3是根据本发明一个实施例可使用的数据处理系统的方框图。在本发明的一个实施例中,给定的目标设备112、114、116、118、122、124、126、128、136、138可以是引入图2和图3所示的一个或多个部件的任何组合的数据处理系统。
图2是根据本发明一个实施例的数据处理系统在200的方框图。在本发明的一个实施例中,数据处理系统200可以作为图1所示的目标设备112、114、116、118、122、124、126、128、136、138中的一个或多个来实现。或者,一个给定的目标设备112、114、116、118、122、124、126、128、136、138可以引入图2中描述的一个或多个部件。
数据处理系统200可以是一个对称多处理器(SMP)系统,其包括多个与系统总线206相连的处理器202和204。或者,可利用单处理器系统。存储器控制器/高速缓存208也可与系统总线206相连。存储器控制器/高速缓存208可提供对局部存储器209的接口。I/O总线桥210也可与系统总线206相连,并可提供对I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥210可如所表示的那样被集成,或者是单独的部件。
与I/O总线212连接的外围部件互连(PCI)总线桥214可提供对PCI局部总线216的接口。一个或多个调制解调器可与PCI总线216相连。典型的PCI总线实现将支持四个PCI扩展槽或外接连接器。调制解调器218和网络220可连接于PCI局部总线216。这一连接可通过外接板。在本发明的一个实施例中,调制解调器218和附随连接提供与目标设备(如网络计算机)的通信链路。例如,这样的目标设备可以是上文在图1中描述的那些目标设备。
附加的PCI总线桥222和224可以为附加的PCI总线226和228提供接口。附加的调制解调器或网络适配器可以从PCI总线226和228得到支持。例如,在本发明的一个实施例中,PCI总线226、228可支持安装有远程加载特性(如RPL特性)的网络适配器。以这种方式,数据处理系统200可以允许到多个网络计算机的连接。如图所示,存储器映射图形适配器230和硬盘232也可直接或间接地连接到I/O总线212。
图2中描绘的部件可以按图中所示安排或者以任何允许数据处理系统200按所希望的那样发挥作用的适当方式安排。此外,其他外围设备,如光盘驱动器等,可用于补充或替代所表示的部件。
在本发明的一个实施例中,数据处理系统200可包括使系统200能根据分布式对等协议进行工作的软件和硬件。这可包括例如一组用于在一个或多个目标设备之间传送数据的数据消息以及一组用于控制在一个或多个目标设备之间的消息交换的规则。下文中将进一步定义根据本发明的一个实施例的这些消息和规则以及使用这些消息和规则的方法。
图3是根据本发明一个实施例的数据处理系统在300的方框图。在本发明的一个实施例中,数据处理系统300可以作为图1所示目标设备112、114、116、118、122、124、126、128、136、138中的一个或多个来实现。或者,一个给定的目标设备112、114、116、118、122、124、126、128、136、138可以引入图3描述的一个或多个部件。
在本发明的一个实施例中,数据处理系统300是一个目标设备,在其上盘驱动器是可选设备。或者,数据处理系统300可以是一个独立的系统,其被配置成可引导的,无需依靠网络通信接口。或者,数据处理系统300还可以包含一个或多个网络通信接口。数据处理系统300还可以是一个个人数字助理(PDA)设备。数据处理系统300还可采取笔记本计算机或手持计算机的形式。或者,数据处理系统300可以是一个信息站或Web设备。本发明一个实施例的处理也可应用于多处理器数据处理系统。
数据处理系统300可以利用外围部件互连(PCI)局部总线体系结构。尽管所描绘的例子利用PCI总线,但其他总线体系结构,如图形加速端口(AGP)和工业标准体系结构(ISA)也可使用。处理器302和主存储器304可以经由PCI桥308与PCI局部总线306连接。PCI桥308还可包括集成的存储器控制器和供处理器302使用的高速缓冲存储器。通过直接部件互连或通过外接板可实现其他到PCI局部总线306的连接。在本发明的一个实施例中,局域网(LAN)适配器310、SCSI主机总线适配器312和扩展总线接口314通过直接部件连接与PCI局部总线306相连。相反,音频适配器316、图形适配器318和音频/视频适配器319通过插入扩展槽的外接板与PCI局部总线306相连。扩展总线接口314可为附加部件,如键盘和鼠标适配器320、调制解调器322和附加存储器324提供连接。一个小型计算机系统接口(SCSI)主机总线适配器312可为诸如硬盘驱动器326、带驱动器328、CD-ROM驱动器330或DVD 332等附加部件提供连接。PCI局部总线306可以是任何适当的局部总线实现。通常的PCI局部总线实现支持三个或四个PCI扩展槽或外接连接器。
文件和用于文件的指令,如用于操作系统、面向对向的操作系统和应用或程序的操作文件可位于存储设备上,如硬盘驱动器326。这些操作系统、应用和/或程序可被加载到主存储器304中供处理器302执行。
图3中描绘的系统300的部件可以按图中所示安排,或者以允许数据处理系统300按所希望的那样发挥作用的任何适当方式安排。其他内部硬件或外围设备,如闪速ROM(或等效的非易失性存储器)或光盘驱动器等,可用于补充或替代所显示的部件。例如,数据处理系统300的一个实施例可以被配置成具有ROM和/或闪速ROM以提供非易失性存储器供存储操作系统文件和/或用户生成的数据。数据处理系统300的另一个实施例可包括网络适配器,其适应于远程加载程序和/或特性(如RPL特性)的发送或接收功能。
在本发明的一个实施例中,数据处理系统300可以包括使系统300能根据分布式对等协议进行工作的软件和硬件。这可包括例如一组用于在一个或多个目标设备之间传送数据的数据消息以及一组用于控制在一个或多个目标设备之间的消息交换的规则。下文中将进一步定义根据本发明的一个实施例的这些消息和规则以及使用这些消息和规则的方法。
图4在400显示根据本发明在多个目标设备之间进行通信的方法的一个实施例。图4中所示方法可以使用任何适当的对等协议实现,该协议使得能够在网络上进行分布式搜索和文件共享。
任何适当的传输机制可用于实现目标设备或节点之间的通信,例如使用TCP之上的HTTP。或者,可以使用字节级传输。或者,可以使用UDP。或者,可以使用HTTP/SOAP(简单对象访问协议)。SOAP是一个简单的在HTTP之上的XML包装器,其用于流行的连接技术,如COM、Apple事件和CORBA。用于SOAP的传输机制是HTTP,而在SOAP中的一个调用是用XML指定的。
在本发明的一个实施例中,该传输机制根据一个适当的对等协议实现目标设备之间的通信。这一对等协议可包括例如一组用于在一个或多个目标设备之间传送数据的数据消息和一组用于控制在一个或多个目标设备之间的消息交换的规则。下文中将进一步定义根据本发明的一个实施例的这些消息和规则以及使用这些消息和规则的方法。
例如,在本发明的一个实施例中,一个或多个数据消息可在一个或多个目标设备之间发送。这些数据消息可包括任何适当的数据,如要从一个目标设备向另一个目标设备传送的对查询或命令的响应。这些数据消息可以是例如8字节串、16字节串、32字节串或任何适当大小的数据串形式的信息。这些数据消息可以采取例如发现(这里表示为“ping(乒)”)数据消息、标识(这里表示为“pong(乓)”)数据消息、查询数据消息和查询响应数据消息的形式。这些数据消息可由例如规则来控制,如超时延迟和存在时间计数器,如本领域公知的那样。
根据本发明的一个实施例,该数据消息可包括一个描述符ID。在本发明的一个实施例中,描述符ID可以是一个16字节串,它唯一地标识在网络102和/或系统100上被分发的一个特定数据消息。例如,一个32字节串大小的数据消息可包括一个16字节串大小的描述符ID,这使它唯一地区别于在该网络上发送的每个其他数据消息。这样,如果一个消息到达一个特定目标设备不只一次,则该目标设备能从该消息的描述符ID识别出该消息。
如前所述,该数据消息可以是一个发现消息(这里表示为“ping(乒)”消息)。这一ping消息可用于一个或多个目标设备112、114、116、118、122、124、126、128、136、138,以表明该ping消息是在有效地查询网络102和/或系统100。这样的ping数据消息可以请求标识一个或多个目标设备。例如,目标设备114可以向目标设备112、116和118发送一个ping消息,请求目标设备112、116和118标识它们自己。在本发明的一个实施例中,一个ping数据消息可以请求该标识包括一个给定目标设备的对等目标设备的汇聚列表(对等表)。例如,目标设备114可向目标设备112、116和118发送一个ping消息,请求目标设备112标识目标设备112的对等设备,请求目标设备116标识目标设备116的对等设备,并请求目标设备118标识目标设备118的对等设备。
在本发明的一个实施例中,该对等协议还可包括一个ping超时延迟,它可以是一个用于控制ping数据消息的规则。这一ping超时延迟可以是一个在发送一个特定ping消息之前的预定的时间量。例如,可以每p秒由一特定目标设备发出一个ping消息。ping超时延迟的值可以使用本领域已知的任何适当的手段来确定。例如,ping超时值可能根据控制该ping超时延迟的目标设备的规格说明来预先设置。或者,特定目标设备的用户可设置ping超时延迟的值。或者,该ping超时延迟的值可基于诸如网络阻塞和目标设备的处理速度等因素。或者,由给定目标设备使用的传输机制可确定ping超时延迟的值。或者,一个适当的算法可控制ping超时延迟值。这一算法可基于例如特定目标设备(对等节点)的系统限制或可基于用户的输入值。
如前所述,该数据消息还可以是一个标识消息(这里表示为pong(乓)数据消息)。这一pong消息可以由一个或多个目标设备112、114、116、118、122、124、126、128、136、138用于响应已广播一个ping消息的目标设备。例如,目标设备112可向目标设备114发送一个pong消息,其向目标设备114描述目标设备112。在本发明的一个实施例中,pong消息可含有一个有效目标设备的地址。这样,目标设备112可向目标设备114发送一个pong消息,该消息给出目标设备112的地址。如果目标设备114还向目标设备118发送了ping消息,则目标设备114也会收到来自目标设备118的pong消息,其给出目标设备118的IP地址。或者,一个pong数据消息可包含下列中的一个或多个:响应的目标设备能在其上接受传入的连接的端口号,响应的目标设备的IP地址,响应的目标设备在该网络上共享的文件数,响应的目标设备在该网络上共享的数据千字节数。在本发明的一个实施例中,pong数据消息可提供给定目标设备的相邻对等设备的汇聚列表(或对等表)。例如,目标设备112可向目标设备114发送一个pong消息,其向目标设备114指出目标设备112只有1个对等目标设备114。同时,目标设备118也可向目标设备114发送一个pong消息,其向目标设备114指出目标设备118有三个对等目标设备114、128、138。来自目标设备118的pong消息还可提供关于目标设备118的三个对等设备114、128、138的信息,包括对等目标设备114能在其上接受传入的连接的端口号,第二个对等目标设备128能在其上接受传入的连接的端口号,第三个对等目标设备138能在其上接受传入的连接的端口号,对等目标设备114的IP地址,第二个对等目标设备128的IP地址,第三个对等目标设备138的IP地址以及任何其他适当的信息。
如前所述,该数据消息还可以是一个查询消息。这一查询消息可由一个或多个目标设备112、114、116、118、122、124、126、128、136、138用于从其他目标设备和网络102或系统100的任何其他部件请求信息。例如,该查询消息可请求关于给定目标设备的软件或硬件部件、关于给定目标设备的软件或硬件配置、关于给定目标设备的软件或硬件兼容性或关于给定目标设备的存储器中的文件的信息。例如,目标设备114可向目标设备112、116、118发送一个查询数据消息,询问目标设备112、116、118它们是否有特定文件。在本发明的一个实施例中,该查询消息还可以包括一个请求,以请求它的对等目标设备的汇聚列表(或对等表)。如本领域公知的那样,根据本发明的一个实施例,还可广播其他类型的查询。
如前所述,该数据消息还可以是一个响应数据消息。这一pong消息可由一个或多个目标设备112、114、116、118、122、124、126、128、136、138用于响应一个已广播查询消息的目标设备。例如,目标设备112可向目标设备114发送一个响应消息,指出目标设备112是否有目标设备114正在寻找的那个文件。如果目标设备114还向目标设备118发送了一个ping消息,则目标设备114还可收到来自目标设备118的响应数据消息,指出目标设备118是否有目标设备114正在寻找的那个文件。
该对等协议可允许目标设备112、114、116、118、122、124、126、128、136、138的任何一个广播或接收数据消息。这样,例如,目标设备128也可能向目标设备118发送一个ping消息,以请求目标设备118的对等目标设备的汇聚列表。所以,目标设备128还可接收来自目标设备118的pong消息,其提供关于目标设备118的三个对等设备114、128、138的信息,包括对等目标设备114能在其上接受传入的连接的端口号,第二个对等目标设备128能在其上接受传入的连接的端口号,第三个对等目标设备138能在其上接受传入的连接的端口号,对等目标设备114的IP地址,第二个对等目标设备128的IP地址,第三个对等目标设备138的IP地址以及任何其他适当的信息。同时,目标设备116可以广播一个查询消息和接收来自其他目标设备112、114、118、122、124、126、128、136、138的响应数据消息。
这样,图4中所示例程可在任何一个目标设备112、114、116、118、122、124、126、128、136、138处发生,且在本发明的一个实施例中可同时在不只一个给定的目标设备处发生。此外,任何一个或多个目标设备可正在接收由图4的例程产生的数据消息,如对等表。所以,尽管以下各段指定目标设备114为与网络102以及目标设备112、116、118、122、124、126、128、136、138关联的始发对等节点,但是任何一个或多个目标设备112、116、118、122、124、126、128、136、138也可作为与网络102和/或系统100中任何其他目标设备关联的始发对等节点。
如在块402中所见,目标设备114可初始化一个对等表。在本发明的一个实施例中,这一对等表可包含对等目标设备及每个对等目标设备相关信息的列表,这些相关信息如每个对等目标设备的IP地址和每个特定对等目标设备正在其上接受传入的连接的端口。这可以以任何适当的方式完成,例如通过创建一个在目标设备114上的或与目标设备114通信的数据库,以用于存储对等目标设备的标识以及相关信息来完成。或者,这一信息可被按顺序汇集在目标设备114上的或与目标设备114通信的适当存储单元中。或者,这一信息可被存储在本领域公知的散列表和/或使用公知的散列函数存储。
如在块404中所见,目标设备114还可初始化描述符ID表。在本发明的一个实施例中,这一描述符ID表可包含每个唯一描述符ID以及其相应的由目标设备114接收和/或发送的数据消息的列表。这可以以任何适当的方式完成,例如通过创建一个在目标设备114上的或与目标设备114通信的数据库,以用于存储描述符ID和相关信息列表来完成。或者,这一信息可被按顺序汇集在目标设备114上的或与目标设备114通信的适当存储单元中。或者,这一信息可存储在本领域所公知的散列表中和/或使用本领域所公知的散列函数存储。
如在块406中所见,目标设备114还可如前所述为“ping”超时延迟设置一值。这一ping超时延迟可以是在发送一个特定ping消息之前的预定的时间量。例如,可以每p秒由一特定目标设备发出一个ping消息。Ping超时延迟的值可以使用本领域已知的任何适当的手段确定。例如,ping超时值可根据控制该ping超时延迟的目标设备的规格说明来预先设置。或者,特定目标设备的用户可设置ping超时延迟的值。该ping超时延迟的值可基于诸如网络阻塞和目标设备的处理速度等因素。由给定目标设备使用的传输机制可确定ping超时延迟的值。一个适当的算法可控制ping超时延迟值。这一算法可基于例如特定目标设备(对等节点)的系统限制或可基于用户的输入值。
如在块408中所见,目标设备114然后可为它将联系的(即与之连接的)相邻节点(对等目标设备)的个数设置一值n。对于一个给定的目标设备,可以使用一个或多个本领域已知的适当方法确定要联系的相邻节点的个数。例如,从一给定的目标设备联系的对等节点的个数可基于该目标设备的适当参数,如用户确定的参数、该目标设备的硬件参数、该目标设备的软件参数等。例如,一个给定的目标设备114的用户可能指示目标设备114应联系至少三个其他相邻节点。或者,目标设备114的处理限制可能指示它应联系不多于四个对等目标设备。或者,目标设备114可能被预设为与给定个数的相邻节点通信。或者,由给定目标设备使用的传输机制可确定要联系的相邻节点个数。或者,一个适当的算法可控制要联系的相邻节点的个数,如基于网络102或系统100内相邻节点的个数或基于用户输入值的算法。
如在块410中所见,然后目标设备114为一个数据消息在失效之前可从一个目标设备转发到另一个目标设备的次数设定存在时间值t。例如,目标设备114可设定一个数据消息在它已被t个目标设备接收之后失效。可以用任何适当的手段确定存在时间值。例如,该值可根据控制该存在时间值的目标设备的规格说明预先设置。或者,一个特定目标设备的用户可设置该存在时间值。存在时间值可基于诸如网络阻塞和该目标设备的处理速度等因素。由给定的目标设备使用的传输机制可确定该存在时间值。一个适当的算法可根据诸如网络阻塞和给定对等节点的处理限制等因素控制存在时间值。
接收具有一存在时间值的数据消息的每个目标设备可使与该数据消息关联的一个跳跃计数器递增。可以使用本领域已知的任何适当手段,在收到该消息时由目标设备使这一跳跃计数器递增。例如,可以使用一个适当的算法使跳跃计数器递增。如针对存在时间值的情况那样,用于确定跳跃计数器的算法可基于诸如网络限制和给定对等节点的处理限制等因素。这一跳跃计数器可以指示该数据消息已被接收的次数,并可与存在时间值t比较,以确定该消息是否应失效(即该消息已被接收的次数(或者说跳跃计数)超过存在时间值吗?)。
如在块420、430和440中所见,始发对等节点114还可执行下列线程中的一个或多个:ping线程、服务器线程和查询线程。这些线程可由目标设备114同时执行或按任何适当的顺序执行。这些线程可在目标设备114在线或与网络102和/或系统100通信时连续发生。或者,目标设备114可在从另一个目标设备112、116、118、122、124、126、128、136、138或从网络102和/或系统100的任何其他部件接收一个或多个数据消息时开始一个或多个这样的线程。
如在块420中所见,目标设备114可这样开始一个“ping”线程,下文中将进一步描述。替代块或与块420同时,目标设备114还可开始一个“服务器”线程,下文中将进一步描述,如在块430中所见。替代块420、430或与块420、430同时,目标设备114还可开始一个“查询”线程,下文中将进一步描述,如块450中所见。如果在块440确定一个或多个查询要从目标设备114广播,则目标设备114可开始“查询”线程。这样,根据本发明,目标设备114可实现客户机功能,如发送查询,包括ping查询,以及接收响应,包括pong响应。目标设备114还可实现服务器功能,如处理查询和响应,包括把描述对等节点的响应汇聚到对等表中或跟踪一个特定查询消息被接收的次数。
图5在500显示图4的在网络环境中在多个目标设备之间进行通信的方法中一个子例程的一个实施例。
如在块502中所见,目标设备114可以等待在块406中确定的预定ping超时延迟值(p)的持续时间。这一ping超时延迟可以是在特定ping发出之前的预定的时间量。例如,可以每p秒从一特定目标设备发出一个ping消息。
如在块504中所见,一旦ping超时延迟已过,目标设备114便可向在块408设置的预定个数(n)的相邻(对等)节点发送一个ping消息。这样,在图1所示实施例中,ping消息从目标设备114向三个预定相邻节点112、116、118(即n=3)发送。
这一ping消息可由一个或多个目标设备112、114、116、118、122、124、126、128、136、138用于指示该ping消息正在有效地查询网络102和/或系统100。这样一个ping数据消息可以请求一个或多个目标设备的标识。例如,目标设备114可以向目标设备112、116和118发送一个ping消息,请求目标设备112、116和118标识它们本身。在本发明的一个实施例中,一个ping数据消息可以请求该标识包括给定目标设备的对等目标设备的汇聚列表(对等表)。例如,目标设备114可向目标设备112、116、118发出一个ping消息,请求目标设备112标识目标设备112的对等设备,请求目标设备116标识目标设备116的对等设备,并请求目标设备118标识目标设备118的对等设备。
如在块506中所见,目标设备114然后可以从在块504联系的预定数量对等中的一个或多个接收pong消息。
这一pong消息可由所联系的对等设备112、116、118用于响应由目标设备114广播的ping消息。例如,目标设备112可向目标设备114发送一个pong消息以向目标设备114描述目标设备112。在本发明的一个实施例中,该pong消息可包含一个有效目标设备的地址。这样,目标设备112可向目标设备114发送一个pong消息,它给出目标设备112的地址。目标设备114还可从目标设备116接收一个pong消息,其给出目标设备116的IP地址,并从目标设备118接收一个pong消息,其给出目标设备118的IP地址。在本发明的一个实施例中,该pong数据消息可提供一给定目标设备的相邻对等设备的汇聚列表(或对等表)。例如,目标设备112可向目标设备114发送一个pong消息,其向目标设备114指出目标设备112只有一个对等目标设备114。同时,目标设备116还可发送一个pong消息,其指出目标设备116有两个对等目标设备114、136。来自目标设备116的pong消息还可提供关于目标设备116的两个对等设备114、136的信息,包括对等目标设备114能在其上接受传入的连接的端口号,第二个对等目标设备136能在其上接受传入的连接的端口号,对等目标设备114的IP地址,第二个对等目标设备136的IP地址以及任何其他适当的信息。再有,目标设备118还可向目标设备114发送一个pong消息,以向目标设备114指出目标设备118有三个对等目标设备114、128、138。来自目标设备118的pong消息还可提供关于目标设备118的三个对等设备114、128、138的信息,包括对等目标设备114能在其上接受传入的连接的端口号,第二个对等目标设备128能在其上接受传入的连接的端口号,第三个对等目标设备138能在其上接受传入的连接的端口号,对等目标设备114的IP地址,第二个对等目标设备128的IP地址,第三个对等目标设备138的IP地址以及任何其他适当的信息。
如在块508中所见,然后目标设备114可利用从pong消息中接收的信息更新在块402初始化的对等表。这可使用本领域已知的任何适当手段来实现,如把来自相邻对等节点112、116、118的对等表信息送入一个在目标设备114上的或与目标设备114通信的数据库或存储单元中。这样,通过查询对等目标设备112、116、118,目标设备114能确定关于该网络中其他设备128、138、136的信息。同时,因为目标设备114能利用关于目标设备112、116、136、118、128、138的信息来更新它的对等表,所以其后查询目标设备114的相邻设备122会收到来自目标设备114的关于七个目标设备的信息,即关于目标设备112、116、136、118、128、138和122的信息。
图6在600显示图4的在网络环境中在多个目标设备之间进行通信的方法中另一个子例程的一个实施例。
如在块602中所见,目标设备114可等待一个到来的数据消息。这一数据消息可以是前述任何适当的数据消息。
例如,该数据消息可以是从目标设备114请求信息的ping数据消息,如请求目标设备114的标识的数据消息。或者,该数据消息可以是询问目标设备114它是否有一特定文件的查询数据消息。在本发明的一个实施例中,该数据消息可以是一个请求,其请求目标设备114提供它的对等目标设备的汇聚列表(或对等表)。
或者,该数据消息可以是一个向目标设备114描述另一目标设备的pong数据消息。在本发明的一个实施例中,pong数据消息还可提供它的相邻对等设备的汇聚列表(或对等表)。例如,目标设备114可从目标设备112接收一个数据消息,其向目标设备114指出目标设备112只有一个对等目标设备114。或者,该数据消息可以是响应来自目标设备114的一个查询的响应数据消息。
在块604,目标设备114确定它是否已收到一个数据消息。每个数据消息,不管它的性质如何(即ping数据消息、pong数据消息、搜索查询消息等),都可有如上所述的唯一的描述符ID。
如果已收到一个数据消息,该方法前进到块606,在那里该数据消息的描述符ID与已经存储在块404中创建的描述符ID表中的那些消息的描述符ID进行比较。
在块608,目标设备114确定所收到的数据消息先前是否已经见过(即所收到的数据消息的描述符ID是否与已经存储在描述符ID表中的任何一个描述符ID匹配)。
如在块610中所见,如果所收到的消息先前未曾见过,则目标设备114可把所收到的消息及其相应的描述符ID添加到描述符ID表中。
如在块612中所见,目标设备114然后可确定所收到的消息是否是如前所述的ping消息。如果所收到的消息是一个ping消息,如在块624中所见,目标设备114可向发起所收到的消息的对等节点返回一个pong消息。在本发明的一个实施例中,来自目标设备114的pong响应可包括下列中的一个或多个:目标设备114能在其上接受传入的连接的端口号,目标设备114的IP地址,在该网络上目标设备114共享的文件数,在该网络上目标设备114共享的数据的千字节数。或者,在本发明的一个实施例中,来自目标设备114的pong响应可以包括它的相邻对等设备的汇聚列表(或对等表)的全部或部分。例如,在图1的实施例中,来自目标设备114的pong响应可包括关于目标设备112、116、136、118、128、138的信息,如目标设备112、114、116、136、118、128、138能在其上接受传入的连接的端口号,目标设备112、116、136、118、128、138的IP地址以及任何其他适当的信息。
根据本发明的一个实施例,pong响应直接从接收目标设备114传输到始发对等目标设备,而不是从接收目标设备经由中间目标设备转发。这样,例如在图1的实施例中,如果目标设备114经由中间目标设备118从对等目标设备128接收一个ping消息,则目标设备114可以以一个pong消息直接向目标设备128做出响应。目标设备114能直接向目标设备128做出响应,是因为根据本发明已使目标设备114可获得关于目标设备128的信息。例如,目标设备114可具有关于目标设备128的信息,因为目标设备114先前已利用关于目标设备128的信息,如目标设备128的IP地址更新了它的对等表(如在块508所见)。
再有,如在块626中所见,目标设备114可进一步通过向它的对等表添加关于始发对等节点的信息来更新它的对等表。这样,继续上述示例,在图1的实施例中,目标设备114可向它的对等表添加关于目标设备128的信息。这一信息可包括关于目标设备128的信息,如目标设备128能在其上接受传入的连接的端口号,目标设备128的IP地址,目标设备128在该网络上共享的文件数,目标设备128在该网络上共享的数据的千字节数。或者,在本发明的一个实施例中,来自目标设备128的信息可包括它的相邻对等设备的汇聚列表(或对等表)的全部或部分。例如,在图1的实施例中,来自目标设备128的信息可包括关于与目标设备128连接的或与目标设备128通信的其他目标设备(未示出)的信息。
如在块614中所见,如果所接收的消息不是ping数据消息,目标设备114可确定所接收的消息是否是另一类型的查询。查询消息可请求例如关于给定目标设备的软件或硬件部件、关于给定目标设备的软件或硬件配置、关于给定目标设备的软件或硬件的兼容性或关于给定目标设备的存储器中的文件的信息。在本发明的一个实施例中,查询消息可描述要由给定目标设备满足的一组预定判据(例如,“接收这一消息的目标设备有一个名为PATENT.APP.DOC的文件吗?”或“接收这一消息的目标设备能运行DOS吗?”)如果所接收的消息是另一类型的查询,本发明的方法可前进到图8中所示的子例程,如图6中在D处指出的那样。
图8在800显示图4的在网络环境中在多个目标设备之间进行通信的方法中的另一子例程的一个实施例。
如在块802中所见,目标设备114可确定它是否满足在块604接收的消息的查询中包括的预定判据。这可通过例如将该查询消息中包括的判据与目标设备114的任何适当的部件进行比较来完成。例如,如果所接收的查询消息询问“接收这一消息的目标设备有一个名为PATENT.APP.DOC的文件吗?”,则目标设备114可检查它的文件以确定是否有任何文件与所接收的查询消息中所请求的文件匹配。如果所接收的查询消息询问“接收这一消息的目标设备能运行DOS吗?”,则目标设备114可评估它自己的系统配置以确定它是否匹配所接收的查询消息中所描述的配置。
如在块804中所见,如果目标设备114的确满足预定判据,则目标设备114可向始发该查询的目标设备返回响应数据。例如,目标设备112可广播一个查询消息,以询问“接收这一消息的目标设备有一个名为PATENT.APP.DOC的文件吗?”如果目标设备114有文件PATENT.APP.DOC(即满足预定判据),则目标设备114可向目标设备112发送一个响应,以指出目标设备114有该文件。在本发明的一个实施例中,如果目标设备114没有该文件,则目标设备114也发送一个响应,指出它没有该文件。
根据本发明的一个实施例,如果当前目标设备114满足预定判据,则目标设备114直接向始发对等目标设备返回它的响应,而不从当前目标设备114通过中间目标设备转发。这样,例如在图1的实施例中,如果目标设备114经由中间目标设备118从对等目标设备128接收一个搜索查询,则目标设备114将直接向目标设备128发送它的响应数据。目标设备114能直接向目标设备128做出响应,是因为根据本发明已使目标设备114可获得关于目标设备128的信息。例如,目标设备114可具有关于目标设备128的信息,因为目标设备114先前已利用关于目标设备128的信息,如目标设备128的IP地址更新了它的对等表(如在块508所见)。
如在块814、816、818、828所见,不管目标设备114是否满足该查询消息的预定判据,目标设备114都可在其后确定是转发该数据消息还是使其失效。
如在块814中所见,查询消息可包括或关联到一个跳跃计数器,该计数器可在收到该数据消息时递增。这一跳跃计数器可使用本领域已知的任何适当手段由接收目标设备114递增。例如,可使用一个适当的算法使跳跃计数器递增。确定跳跃计数器的算法可基于诸如网络限制和给定对等节点的处理限制等因素。跳跃计数器可指示该数据消息已被接收的次数。在本发明的一个实施例中,在每次该数据消息被接收时,接收该数据消息的每个目标设备使该跳跃计数器递增。
如在块816中所见,该跳跃计数器可与该特定数据消息的存在时间值t比较,以确定该消息是否应失效(即该消息已被接收的次数,或者说跳跃计数等于存在时间值吗?)。在图8所示实施例中,该跳跃计数器与存在时间值t比较,以确定该跳跃计数器是否等于存在时间值,如果该跳跃计数器不等于,则该消息没有失效。在本发明的另一实施例中,该跳跃计数器与存在时间值t比较,以确定该跳跃计数器是否大于存在时间值,如果跳跃计数器大于存在时间值,则该消息没有失效。在本发明的又一实施例中,该跳跃计数器与存在时间值t比较,以确定该跳跃计数器是否小于存在时间值,如果该跳跃计数器小于存在时间值,则该消息没有失效。
可用任何适当的手段确定存在时间值。例如,该值可根据控制该存在时间值的目标设备的规格说明预先设置。在本发明的一个实施例中,控制存在时间值的目标设备是始发该数据消息的目标设备。或者,一个特定目标设备的用户可设置该存在时间值。存在时间值可基于诸如网络阻塞和该目标设备的处理速度等因素。由给定的目标设备使用的传输机制可确定该存在时间值。或者,一个适当的算法可根据诸如网络阻塞和给定对等节点的处理限制等因素控制存在时间值。
如在块818中所见,如果该跳跃计数器等于该存在时间值,则可使该消息失效。在本发明的一个实施例中,一旦使该消息失效,接收目标设备114便不再向另一目标设备转发该消息。
如在块828中所见,如果该跳跃计数器不等于该存在时间值,则目标设备114可继续向一个或多个其他目标设备转发该数据消息。在图8所示实施例中,例如接收目标设备可以把该消息转发给预定个数(n)的相邻节点/对等目标设备。这一相邻节点预定个数可通过任何适当的手段确定,包括在上文块408中描述的那些手段。
然后,接收目标设备114可返回块602,如图6和图8中在B处指示的那样。
现在回到图6,如果所接收的消息不是ping消息或查询消息,如在块616中所见,目标设备114可确定所接收的消息是否是对目标设备114广播的查询提供响应数据的数据消息。
这种响应数据可以是例如下列中的一个或多个:一个或多个相邻目标设备能在其上接受传入的连接的端口号,一个或多个相邻目标设备的IP地址,一个或多个相邻目标设备在该网络上共享的文件数,一个或多个相邻目标设备在该网络上共享的数据的千字节数,关于给定目标设备或关于一个或多个相邻目标设备的软件或硬件部件的信息,关于给定目标设备或关于一个或多个相邻目标设备的软件或硬件配置的信息,关于给定目标设备或关于一个或多个相邻目标设备的软件或硬件兼容性的信息,或关于给定目标设备可用的文件或一个或多个相邻目标设备可用的文件的信息。
该响应数据还可包括来自一个或多个相邻对等设备的汇聚列表(或对等表)的全部或部分。或者,该响应数据可包括对目标设备114发送的查询的回答。例如,如果目标设备114广播一个查询,以询问“你有名为TRADEMARK.APP.EXE的文件吗?”,则所收到的消息可以是一个响应,其指出一个或多个相邻目标设备有此文件。在本发明的一个实施例中,该响应数据可直接从响应目标设备发送给最初广播该查询的目标设备。
例如,在图1的实施例中,如果目标设备114向相邻设备112、116、118发送一个查询,则目标设备114可接收来自目标设备112的一个响应数据消息,其向目标设备114指出目标设备112是否有此文件。目标设备114还可接收来自目标设备116的一个数据消息,其向目标设备114指出目标设备116是否有此文件。目标设备114可接收来自目标设备118的一个数据消息,其向目标设备114指出目标设备118是否有此文件。
此外,目标设备114可直接从目标设备136接收数据消息,其向目标设备114指出目标设备136是否有该文件,即使目标设备114没有直接查询目标设备136。目标设备136能直接向目标设备114做出响应,是因为根据本发明已使目标设备136可获得关于目标设备114的信息。例如,目标设备136可有关于目标设备114的信息,因为目标设备136先前已利用关于目标设备114的信息,如目标设备114的IP地址更新了它的对等表(如在块508所见)。
目标设备114还可直接从目标设备128、138接收数据消息,其指出这些目标设备128、138中的每个是否有该文件,即使目标设备114没有直接查询目标设备128、138。这样,通过查询目标设备112、116、118,目标设备114能从目标设备112、116、136、118、128、138接收直接的响应。
如在块618中所见,目标设备114然后可处理这些响应数据。例如,目标设备114可把这些响应数据存储在目标设备114上的或与目标设备114通信的存储单元中。或者,目标设备114可通过在目标设备114上的或与目标设备114通信的用户接口把这些响应数据呈现给用户。例如,目标设备114可把这些响应数据作为搜索结果显示给用户。
如图6中所示,通过循环630,图6的例程可对任何及全部输入的消息重复执行。
图7在700显示图4的在网络环境中在多个目标设备之间进行通信的方法中的另一个子例程的一个实施例。
如在块702中所见,目标设备114可等待直至输入一个查询。这一查询可以是如前所述的任何适当的查询。该查询可请求关于例如下列中的一个或多个的信息:一个或多个相邻目标设备能在其上接受传入的连接的端口号,一个或多个相邻目标设备的IP地址,一个或多个相邻目标设备在该网络上共享的文件数,一个或多个相邻目标设备在该网络上共享的数据的千字节数,关于给定目标设备或关于一个或多个相邻目标设备的软件或硬件部件的信息,关于给定目标设备或关于一个或多个相邻目标设备的软件或硬件配置的信息,关于给定目标设备或关于一个或多个相邻目标设备的软件或硬件兼容性的信息,或关于给定目标设备可用的文件或一个或多个相邻目标设备可用的文件的信息。
在本发明的一个实施例中,用户可输入查询。或者,该查询可从另一目标设备或网络102和/或系统100的另一部件输入。例如,用户可在目标设备114处输入一个查询,以寻找文件“PATENT.APP.DOC”。
如在块704中所见,目标设备114然后可把该查询转发给预定数量(n)的相邻节点。这一预定的相邻节点数可通过任何适当的手段确定,包括上文在块408描述的那些。目标设备114然后可返回到块702,如在图4和图7中的C处指出的那样。
尽管在全功能数据处理系统的情境中描述了本发明,但应该理解,所描述的处理可分布在任何其他适当的情境中。例如,所描述的处理可采取指令的计算机可读介质的形式。不管实际用于承载该分布的信号承载介质的类型如何,本发明同样地适用。计算机可读介质的实例包括可记录型介质,如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,以及传输型介质,如数字和模拟通信链路、使用如射频或光波传输等传输形式的有线或无线通信链路。该计算机可读介质可采取编码格式的形式,这些编码格式在特定数据处理系统中被解码供实际使用。