有没有使用专用中央服务器查找对等方的已知方法?
即:如果我有同行正在断开连接并重新连接到互联网,但每次都获得一个新的IP地址,我想连接到它们而无需设置专用服务器进行注册.
我正在考虑使用对等电子邮件地址定期发送连接对等的清单,使用某种时间码,无需专用服务器.如果在尝试所有先前已知的对等地址之后没有任何对等体可以连接,则这将是后备.但现有的寻找同行的模式更可取.
没有必要知道至少一个初始同伴发现更多.完全P2P协议,例如Gnutella或Gnutella2,或更简单的Overnet(由Storm蠕虫着名),基于每个客户端具有少数同伴的启动列表.例如,这些可以来自基于网络的自动跟踪器.客户端将通过向其他对等方请求更多地址来发现整个网络或其中的一部分,例如在委派文件搜索时.
如果您真的不能拥有任何类型的集中资源,那么您可以做的最好的事情就是通过广播消息和最终的IP地址扫描找到第一个对等体.第一种方法是善意的,但至少有98%的情况不会产生任何结果.当然,后一种方法是滥用互联网,在大多数国家也是非法的.
我真的会重新考虑使用某种中央跟踪器.它可以像Web服务器上的PHP脚本一样简单(gnutella网络,今天,由20个这样的脚本支持,由甚至彼此不认识的人托管).这肯定比电子邮件更轻量级(由于垃圾邮件过滤器,至少,无论如何都不会起作用).
在Intranet内的对等体的有限情况下,可以将广播UDP消息发送到已知端口,要求对等体报告回来.
利用可以发布数据的任何现有论坛.想想秘密的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客户端使用各种方法来查找节点,其中一些可能对您有用.
Satoshi客户端节点发现
IRC不再使用,但可能最容易实现:
从版本0.6.x开始,比特币客户端默认不再使用IRC引导,并且从版本0.8.2开始,对IRC引导的支持已完全删除.以下文档对于大多数以前的版本是准确的.
除了学习和共享自己的地址之外,节点还通过IRC通道了解了其他节点地址.见irc.cpp.
在获知自己的地址后,节点将自己的地址编码为字符串以用作昵称.然后,它随机加入一个名为#bitcoin00和#bitcoin99之间的IRC频道.然后它发布了世卫组织命令.线程读取通道中出现的行并解码通道中其他节点的IP地址.它一直循环,直到节点关闭.
当客户端从IRC发现一个地址时,它将地址上的时间戳设置为当前时间,但它使用了51分钟的"惩罚",这意味着它看起来几乎提前一小时才被发现.