有没有使用专用中央服务器查找对等方的已知方法?
即:如果我有同行正在断开连接并重新连接到互联网,但每次都获得一个新的IP地址,我想连接到它们而无需设置专用服务器进行注册.
我正在考虑使用对等电子邮件地址定期发送连接对等的清单,使用某种时间码,无需专用服务器.如果在尝试所有先前已知的对等地址之后没有任何对等体可以连接,则这将是后备.但现有的寻找同行的模式更可取.
ano*_*439 42
没有必要知道至少一个初始同伴发现更多.完全P2P协议,例如Gnutella或Gnutella2,或更简单的Overnet(由Storm蠕虫着名),基于每个客户端具有少数同伴的启动列表.例如,这些可以来自基于网络的自动跟踪器.客户端将通过向其他对等方请求更多地址来发现整个网络或其中的一部分,例如在委派文件搜索时.
如果您真的不能拥有任何类型的集中资源,那么您可以做的最好的事情就是通过广播消息和最终的IP地址扫描找到第一个对等体.第一种方法是善意的,但至少有98%的情况不会产生任何结果.当然,后一种方法是滥用互联网,在大多数国家也是非法的.
我真的会重新考虑使用某种中央跟踪器.它可以像Web服务器上的PHP脚本一样简单(gnutella网络,今天,由20个这样的脚本支持,由甚至彼此不认识的人托管).这肯定比电子邮件更轻量级(由于垃圾邮件过滤器,至少,无论如何都不会起作用).
小智 6
利用可以发布数据的任何现有论坛.想想秘密的IRC频道,在照片中嵌入数据并发布到照片共享网站4chan ?,任何允许你的应用程序登录和发布数据而没有captia登录的网站等.
http://chatzilla.hacksrus.com/faq/#password
另一种策略可能是在数字货币交易中嵌入消息.选择一个可能会徘徊的廉价硬币......可能是DOGE或MOON硬币.在您的应用中构建钱包功能.这样您就可以在应用程序控制的地址之间来回发布微交易.仍然会有矿工费,但这只是便士的一小部分.即使他们稍后禁止向交易添加元数据,您也可以在MOON中进行与您的IP地址相当的交易,并使用MOON硬币中的虚荣地址为您的应用程序.这样,当一个新节点上线时,它知道要搜索区块链的内容 - 2daMOON%bootStr @ pM3.发送 - 104.003021133 MOON IP = 104.3.21.133不是一个昂贵的主张.
BitcoinQT客户端使用各种方法来查找节点,其中一些可能对您有用.
IRC不再使用,但可能最容易实现:
从版本0.6.x开始,比特币客户端默认不再使用IRC引导,并且从版本0.8.2开始,对IRC引导的支持已完全删除.以下文档对于大多数以前的版本是准确的.
除了学习和共享自己的地址之外,节点还通过IRC通道了解了其他节点地址.见irc.cpp.
在获知自己的地址后,节点将自己的地址编码为字符串以用作昵称.然后,它随机加入一个名为#bitcoin00和#bitcoin99之间的IRC频道.然后它发布了世卫组织命令.线程读取通道中出现的行并解码通道中其他节点的IP地址.它一直循环,直到节点关闭.
当客户端从IRC发现一个地址时,它将地址上的时间戳设置为当前时间,但它使用了51分钟的"惩罚",这意味着它看起来几乎提前一小时才被发现.
小智 5
老问题,但我自己一直在思考这个问题,所以我会发表我的 2 美分。简而言之,如果节点知道至少一个有效的对等点,则不需要中央服务器。新节点必须由任何当前成员添加到网络(例如,受邀请的节点,或者节点生成另一个节点,具体取决于您的应用程序)。
假如说:
代理跟踪同行;该地址簿的大小以及条目的管理方式将取决于系统的性质;例如,如果对等点使用稳定地址,则对等点保持连接多长时间
代理与其他对等点共享对等点信息
相对于节点连接到网络以更新其地址簿的频率,至少有一些代理在相对较长的时间内保持可用(或节点具有稳定的地址)
除了对等地址之外,还跟踪可用性信息(此处有许多选项取决于您的系统。示例包括:对等点是否有稳定的地址、最后一次看到的时间、一些可用性指标、内容/服务类型信息、地址有效时间(如果)已知)
新代理至少使用一个有效对等点进行初始化(不必是中心节点,可以是任何有效节点)
如果可能存在恶意对等方,则需要信任机制
当对等点上线时,它会查询其对等点表中的对等点以发现哪些是活动的,并且可能会删除过期的动态地址。节点交换对等信息并可能相互链接。该对等点发现/交换可以继续一定数量的跳或经由随机游走,直到对等点列表(如果具有足够的大小和/或质量)。
更多细节:
节点连接并共享对等信息的频率与节点地址更改的频率相关,因此地址簿不会变得陈旧,节点也不会断开连接,因为它以前的对等点在其最后已知的地址上都不可用
节点可能需要限制它们接受的对等点的数量,以避免围绕最稳定的节点出现集中化趋势。
节点应该对它们保留的对等点进行选择性;即他们更有可能交换数据(例如基于历史的权重)
节点链接可以是不对称的或对称的,具体取决于应用程序