【董天一】IPFS: NAT traversal(NAT穿越)

作者简介:董天一 ,IPFS/Filecoin中国区技术布道人 ,《IPFS指南》作者 毕业于北京大学软件与微电子学院 曾担任甲骨文亚洲研发中心(中国)数据库开发工程师 资深区块链技术开发者,现致力于IPFS/Filecoin在中国的技术推广

IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越。之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT。

为什么有NAT技术?

NAT主要用来缓解全球的IPv4地址不够用的情况,IPv4地址最多能提供2^32个(4,294,967,296),现在IPv4已经变得非常紧张了,IPv6发展了这么多年,一直没能取代IPv4的地位,IPv6可以容纳的地址数量是是2^128,可以给地球上的每一粒沙子分配一个ip地址(万物互联的物联网必须要使用ipv6)。

什么是 NAT(Network Address Translation,网络地址转换)?

NAT允许内网计算机共享一个公网ip地址(这样就可以达到节约ip地址了作用了),NAT对于p2p网络、VoIP电话、视频游戏等需要客户端作为服务端进行通信的应用非常重要,如果没有NAT这些应用,甚至都不能正常工作。

首先放一张图(图是小编随手画的,好像挺难看),这是我们现在大多数使用路由器的网络结构。路由器右边是内网,计算机A、B、C使用的是内网ip,路由器左侧是公网,路由器使用的是公网IP,通常情况下,公网计算机M是无法访问内网计算机A、B、C的。

NAT大致分为两大类:圆锥形和对称型

圆锥形又分为三种

  • 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和挖矿的读者在网络设置上面会减少很多麻烦了。


相关文章和视频推荐

圆方圆学院汇集大批区块链名师,打造精品的区块链技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。

公开课地址:https://ke.qq.com/course/345101?flowToken=1007371

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

python爬虫+R数据可视化 实例

Python 和 r语言这对黄金搭档,在数据获取,分析和可视化展示方面,各具特色,相互配合,当之无愧成为数据分析领域的两把利剑。该项目分为两个模块: 1,数据准...

50140
来自专栏黑白安全

10大白帽黑客专用的 Linux 操作系统

今天让我们来介绍十个黑客专用的操作系统,它们被白帽黑客用作渗透测试的工具。这里我把 Kali Linux 列为首位,是因为它在渗透测试中非常流行,它的开发团队 ...

22230
来自专栏星流全栈

使用Elixir和CoAP搭建IoT平台 - 01 CoAP介绍

29960
来自专栏FreeBuf

Kali linux发布新版本了,一起来看看都有什么新功能吧

终于更新了!Kali官方近日正式宣布推出Kali Linux 2017.1滚动发行版,它带来了一系列令人兴奋的更新和功能。与所有新版本一样,您可以使用更新的软件...

30480
来自专栏编程一生

架构师之路--从业务角度谈缓存的选型

19950
来自专栏程序员的SOD蜜

用惯了ORM,居然不会写分页SQL了

    最近准备找新工作,于是下午请了假,去上地软件园一家国内大型软件外包公司去面试架构师,从国贸到面试地点,坐地铁足足走了一个半小时,终于到了前台,联系了HR...

32860
来自专栏区块链技术指北

「译」保护你的个人资产

1、购买 Ledger 或者 TREZOR 硬件钱包。 存储 ETH、代币、ETC、BTC 和其他虚拟货币最安全最便捷的方式之一就是使用 Ledger Nano...

32170
来自专栏ChaMd5安全团队

我是如何登陆某知名主播游戏账号的

我是如何登陆某知名主播游戏账号的 From ChaMd5安全团队核心成员 香香 在寒假的时候在我表姐的带领之下我迷上了某某狼人杀。玩着玩着我想实现裸点场上全部人...

40790
来自专栏FreeBuf

走进计算机取证分析的神秘世界

1. 介绍 计算机技术是人们生活的重要组成部分,而且它正在迅速增长,同样发生在计算机犯罪方面,如金融诈骗,非法入侵,身份盗窃和盗窃知识产权。为了对付这些计算机...

353100
来自专栏阮一峰的网络日志

反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux

一、自由软件基金会的呼吁 上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人...

37950

扫码关注云+社区

领取腾讯云代金券