如何识别纯对等系统中的节点?

时间:2013-02-14 13:34:23

标签: java networking p2p

有一个问题我无法找到解决方案:

  

如何识别纯对等系统中的节点   运行相同的应用程序Foobar?

enter image description here

在上图中,我们假设所有节点都运行基于 pure peer to peer networking的相同应用程序。

注意:我用Java标记了这个,因为这是我想要使用的语言。请不要引用已经这样做的库的名称,请解释我的算法/方式如何做一个搜索。我想了很多,但还没有理解如何进行搜索?为了了解什么是纯p2p系统,我想编写一个基于纯p2p系统的小应用程序。它可以是一个简单的聊天应用程序。

3 个答案:

答案 0 :(得分:1)

如果您询问如何查找节点,那么这就是目录服务的用途 - 节点在这些服务器上注册自己。

如果您询问节点应如何命名 - GUID运行良好,或者您可以再次使用目录服务进行命名。

答案 1 :(得分:0)

这取决于您的应用程序的规模。在局域网上,它很简单:你广播你的存在(通常通过预定的多播地址)。

在更大的互联网上,路由器会阻止广播和多播流量,因此无法宣布您的存在。相反,你需要至少一个同伴作为种子,才能发现其他同伴。当每个同伴都了解他人时,它会与他们交流知识。

答案 2 :(得分:0)

如上所述,目录服务很受p2p网络的欢迎,如torrent网络等。

对于更“纯粹”的p2p,您可以阅读Gnutella项目。

  

...在初始启动时,客户端软件必须引导并找到至少一个其他节点。为此已经使用了各种方法,包括软件附带的可能工作节点的预先存在的地址列表,使用已知节点(称为Gnutella Web缓存)的更新Web缓存,UDP主机缓存,甚至很少甚至是IRC。

其他一些解决方案可能涉及多播用于同一网络p2p