XMuli / ChineseChess

Cross-platform and online battle platform game based on Qt: Chinese Chess. Also known as:『Xiangqi』『中国象棋』
https://www.bilibili.com/video/av45509758
GNU General Public License v3.0
716 stars 189 forks source link

【功能请求】libp2p 联机 #34

Open Pantyhose-X opened 1 year ago

Pantyhose-X commented 1 year ago

libp2p 不协议公网IP 就可以和全世界玩象棋的人联机!

为什么是libp2p? 考虑使用 libp2p 作为网络层来创建健壮的 P2P 应用程序有几个原因:

模块化:libp2p 被设计为模块化,允许开发人员混合和匹配不同的组件以满足他们特定应用程序的需要。这使得定制网络堆栈变得容易,以满足任何 P2P 应用程序的特定要求。

广泛的传输可配置性:libp2p 提供了一组可以适应支持各种传输协议的规范,允许 libp2p 应用程序在各种运行时和网络环境中运行,因为丰富的传输协议选择使得在各种场景中使用 libp2p 成为可能。

多功能性:除了支持广泛的传输之外,libp2p 还提供了一系列的发现机制、数据存储和检索模式,并且还以多种编程语言实现,为开发人员在构建 P2P 应用程序时提供了极大的灵活性。

安全性:libp2p 包括几个安全特性,例如使用公钥加密的对等身份验证和使用现代密码算法的对等点之间的加密通信

健壮性:libp2p 是一种健壮可靠的网络协议,旨在承受压力、干扰和变化。它的特性和设计选择确保它能够在广泛的环境中有效和高效地运行,并且能够从中断或故障中快速恢复。它还通过使用缓解技术提供针对网络攻击的保护。

弹性:P2P 网络通常比传统的客户端-服务器网络更具弹性,因为没有单点故障。libp2p 包括对等点发现内容路由等功能,这些功能有助于确保网络保持可用和可访问性,即使某些对等点离线或无法访问也是如此。

效率:P2P 网络可以更有效地利用资源,因为数据分布在多个对等点而不是存储在中央服务器上。libp2p 包括各种存储和检索模式,允许开发人员在网络上有效地分发数据,从而可以以经济高效且可扩展的方式存储和检索数据。

穿透 NAT 障碍:libp2p 配备了NAT 遍历功能,即使在 NAT 设备或防火墙后面,也允许对等点之间进行 P2P 通信。这有助于保持网络的连通性,并确保尽管存在这些障碍,网络仍可访问。

消息分发和传播:libp2p 使用的一种模式是发布/订阅 (pubsub),它允许发送者(发布者)向多个接收者(订阅者)发送消息,而发布者不必知道订阅者是谁。libp2p 通过使用像gossipsub这样的协议来实现 pubsub ,为开发人员提供了一种在其 P2P 应用程序中交换数据和消息的灵活有效的方法。

互操作性:不同编程语言中的 libp2p 实现和跨版本的 libp2p 版本旨在相互互操作。这使得来自不同语言生态系统的应用程序能够无缝通信。这有助于促进健康、互联的 P2P 应用生态系统。

去中心化:P2P 网络的主要优势之一是它们的去中心化性质,允许它们在没有中央授权的情况下运行。libp2p 旨在促进对等点之间的去中心化通信,从而可以构建 P2P 应用程序以抵抗审查并在面对网络中断时更具弹性。

其他联机协议

devp2p hyper:// gemini:// Earthstar Pigeon Yggdrasil QUIC 协议