【问题标题】:How to identify nodes in a pure peer to peer system?如何识别纯对等系统中的节点?
【发布时间】:2013-05-19 20:46:40
【问题描述】:

有一个问题我找不到解决办法:

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

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

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

【问题讨论】:

    标签: java networking p2p


    【解决方案1】:

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

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

    【讨论】:

    • 您能否详细说明您的答案。我还不太明白
    • @SuhailGupta 首先,您需要在问题中定义“识别”一词的含义。需要查找节点还是名称节点?
    • 查找运行相同应用程序的节点
    • 在 WAN 上不行 - 你需要有一些注册表(目录服务)。它可以是分布式的,但它必须存在——新节点至少需要知道一些节点(或服务器)才能连接。
    • 谢谢。 “..你需要一些注册表(目录服务)。它可以分发”你能解释一下吗?它can be distributed
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      如上所述,目录服务在种子网络等 p2p 网络中很受欢迎。

      更多“纯”p2p,你可以阅读Gnutella项目。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多