P2P网络在没有服务器的情况下是怎么发现其他节点的?
P2P网络的节点发现机制,类似于找老同学。
刚下载的软件,一般会自带一些常上网的节点清单,就像手机通讯录,包含有比较熟的同学。软件联网后可以一个一个问,有回话的就可以连接上了。
跟随软件下载的通讯录很难维护,所以一个改进做法是随软件下载一个DNS列表,可以通过这个列表获得其他节点的地址。DNS是互联网地址解析服务器,每次用户访问一个网址,DNS负责把网址转换成实际的IP地址。具体解释就不展开了。
随软件下载获得的初始节点,一般只用于首次或者前几次联网,因为每次连接到一个节点,都会从那个节点获得它正在连接的其他节点清单。就像联系到一个同学,拿到一张新的通讯录,合并到自己的通讯录。有些联系不上的自动剔除。后续上网只需要按照自己的通讯录再次扫描即可,顺便刷新一下通讯录以后用。举个例子,现在流行的某区块链网络,每次会主动尝试连接最近连接过的2500个以上其他节点,相互交换通讯录。
总之,P2P网络的互联机制,就是首先随节点软件下载种子节点,上线连网后和其他节点不断交换通讯录,各自保存最近有效的节点数据库以便下次上线时联网。
在一个P2P网络成形的初期,种子节点比较重要,扮演着类似服务器一样的中心数据库的作用。随着网络节点规模扩大,种子节点逐渐失去意义,可以通过随机选取活跃节点代替固定的种子节点,实现完全的去中心化网络。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有