服务器模块
1、方案一
Libp2p 是一个 P2P 的网络,分为网络层、路由层、交换层。
libp2p是一套点对点的协议来发现节点,并连接他们,发现内容,并转移它们。
使用 libp2p 的一个节点可以与另一个节点进行通信,能够使用各种不同的传输方式,这些传输方式包括连接延迟,以及通过不同协议进行通信,并根据需求进行协商。libp2p 模块在 IPFS 中主要负责数据的传递功能,即路由、网络、交换等。
libp2p汇集了各种传输和点对点协议,使开发人员可以轻松构建大型,强大的p2p网络。
1、Libp2p 流程
运行 Libp2p 协议的节点在初始化之后需要通过各种方式发现更多的节点,比如 Bootstrap list、mDNS、DHT 等,这主要由发现模块负责与实现。
当发现更多接点后,Libp2p 会把这些获取到的节点信息存储在分布式记录存储模块中,供以后方便使用。
当上层应用需要连接某个节点时,节点路由模块会找到多条不同的路径,连接管理模块会对这些路径进行尝试连接。
连接成功之后,上层应用将通过内容路由模块与连接节点进行内容交互,在底层通过传输模块互相传递数据。
下面我们具体分析一下连接的建立过程,主要包括3个步骤,包括地址解析、传输协议适配、双方协商。
地址解析
传输协议适配
双方协商连接建立之后,libp2p 会首先进行双方协商,确定对方支持哪些功能。负责协商功能的是 identify 协议,它是内置在 libp2p 的基础协议,能够交换节点的公钥、本地监听地址等。协商完成后,连接两端的节点会找到共同支持的协议,并且初始化它们。初始化时会注册每种协议的 handler(回调函数),当有协议数据到达时,相应的 handler 就会被调用。由于多种传输协议会复用同一个底层连接,所以连接会被拆分成多个“流(Stream)”。
方案二
普通家用宽带是不是只有动态的公网ip地址
服务端向客户端发送邮件
客户端读取邮件的ip地址
替换服务端ip
所有客户端像每个客户端发送邮件
替换所有ip地址
动态域名解析
服务器建立用户辅助p2p连接
不就是告诉用户的相关连接方式
能不能通过邮件方法实现
软件会自动读取邮件内容
用户端机是服务端服务端即使用户端
家用的是ip地址是自动变化
把这些数据同步到所有客户端就行
不走服务器
通过邮件或者第三方软件
主服务器被攻击,会更换ip地址。批量发送邮件。到所有客户端。客户端调用邮箱里信件,读取服务器ip地址自动更换。
支持超多网络叠加使用
多个wifi,好几条宽带
我这种可不可以用?