IPv4和IPv6
本文最后更新于 2024年11月23日
原文地址:https://www.rockylinux.cn/notes/rocky-linux-9-network-configuration.html
原文作者:木子
Rocky Linux 中文社区欢迎您 https://www.rockylinux.cn
IPv4 与 IPv6
在进行 IP 配置之前,我们延伸了解一下 IPv4 与 IPv6 。 IPv4(Internet Protocol version 4)和 IPv6(Internet Protocol version 6)是互联网上用于数据包交换的两个版本的网络层协议。它们是互联网协议套件的核心部分,负责在网络设备之间路由和传递数据。
IPv4
IPv4 是第四版互联网协议,自 1981 年以来一直被广泛使用。IPv4 的特点包括: 地址空间: IPv4 使用 32 位地址,这意味着它可以支持大约 42 亿个独特的 IP 地址。 地址表示: IPv4 地址通常以点分十进制格式表示,例如 192.168.1.1。 地址配置: IPv4 地址可以手动配置(静态)或通过动态主机配置协议(DHCP)自动分配。 分片: IPv4 允许在传输过程中对数据包进行分片,这可以由发送端、接收端或中间路由器处理。 由于互联网的快速增长,IPv4 地址已经耗尽,这促使了对更广泛地址空间协议的需求。 在 IPv4 地址空间中,地址分为公网 IP、私有 IP 和 CGN(Carrier Grade NAT)地址。以下是详细区分:
公网 IP 地址
公网 IP 地址是全球唯一的,可以在整个互联网中进行通信的 IP 地址。它们不属于下列提到的私有 IP 和 CGN 地址的范围。所以,除了以下私有 IP、CGN 地址以及保留地址和特殊用途地址(如多播地址、环回地址等),其他的都属于公网 IP。
私有 IP 地址
私有 IP 地址用于局域网(LAN)内部通信,是不会在互联网中进行路由的。这些地址范围由 IANA(Internet Assigned Numbers Authority)分配:
- 10.0.0.0 到 10.255.255.255
- 172.16.0.0 到 172.31.255.255
- 192.168.0.0 到 192.168.255.255
CGN (Carrier Grade NAT) 地址
CGN 地址也称为共享地址空间,用于 ISP 提供的 NAT 方案,以减少 IPv4 地址的消耗。以下是该范围:
- 100.64.0.0 到 100.127.255.255
这些地址也不会在全球互联网中进行路由,用于解决多个用户共享一个公共 IP 地址的需求(Tailscale 用的这个地址段)。
其他特殊地址
还有一些保留和特殊用途的地址,例如:
- 环回地址: 127.0.0.1
- 广播地址: 255.255.255.255
- 多播地址: 224.0.0.0 到 239.255.255.255
IPv6
IPv6 是互联网协议的最新版本,旨在解决 IPv4 地址耗尽的问题,并引入了一些新的特性和改进。IPv6 的特点包括:
- 地址空间: IPv6 使用 128 位地址,极大地扩展了地址空间,可以支持近乎无限数量的独特 IP 地址。
- 地址表示: IPv6 地址通常以冒号分隔的十六进制格式表示,例如 2001:0db8:85a3:0000:0000:8a 2 e:0370:7334。
- 地址配置: IPv6 地址可以通过多种方式配置,包括静态配置、状态无关地址自动配置(SLAAC)和动态主机配置协议版本 6(DHCPv 6)。
- 无分片: IPv6 设计时取消了路由器的分片功能,要求发送端执行路径最大传输单元(PMTU)发现,并发送适合路径上最小链路 MTU 的数据包。 在 IPv6 中,没有对应 IPv4 的私有 IP 和公网 IP 的概念,但有类似的机制来实现内网和公网的区别与应用。以下是一些重要的 IPv6 地址类型和其用途:
全球单播地址(Global Unicast Address)
全球单播地址就是 IPv6中用于在全球范围内进行通信的唯一地址,类似于 IPv4的公网 IP。其地址范围一般是以 2000::/3
开头。
唯一本地地址(Unique Local Address, ULA)
唯一本地地址在某种程度上类似于 IPv4的私有 IP 地址,用于局域网通信,不会在全球互联网中进行路由。其地址范围是 FC00::/7
,也可以细分为以下两个范围:
- 随机分配的 ULA:
FD00::/8
,通用情况下会使用这个范围,通过随机生成的方式保证在局部网络内的唯一性。 - 原始分配的 ULA:
FC00::/8
,目前未正式广泛使用。
链路本地地址(Link-Local Address)
这些地址只能用于单个网络链路的节点之间,不能路由到其他链路。所有 IPv6 接口在启动时都会自动生成一个链路本地地址以支持邻居发现协议。其地址范围是 FE80::/10
。
不管是 Linux、macOS 还是 Windows 都会分配一个 Link-Local Address,以inet6 FE80::
开头。
其他类型地址
还有一些其他特殊用途的地址,比如:
- 多播地址:
FF00::/8
,用于多播通信。 - 组播地址:
FF00::/8
,用于组播通信。
IPv4 与 IPv6 之间的主要区别
- 地址长度: IPv4 是 32 位,IPv6 是 128 位。
- 地址表示法: IPv4 使用点分十进制,而 IPv6 使用冒号分隔的十六进制。
- 地址空间: IPv6 提供了比 IPv4 更广阔的地址空间。
- NAT 转换: 消除 NAT 以将地址空间从 32 位扩展到 128 位。
- IPSec 支持: 在 IPv6 中,IPSec 是核心特性的一部分,但同样也需要进行配置,比如采用 strongswan 等。
- 数据包处理: IPv6 简化了数据包头部,以提高路由效率,并取消了路由器分片功能。
- 自动配置: IPv6 支持更高级的自动配置能力。
- 多播和广播: IPv6 支持多播,但不支持 IPv4 那样的网络广播。取而代之,IPv6 使用多播和邻居发现协议来实现网络上的设备发现和配置。
IPv4 与 IPv6 这些区别反映了互联网协议在安全性、效率、可扩展性方面的进步,同时也提出了新的挑战,例如迁移和兼容性问题。随着 IPv6 逐渐被广泛采用,这些挑战将得到解决。
以下两图为 IPv4 与 IPv6 报文头对比: