1

我正在通过单台机器内的模拟来学习 p2p 架构。为此,有人告诉我我可以使用命名管道。我正处于模拟的设计阶段。以下是我计划前进的方式:

  1. 创建一个能够加入 p2p“网络”的对等程序。该网络是此类对等点的集合。对等点通过机器中的进程 ID 标识。

  2. 当一个对等点被创建,即加入网络时,它通过将自己引导到一个“主节点”或跟踪器来宣布它的到来。当对等点宣布其到达时,主节点更新其对等点列表(进程 ID),并将网络中可用的对等点列表返回给新对等点。

  3. 进入网络后,对等方现在可以从网络下载文件或将文件上传到对她/他拥有的文件的传入请求。对等方通过网络接收到的文件自动变为可供上传。

  4. 为了下载文件,对等方调用定位算法,该算法使用当前对等方正在寻求下载的文件来定位对等方。

如您所见,我对设计的理解存在差距。从我幼稚的方法来看,我将 #2 和 #3 视为不同的步骤。但是,我有一种感觉,它们必须以某种方式相关。我想我缺乏了解分布式哈希表和 Chord 或 CAN 等算法的工作原理。我需要帮助来收集这些分散的想法,这将有助于我实际实施模拟。

首先,我的第一个问题是:我在哪里以及如何启动定位算法?或者上面列出的步骤中创建的分布式哈希表在哪里?

4

1 回答 1

2

您可以选择像 Napster 那样实现跟踪服务器。或者您可以实现支持 DHT 的节点 - 比特种子风格。

在前一种情况下,跟踪器跟踪所有节点及其托管的文件。

在后者中,每个节点都跟踪信息(在这种情况下假定网络中至少有一个对等点)。然后,一个新的对等点将联系一个支持 DHT 的对等点,并获取有关托管它所需文件的节点的信息。

于 2011-04-25T18:09:12.407 回答