如何在P2P网络中更新节点



假设我有一个带有节点的的P2P网络。如果我想更新P2P客户端,我想做的一件事想做:更新每个节点。

现在,我可以想象更新一个节点,并且每次节点都会不时检查它当前与之交互的节点是否是一个较新的版本 - 如果是这样,则从该节点获取更新。

以这种方式,更新将通过P2P网络找到方法,而您要做的就是更新一个节点。此外,您不会依赖中央服务器。

在那里(那里的某个地方;-))这样的更新方案的概念?

这种方法的优点是什么?

pros:如果出于任何其他原因,讨论和讨论真的很酷。

cons:

  • 可能是一个安全漏洞。如果我可以在P2P上放一个流氓同伴网络,我的代码可以宣传实际上是病毒的更新。你至少应确保更新包括某种代码签名和身份验证件。

  • 如果P2P协议中有任何错误或更新代码中的错误然后,您可以进入只能升级所有子集的状态节点。

更好的方法可能是让客户从集中位置获取更新。混合方法是通过宣传URL和文件哈希的中央服务器通知对等式的更新。如果节点可以从对等方获得更新(并验证哈希和代码签名),则很棒。但始终将"从中央服务器下载"作为后备。

您可能还想考虑如何合并"分期推出",以便只有有限数量的同行会收到更新。因此,您可以在将其推出所有其他同行之前,在一个小集合上验证更新。

最新更新