最近,需要对系统进行 IPv6 化的改造,于是,我就假模假样的做起了调研。
IPv6 的表示方法
IPv6 地址为 128 位长,但通常写作 8 组,每组为四个十六进制数的形式。例如:
2001:0db8:85a3:08d3:1319:8a2e:0370:7344
如果四个数字都是零,可以被省略。例如:
2001:0db8:85a3:0000:1319:8a2e:0370:7344
等价于
2001:0db8:85a3::1319:8a2e:0370:7344
在某些情况下,一个 IPv6 地址中问可能包含很长的一段 0,可以把连续的一段 0 压缩为 ::
。
但为保证地址解析的唯一性,地址中 ::
只能出现一次,例如:
FF01:0:0:0:0:0:0:1101 → FF01::1101 0:0:0:0:0:0:0:1 → ::1 0:0:0:0:0:0:0:0 → ::
综上:
2001:0DB8:0000:0000:0000:0000:1428:57ab 2001:0DB8:0000:0000:0000::1428:57ab 2001:0DB8:0:0:0:0:1428:57ab 2001:0DB8:0::0:1428:57ab 2001:0DB8::1428:57ab
都使合法的地址,并且他们是等价的。
不合法的:2001::25de::cade
,零压缩出现了两次。
同时前导的零可以省略,因此:
2001:0DB8:02de::0e13
等价于 2001:DB8:2de::e13
。
IPv6 和 IPv4
由于 IPv4 到 IPv6 之间有一个漫长的过渡过程,因此,需要将 IPv6 兼容 IPv4 或者 IPv6 映射为 IPv4。
兼容 IPv4 的地址(IPv4-compatible address)
在兼容情况下:如果 IPv4 表示为 X.X.X.X
,那么对应的 IPv6 即为 ::X.X.X.X
(高位补零,同时进行零压缩);
这里的 X.X.X.X
是 IPv4 公共地址的十进制点号表示法,用于 IPv6/IPv4 节点们(同时支持)在使用仅支持 IPv4 的网络上用 IPv6 的协议进行通信。
但是事实证明这种技术不是个好主意,RFC4291中废弃了对这类地址的使用,大家知道有这么一回事就可以了。
IPv4 映射地址(IPv4-mapped address)
形如 ::FFFF:X.X.X.X
(33-128 位为 ::FFFF),这里的 X.X.X.X
是 IPv4 公共地址的十进制点号表示法,,用于 IPv6 地址表示 IPv4 地址。
主要用于某些场景下 IPv6 节点与 IPv4 节点通信,Linux 内核对这类地址很好地支持。
如何 ping 一个 IPv6 的地址?
在 Linux 发行版中,使用 ping6
命令 ping IPv6 主机或者地址。
在浏览器中使用 IPv6 的地址访问 web 资源,IPv6 的地址必须要使用中括号 []
包起来。
fe80::6e92:bfff:fe04:663c
IPv6 的过渡技术
IPv4 升级到 IPv6 肯定不会是一蹴而就的,是需要经历一个十分漫长的过渡阶段,要数十年的时间都不为过。现阶段,就出现了 IPv4 慢慢过渡到 IPv6 的技术。过渡技术要解决最重要的问题就是,如何利用现在大规模的 IPv4 网络进行 IPv6 的通信。
要解决上面的问题,这里主要介绍 3 种过渡技术:
1、双栈技术 2、隧道技术 3、转换技术(有一些文献叫做翻译技术)
本章节会对以上的过渡技术,选取几个典型的、我们未来最有机会接触到的具体的过渡技术结合实验观察过渡技术的具体实现和数据包的表现形式。
双栈技术
通信节点同时支持 IPv4 和 IPv6。
例如在同一个交换机下面有 2 个 Linux 的节点,2 个节点都是 IPv4/IPv6 双栈,节点间原来使用 IPv4 上的 UDP 协议通信传输,现在需要升级为 IPv6 上的 UDP 传输。
由于 2 个节点都支持 IPv6,那只要修改应用程序为 IPv6 的 socket 通信基本达到目的了。
上面的例子在局域网通信的改造是很容易的。但在广域网,问题就变得十分复杂了。
因为主要问题是在广域网上的 2 个节点间往往经过多个路由器,按照双栈技术的部署要求,之间的所有节点都要支持 IPv4/IPv6 双栈,并且连接双栈网络的接口必须同时配置 IPv4 公网 地址和 IPv6 地址,才能正常工作,这里就无法解决I Pv4 公网地址匮乏的问题。
双协议栈典型应用场景

最近搜集到传智播客 2018 最新 Python 和 Java 教程!关注本公众号,后台回复「2018」即可获取下载地址
网友评论