IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越。之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT。
为什么有NAT技术?
NAT主要用来缓解全球的IPv4地址不够用的情况,IPv4地址最多能提供232个(4,294,967,296),现在IPv4已经变得非常紧张了,IPv6发展了这么多年,一直没能取代IPv4的地位,IPv6可以容纳的地址数量是是2128,可以给地球上的每一粒沙子分配一个ip地址(万物互联的物联网必须要使用ipv6)。
什么是 NAT(Network Address Translation,网络地址转换)?
NAT允许内网计算机共享一个公网ip地址(这样就可以达到节约ip地址了作用了),NAT对于p2p网络、VoIP电话、视频游戏等需要客户端作为服务端进行通信的应用非常重要,如果没有NAT这些应用,甚至都不能正常工作。
首先放一张图(图是小编随手画的,好像挺难看 😓),这是我们现在大多数使用路由器的网络结构。路由器右边是内网,计算机A、B、C使用的是内网ip,路由器左侧是公网,路由器使用的是公网IP,通常情况下,公网计算机M是无法访问内网计算机A、B、C的。
imageNAT大致分为两大类:圆锥形和对称型
圆锥形又分为三种
- Full Cone:计算机A链接公网计算机M后,NAT打开一个端口,以后公网上任何发送到这个端口的数据(不限于M)都可以访问到A,这个时候任何从公网上发过来的数据都可以通过该端口到达内网计算机A,只限制的端口,没有限制ip地址。
- Address Restricted Cone:内网计算机A通过路由器链接了外网计算机M,NAT打开一个端口,这个时候外网计算机M(只限于M)可以通过任何端口和内网计算A进行通信。限制了ip地址,没有限制端口。
- Port Restricted Cone:内网计算机A通过路由器链接了外网计算机M,NAT打开一个端口,M可以通过这个端口跟A进行通信,这种即限制了ip地址又限制了端口。
Symmetric NAT(对称形)
对称型NAT和圆锥形不同的地方在于:
- 圆锥形NAT对于同一台内网计算机,无论与那一台的外网服务器通信,NAT所分配的端口不变。
- 对称型NAT对于同一台内网计算机与不同的外网计算机通讯会分配不同的端口号,对称型NAT一般不能用于p2p软件。
NAT的实现和策略方式有很多种:
- STUN:Session Traversal Utilities for NAT
- TURN:Traversal Using Relays around NAT
- ICE: Interactive Connectivity Establishment
- ......
具体的协议工作方式不在本文的谈论范围,有兴趣的读者可以参考一下资料
https://en.wikipedia.org/wiki/NAT_traversal
http://www.eyeball.com/standards/stun-turn-ice/
最后是我们的重点:IPFS 和 ICE NAT traversal
IPFS网络采用是 ICE NAT traversal框架来实现的NAT通信
ICE不是一个协议,而是一个框架(framework),整合STUN、TURN和其他类型的NAT协议,该框架可以让客户端利用各种NAT方式打通网络,从而完成NAT通信,这对于IPFS的p2p网络非常重要。
根据小编的测试结果:IPFS的p2p网络适应性非常强,在各种复杂的网络环境下都可以轻松实现NAT通信,以后使用ipfs和挖矿的读者在网络设置上面会减少很多麻烦了。
原文来自于知乎专栏:IPFS指南(IPFS指南)作者:飞向未来
封面图片来自于:https://www.downloads.netgear.com/files/answer_media/images/30186/2.png
网友评论