前言

2019 年 11 月 26 日,负责英国、欧洲、中东和部分中亚地区互联网资源分配的欧洲网络协调中心(RIPE NCC)通过电子邮件宣布,其最后的 IPv4 地址空间储备池在 11 月 25 日 UTC + 1 15:35 完全耗尽。国务院办公厅《推进 IPv6 规模部署行动计划》要求 2020 年底市地级以上政府外网网站、国内用户量前 100 网站、5G 网络及业务完成 IPv6 支持。随着 IPv6 升级改造,其实我们已经在不知不觉中逐步进入到全民 IPv6 的时代。

本文主要记录 IPv6 与 IPv4 的区别,从 IPv4 过渡到 IPv6 的技术演进过程。

更新历史

2022 年 11 月 15 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/ipv6/


IP/IPv4/IPv6 基础知识

关于 IPv6 相关的新闻进展就不再赘述了,各位可以直接查看最新战况
https://www.ithome.com/search/ipv6.html

什么是 IP

互联网协议 IP(Internet Protocol)主要定义了在相互连接的网络中如何传递数据。网络中的每一个设备(如计算机),要想和其它设备相互通信传递数据,就都需要一个像门牌号码一样的标识 —— 这个标识也就是我们熟悉的 IP 地址。

IPv4

目前被广泛使用的 IP 协议是 IPv4(IP Version 4),网络设备使用的地址即为 IPv4 地址。

IPv4 地址长度为 32 bit,因此能提供的地址最多为 2 的 32 次方(约 43 亿)个地址。但是除去一些预留地址以及用于广播、测试、私有网络的专用地址外,实际可用地址是不足 43 亿的。

互联网发展了这么多年,IPv4 地址一直被分配使用。2019 年 11 月 25 日,负责英国、欧洲、中东和部分中亚地区互联网资源分配的欧洲网络协调中心(RIPE NCC)宣布,全球所有 43 亿个 IPv4 地址已全部分配完毕。

IPv6

不论是国家、行业还是个人,对 IPv6(IP Version 6)都有着迫切的需求并支持推广。

世界上主要的国家和经济体都在力争尽早完成 IPv6 网络的建设,争取网络的率先应用和技术领先(如开篇提到的行动计划和专项行动)。

市场上大量移动终端、固定设备、应用网站及 App 等均已支持 IPv4 和 IPv6 两种协议。

智能家居的普及,家庭和个人拥有了众多智能设备,对这些设备的端到端管理,需要 IPv6 技术的支持。

为什么要用 IPv6

核心理由:IP 地址分配不合理、资源枯竭

互联网技术来自于美国,互联网的发展、管理由美国人掌控了,据说美国一所大学拥有的 IP 地址数量比我们中国还要多!后来为了解决分配不合理、资源面临枯竭问题,也出现了划分子网、无类编址、NAT 技术来应对,但终究解决不了实质问题。

而 IPv6 拥有几乎无限的地址空间:地址容量极大扩展,由原来的 32 位扩充到 128 位, 这是什么概念呢?

这相当于:

IPv4 有(232)= 4,294,967,296 个地址,约等于 43 亿

IPv6 有(2128 = 296x232 )= 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址(340 万亿万亿万亿个地址),相当于地球表面每平方米可以分配到 67 万亿个地址,彻底解决了 IPv4 地址不足的问题。

IPv6 其他优点自行了解吧

  1. 更庞大的网络地址数量

IPv6 地址长度为 128 比特,地址空间增大了 2 的 96 次倍。IPv6 能够为现在和将来的互联网应用提供更多的网络地址,它能够在现在 40 亿个 IPv4 的网络地址的基础上增加大体上 340 万亿万亿万亿的 IPv6 网络地址。

  1. 更小的路由表

因为 IPv6 在地址分配时遵循聚类原则,相同区域默认分配相同前缀 IP 地址。当路由在查找和传递过程中,可以更高效地选择最优路由进行传递,大大节省传递时的开销。

  1. IPv6 的分段处理

在 IPv4 的网络中,数据包在传输过程中,路由器会根据其设置的 MTU 值 (最大传输单元,默认为 1500 字节) 来对数据包进行分片传输。

而在 IPv6 的网络中,主机在发出数据包时,就已经对数据包进行分片处理(默认最小 MTU 为 1280 字节),这样在数据传输的过程中就不需要路由器来担任分片工作,大大提高了数据传输的效率。

  1. 即插即用

在 IPv4 的网络中,如果用户不想手动配置 IP 地址,就得依赖 DHCP 服务来进行地址自动分配。在 IPv6 中同样可以通过 DHCPv6 进行有状态地址分配,但是也可以不依赖 DHCPv6 来进行无状态地址分配(SLAAC)。

IPv6 可以通过 NDP 进行路由请求和通告,获取 IPv6 地址的网络前缀,而 IPv6 地址的后 64 位是由网卡的物理地址 (MAC) 加上转换算法得来,本身就是全球唯一的地址,所以也就很难遇到 IP 地址冲突现象。

  1. 传输安全性

在 IPv6 网络中,除了对以往 IPv4 的报文精简改进,最大的区别就是强制使用 IPSec 安全加密传输,让用户不再担心数据抓包导致信息泄密,也避免了大多数据数欺骗攻击。

IPv6 的发展现状和过渡技术

对比 IPv4,IPv6 明显优秀得多。但是爱思考的朋友一定会产生这样的疑问 —— 既然 IPv6 这么好,从协议提出到现在也发展了这么多年,为什么一直没有被大规模的应用呢?

这是因为技术的更新换代从来都不是那么容易的事。一方面因为 NAT(Network Address Translation)技术的应用,延缓了 IPv4 地址枯竭的速度。NAT 通过地址转换可以使多个设备共享一个 IP 地址来访问互联网,节省了部分地址资源。

另一方面网络升级到 IPv6 的成本巨大。从 IPv4 到 IPv6 的升级,不仅仅是更改下地址那么简单,而是涉及到网络的方方面面。从个人终端到运营商网络,从各种应用软件到网站服务,都需要全面改造升级。

正因如此,从 IPv4 到 IPv6 的升级不是一次性完成的,而是需要逐步、分层次地推进。在过渡期间,为了保证 IPv4 与 IPv6 能够共存、互通,出现了一些过渡技术。

双栈技术(Dual Stack)

当同时存在 IPv4 和 IPv6 网络时,通过具有双栈功能的设备,结合隧道和转换技术,实现 IPv4 网络和 IPv6 网络的互通。

代表技术 DS-Lite。

其中大多数应用服务器采用的为双栈主机的解决方案,严格意义上它并不是解决 IPv4 与 IPv6 互通的问题,而是适配两种网络模式来为不同网络下的客户端提供服务。

当 IPv4 网络下的客户端发起请求时,服务器及链路会在 IPv4 网络下进行响应。同理,当发起客户端处于 IPv6 网络时,服务器会在 IPv6 网络下进行响应。反之,也可以在客户终端上配置双协议栈,来分别访问不同网络协议下的服务器。

协议转换技术(NAT)

当 IPv4 网络节点或 IPv6 网络节点要和对方通信时,需要借助协议转换技术将 IPv4 和 IPv6 的报文进行转换后才可互通。

代表技术 NAT64。

NAT64 的工作原理就是搭建一台翻译网关位于 IPv4 与 IPv6 网络之间,将通过网关的 IPv6 与 IPv4 的数据包进行翻译传输。NAT64 一般只能单方向的将发往 IPv4 网络的 IPv6 报文进行翻译,而不能主动翻译反方向的 IPv4 发往 IPv6 的报文,需要进行静态条目绑定才能真正实现 IPv4 访问 IPv6 网络,在技术实现上成本较高。

隧道技术(Tunnel)

在 IPv4 向 IPv6 过渡的初期,IPv4 网络已经大量部署,而 IPv6 网络只是散落在各地的“孤岛”,隧道技术使 IPv6 报文可以在 IPv4 网络中传输,实现 IPv6 网络间的孤岛互联。

代表技术:6PE、6VPE、GRE、6to4 等。

隧道技术是指将 IPv6 的数据包封装在 IPv4 的数据包里进行发送,它好处就是不需要对现有的 IPv4 网络进行改造,就可以直接利用隧道来传输 IPv6 的数据包。

隧道技术主要是为了向 IPv6 网络过渡过程中减少搭建设备的成本,但是它依然无法解决纯 IPv4 主机与 IPv6 主机的互通问题。

IPv6 地址长什么样

IPv6 地址格式

IPv6 地址总长度为 128 比特,分为 8 组,每组为 4 个十六进制数的形式,每组十六进制数间用冒号分隔。

例如:FC00:0000:130F:0000:0000:09C0:876A:130B

IPv6 地址如何缩写

每组中的前导 “0” 都可以省略,所以上述地址可写为:FC00:0:130F:0:0:9C0:876A:130B。

地址中包含的连续两个或多个均为 0 的组,可以用双冒号 “::” 来代替

所以上述地址又可以进一步简写为:FC00:0:130F::9C0:876A:130B。

需要注意的是,在一个 IPv6 地址中只能使用一次双冒号“::”

IPv6 地址的掩码怎么写

IPv6 的掩码使用 “前缀长度” 来表示,如:

FC00:0:130F::9C0:876A:130B/64

代表这个地址的前缀长度是 64,也就是掩码长度为 64 位

特殊地址

回环地址

0:0:0:0:0:0:0:1 或::1,等同于 IPv4 的 127.0.0.1

过渡地址:内嵌 IPv4 地址的 IPv6 地址

就是在 IPv6 的某一些十六进制段内嵌这 IPv4 的地址,例如 IPv6 地址中 64:ff9b::10.10.10.10,此 IPv6 地址最后 4 个字节内嵌一个 IPv4 的地址,这类地址主要用于 IPv6/IPv4 的过渡技术中。

公有云 Seurity Group IPv6 出入规则

[::]/0

IPv6 的域名解析

由于 IPv6 的地址扩展为 128 位,比 IPv4 的更难书写和记忆,因此 IPv6 下的 DNS 变得尤为重要。IPv6 的的 DNS 资源记录类型为 AAAA(又称作 4A),用于解析指向 IPv6 地址的完全有效域名。下面是一个示例:

Hostipv6.example.wechat.com IN AAAA 2001:db8:1::1

IPv6 下的域名解析可以认为是 IPv4 的扩展,详细可以查看 RFC3596。

这里值得注意的是,在浏览器中使用 IPv6 的地址访问 web 资源,IPv6 的地址必须要使用中括号 “[]” 包起来。

Linux 内核 IPv6 架构简析

Linux 内核中,IPv6 协议栈与 IPv4 协议栈并行关系。IPv6 和 IPv4 完全是两套不一样的代码实现。IPv6 完整的协议栈逻辑模块包括:

1、网络层 IPv6,核心逻辑:IPv6 路由子系统

2、传输层 TCP/UDP 实现:TCPv6、UDPv6

3、控制报文协议 ICMPv6,这里值得一提的是 ICMPv6 在 IPv6 协议中的地位十分重要。

ICMPv6 不仅提供了与 ICMPv4 相同的服务诊断功能,例如报告数据包的错误和提供简单的 echo 服务,ICMPv6 是 IPv6 中邻居发现协议的重要组成部分,用于管理链路上的点到点的通信。

4、邻居子系统的实现:邻居发现协议 NDP(对应于 IPv4 里面的 ARP 协议)

5、其他高级实现(IPv6 NAT、IPv6 隧道、iPv6 IPSec 等)

由于我们平时的开发工作在应用层,以上 1-4 是将会接触得最多。

IPv6 相关网络工具

http://ip6.me/
http://ip6.me/docs/

https://ip.sb/api/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# dig dns 解析,查看一个域名是否具有 AAAA 记录

dig www.qq.com aaaa

# curl 通过 IPv6 网络协议进行请求响应,获取服务端数据
curl -I -v -4 ip6.me
curl -I -v -6 ip6.me

# ping6 查看 IPv6 网络的连通性和域名解析的正确性
ping6 -c4 www.qq.com

# telnet 查看对应 IPv6 地址端口是否开放
telnet 2600:1417:7:28b::180c 80

# IPv6 网络连通性判断工具
mtr -6 2600:1417:7:28b::180c
traceroute6 www.qq.com

# 查看本机 IPv6 路由表
ip -6 route
route -A "inet6"

Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
localhost/128 [::] U 256 2 0 lo
fe80::/64 [::] U 256 1 0 eth0
localhost/128 [::] Un 0 5 0 lo
ff00::/8 [::] U 256 4 0 eth0
[::]/0 [::] !n -1 1 0 lo

# curl 测试 API
ip4only.me/api/ - IPv4 only query
ip6.me/api/ - Dual stack IPv6 and IPv4 (preference depends on your OS/client)
ip6only.me/api/ - IPv6 only query

Example (Plain text): https://api.ip.sb/ip (Listen on both IPv4 and IPv6) or curl ip.sb
Example (Plain text): https://api-ipv4.ip.sb/ip (Listen on IPv4 only) or curl -4 ip.sb or curl ipv4.ip.sb
Example (Plain text): https://api-ipv6.ip.sb/ip (Listen on IPv6 only) or curl -6 ip.sb or curl ipv6.ip.sb

IPv6 的未来

尽管面临着许多困难,但 IPv6 技术强大完善的功能以及 5G 时代对网络性能的极大需求,都在推动着 IPv4 网络稳步地向 IPv6 网络演进。

随着 5G 网络的逐步建设,我们国家在物联网、大数据、云计算、人工智能等新兴领域都迎来了快速的发展,那么既能够提供海量地址资源又能解决 IPv4 网络缺陷的高速、可靠、安全的 IPv6 网络无疑是最佳选择。

近年,基于 IPv6 的下一代互联网技术创新体系 “IPv6+” 也引起了广泛关注。“IPv6+”是 IPv6 的升级,是面向 5G 和云时代的 IP 网络创新体系。

“IPv6+”不仅包括了以 SRv6、网络切片、随流检测、BIERv6 和 APN6 等内容为代表的协议创新,以网络分析、自动调优等网络智能化为代表的技术创新,还包括以 5G 承载和云网融合为重点应用场景的业务创新。

在北京冬奥会期间,IPv6 + 技术也是首次在大型赛事活动上进行了应用。

属于 IPv6 以及 “IPv6+” 的时代已经到来,你准备好了吗?!

参考文章

“IPv6+”的时代都来了,你还不知道什么是 IPv6 吗?
https://mp.weixin.qq.com/s/0g_JF1B96XTJV5BnP7QseA

全球 IPv4 地址耗尽,IPv6 来了!
https://mp.weixin.qq.com/s/wMdDiu0o4JfUiqD8hAB75w

文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. IP/IPv4/IPv6 基础知识
  4. 4. 为什么要用 IPv6
  5. 5. IPv6 的发展现状和过渡技术
    1. 5.1. 双栈技术(Dual Stack)
    2. 5.2. 协议转换技术(NAT)
    3. 5.3. 隧道技术(Tunnel)
  6. 6. IPv6 地址长什么样
    1. 6.1. IPv6 地址格式
    2. 6.2. IPv6 地址如何缩写
    3. 6.3. IPv6 地址的掩码怎么写
    4. 6.4. 特殊地址
    5. 6.5. IPv6 的域名解析
  7. 7. Linux 内核 IPv6 架构简析
  8. 8. IPv6 相关网络工具
  9. 9. IPv6 的未来
  10. 10. 参考文章