---恢复内容开始---
Libp2p学习
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实现,以对上层透明。
---恢复内容结束---
内容来源于网络如有侵权请私信删除