---恢复内容开始---
Libp2p学习
参考资料:libp2p-specifications : https://github.com/libp2p/specs
1. 介绍
Libp2p的实现目标是:
- 支持各种各样的传输方式:
- 传输:TCP,UDP,SCTP,UDP,uTP,QUIC,SSH,etc.
- 安全传输:TLS,DTLS,CurveCP,SSH
- 有效使用sockets(连接重用)
- 允许端点之间的交流可以在一个socket上复用(避免过多的握手)
- 允许端点之间通过一个协商过程使用多协议以及各自的版本
- 向后兼容
- 在现在的系统中可以运行
- 充分使用当前网络技术的能力
- 实现NAT转换
- 实现连接中继
- 实现加密通道
- 充分使用基础传输(例如原生的流复用等)
传统的7层OSI模型表征不适合libp2p。Libp2p根据协议的角色(功能)进行划分。不同的lip2p协议可以具有相同的功能,例如,bootstrap lists,mDNS,DHT discovery,PEX都进行节点发现,但他们可以同时存在甚至协同工作。而在OSI中,每一层通常都只有一个协议。
2. 基础
libp2p使用了multiaddr,一个自描述的地址形式,可以理解为不同协议不同地址类型的一个封装。这使得libp2p可以不透明的处理系统中的所有地址,支持网络层中的各种传输协议。
libp2p的协议是多个协议的集合。为了节约资源并使连接更容易,libp2p可以通过一个端口执行所有操作,它可以通过点对点连接复用其众多协议。这种多路复用适用于可信赖的流连接或者不可信赖的数据报。libp2p的目标是变得更加模块化和灵活,以适应于各种应用场景。
libp2p中的交流可以是加密、签名或者是明文。它使用了TLS这样的加密模型,但并不是整个TLS。它只使用了TLS模型中用于加密的最小的一部分。
由于对称NAT,容器以及虚拟机NAT和其他的不能绕过的NAT,libp2p必须使用中继通信来建立一个全连接图。中继应该是可选的,能够被用户关闭。连接中继应该作为transport实现,以对上层透明。
---恢复内容结束---
- 还没有人评论,欢迎说说您的想法!