什么是 IPv6 地址? - IPv6 编址完全指南
什么是 IPv6 地址?
引言
相比此前使用的第 4 版互联网协议(IPv4),第 6 版互联网协议(IPv6)最主要的优势之一,就是拥有庞大的地址空间,用以承载为下一代互联网转发数据包所需的(编址)信息。
IPv6 支持 128 位地址空间,理论上可以支持 2^128 即 3.4×10^38 个唯一 IP 地址(IPv4 则是 32 位地址空间)。凭借如此庞大的地址空间方案,IPv6 有能力为接入互联网的每一台设备、每一个节点都分配到独一无二的地址。
我们为什么需要 IPv6 编址
对 IP 地址不断攀升的需求,正是推动 IPv6 提供庞大地址空间的根本动力。据业界估算,仅在无线领域,就会有超过十亿部手机、个人数字助理(PDA)及其他无线设备需要接入互联网,而每一台都需要属于自己的唯一 IP 地址。
IPv6 提供的更长地址,使人们不必再依靠网络地址转换之类的技术来避免地址耗尽。IPv6 承载着为下一代互联网转发数据包所需的编址与控制信息。
IPv6 地址的类型
IPv6 地址大致可分为三类:
- 单播地址(Unicast):单播地址用于标识单个接口。发往某个单播地址的 IPv6 数据包,会被投递给该地址所标识的那一个接口。
- 组播地址(Multicast):组播地址用于标识一组接口,这些接口可能分属不同的节点。发往某个组播地址的 IPv6 数据包,会被投递给这一组中的多个接口。
- 任播地址(Anycast):任播地址同样用于标识一组接口,它们也可能分属不同的节点。以某个任播地址为目的地的 IPv6 数据包,只会被投递给该地址所标识的接口中的某一个。
IPv6 地址的书写格式
IPv6 地址由八组十六进制的四位数字构成,各组之间以冒号分隔。
下面是一个合法的 IPv6 地址示例:2001:cdba:0000:0000:0000:0000:3257:9652
IPv6 地址中任何一组四位的全零数字,都可以缩写为一个零,或者干脆整组省略。因此,下面这几个 IPv6 地址是等价的,且同样合法:
2001:cdba:0000:0000:0000:0000:3257:9652
2001:cdba:0:0:0:0:3257:9652
2001:cdba::3257:9652
上述地址对应的 URL 写法如下:
http://[2001:cdba:0000:0000:0000:0000:3257:9652]/
IPv6 中的网络表示法
IPv6 网络使用无类别域间路由(CIDR)表示法来表达。使用 IPv6 协议的网络或子网,被表示为一段连续的 IPv6 地址,其规模必须是 2 的幂。IPv6 地址开头的若干位(在同一网络内的所有主机上都相同)构成该网络的前缀,前缀的位数用"/"分隔标注。例如,2001:cdba:9abc:5678::/64 表示网络地址 2001:cdba:9abc:5678,该网络涵盖从 2001:cdba:9abc:5678:: 到 2001:cdba:9abc:5678:ffff:ffff:ffff:ffff 的地址范围。同理,单台主机可以表示为前缀长度为 128 位的网络。也就是说,IPv6 允许一个网络小到只包含一台主机,也可以更大。
IPv6 中的特殊地址
- ::/96:这个全零前缀表示与此前使用的 IPv4 协议相兼容的地址。
- ::/128:全部由零构成的 IPv6 地址称为未指定地址,用于软件内部的编址用途。
- ::1/128:称为环回地址,用于指代本机。应用程序向该地址发送的数据包,会被 IPv6 协议栈原样环回给自己。在 IPv4 中,对应的本机地址是"127.0.0.1"。
- 2001:db8::/32:这是 IPv6 允许使用的文档示例前缀。所有 IPv6 地址的举例都应当使用这个前缀,以表明它只是一个示例。
- fec0::/10:这是 IPv6 提供的站点本地前缀,表示该地址仅在本组织内部有效。不过后来 RFC 已不再建议使用这个前缀。
- fc00::/7:称为唯一本地地址(ULA)。这类地址只在一组相互协作的站点之间路由,是 IPv6 中用来取代站点本地地址的方案。它还包含一个 40 位的伪随机数,以降低地址冲突的风险。
- ff00::/8:IPv6 用这个前缀来表示组播地址。任何带有该前缀的地址,都会被直接理解为组播地址。
- fe80::/10:这是 IPv6 提供的链路本地前缀,表示该地址仅在本地物理链路范围内有效。
更多信息请参见 RFC 1884 - IP Version 6 Addressing Architecture。