网路层也就是IPFS的libp2p模块。该模块下包含:
网路层的作用是IPFS节点使用各种底层网络协议(可配置的)管理与其他节点的连接,以及保证它们之间正常地有规律地通信。该层不光为整个ipfs提供了基础的网络设备或者网络能力,还增加了加密传输,网络穿透,多链接混合等等技术。
IPFS节点与其他节点连接通信的时候,会跨越广域网,IPFS网络堆栈的特性如下:
1.传输:IPFS兼容现有的主流传输协议,其中最适合浏览器端使用的WebRTC Data Channels,低延时uTP(LEDBAT)传输协议等。 2.可靠性:使用uTP和sctp来保障,这两种协议可以动态调整网络状态。 3.可连接性:使用ICE等NAT穿越技术来实现广域网的可连接性。 4.完整性:使用哈希校验检查数据完整性,IPFS中所有数据块都有唯一的Hash。 5.可验证性:使用数据发送者的公钥以及HMAC消息认证码来检查消息的真实性。
IPFS可以使用任何网络,它并不依赖于IP。这就允许IPFS可用来覆盖全网络。IPFS是通过multiaddr的格式来表示目标地址和使用的协议,以此来兼容和扩展未来可能出现的其他网络协议:
# an SCTP/IPv4 connection
/ip4/10.20.30.40/sctp/1234/
# an SCTP/IPv4 connection proxied over TCP/IPv4/ip4/5.6.7.8/tcp/5678/ip4/1.2 .3.4/sctp/1234/