如果存在纯 p2p 连接而没有主服务器,程序如何相互找到。
我听说过 STUN TURN、ICE Torrent Tracking 等技术
有没有一种方法可以不依赖某些服务器进行协商而在互联网上找到其他服务器?
如果不是,那么依赖其中一个的最少方式是什么,比如说让两个游戏通过 p2p 相互连接?
答案1
您可能确实需要一台服务器来宣布游戏。另一种方法是直接输入远程系统的地址。
请注意,服务器不一定需要运行相关游戏的副本。可以采用更通用的方法,例如以某种方式使用 DNS 服务器(该服务器处理 DNS 查询,不一定专门针对单个游戏设计)。
如果您不喜欢依赖 DNS(因为 DNS 根是集中式的),那么理论上可以采用更去中心化的方法,例如依赖公共 IRC 频道(与 IRC 服务器通信)或 Usenet 新闻组。我现在肯定是在描述理论,而不是实践。特别要注意的是,Usenet 服务器已经因为被垃圾邮件发送者占领而失去人气,这些垃圾邮件发送者并不关心他们是否在滥用资源。
可能还有其他一些方法。我不太确定这些,但我把它们作为可能的想法素材(也许其他人可以扩展成另一个答案)。也许可以看看:BitTorrent、Freenet、比特币/区块链或 BGP。已知此类协议至少具有一定程度的去中心化,并且可能适合或在某种程度上容易适应不太依赖运行服务器的模型。