4.3 IPv6
对应王道教材 4.3 节(教材 P181–P185)· 本节属于 408 考纲范围
4.3.1 IPv6 的特点 考点
目前广泛使用的 IPv4 是在 20 世纪 70 年代设计的。互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 地址已经耗尽。为解决"IP 地址耗尽"问题,采取过三种措施:
- 无类别编址 CIDR:使 IP 地址分配更加合理;
- 网络地址转换(NAT):节省全球唯一的公网 IP 地址;
- IPv6:采用更大地址空间的新版本 IP 协议。
前两种方法只是延缓了 IPv4 的使用寿命,只有第三种方法能从根本上解决 IP 地址耗尽问题。
IPv6 的主要特点如下:
- 更大的地址空间:这是最重要的。IPv6 将地址长度从 IPv4 的 32 位增大到 128 位,地址空间是 IPv4 的 \(2^{128}/2^{32}=2^{96}\) 倍,从长远来看绝对够用;
- 扩展的地址层次结构:地址空间很大,可以划分出更多的层次;
- 灵活的首部格式:IPv6 定义了许多可选的扩展首部,不仅能提供比 IPv4 更多的功能,还能提高路由器的处理效率——因为路由器通常不对扩展首部进行处理;
- 改进的选项:IPv6 首部长度是固定的,选项放在有效载荷中,可根据需要灵活配置;而 IPv4 预先定义好了一套标准选项,放在首部的可变部分;
- 允许协议继续扩充:IPv6 允许不断扩充功能,而 IPv4 的功能是固定不变的;
- 支持即插即用(自动配置 IPv6 地址):通常不需要使用 DHCP,简化了网络管理;
- 支持资源的预分配:支持实时音频/视频等要求保证一定带宽和时延的应用;
- 只有源主机才能分片:只支持端到端的分片,不允许中间路由器进行分片;
- 首部长度固定为 40B:而 IPv4 的首部长度是可变的(必须是 4B 的整数倍);
- 增大了安全性:身份鉴别和保密功能由 IPv6 的扩展首部提供。
虽然 IPv6 与 IPv4 不兼容,但它与所有其他互联网协议(如 TCP、UDP、ICMP、IGMP 和 DNS 等)总体上是兼容的,仅在少数地方做了必要的修改,主要是为了处理更长的地址。
4.3.2 IPv6 数据报的基本首部 考点
IPv6 数据报由两部分组成:基本首部和有效载荷(也称净负荷)。有效载荷由零个或多个扩展首部(扩展首部不属于基本首部)及其后面的数据部分构成,有效载荷最长不超过 65535 字节。

与 IPv4 相比,IPv6 对首部中的某些字段进行了如下调整:
- 取消了首部长度字段,因为基本首部长度固定为 40B;
- 取消了服务类型字段,其功能由优先级和流标号字段实现;
- 取消了总长度字段,改用有效载荷长度字段;
- 取消了标识、标志和片偏移字段,相关功能已移至分片扩展首部;
- 把 TTL 字段更名为跳数限制字段,作用不变,但名称更贴合实际含义;
- 取消了协议字段,改用下一个首部字段;
- 取消了首部检验和字段,因传输层已提供差错检测,此举可加快路由器处理速度;
- 取消了选项字段,其功能由灵活的扩展首部实现。
尽管取消了 IPv4 首部中的多项冗余功能,使 IPv6 基本首部的字段数减少至仅 8 个,但由于地址长度从 32 位扩展到 128 位,其基本首部长度反而增至 40B。
IPv6 数据报的基本首部格式如图 4.13 所示。

基本首部各字段的含义如下:
- 版本:占 4 位,指明 IP 协议的版本。对于 IPv6,该字段的值为 6;
- 通信量类:占 8 位,用于区分不同 IPv6 数据报的类别或优先级;
- 流标号:占 20 位。IPv6 提出了"流"的抽象概念:流是指互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频/视频传输),路径上的路由器可据此提供特定的服务质量保证。所有属于同一个流的数据报都具有相同的流标号;
- 有效载荷长度:占 16 位,表示 IPv6 数据报中基本首部之后的字节数,包括所有扩展首部和上层数据,最大值为 65535(单位为字节);
- 下一个首部:占 8 位,功能类似于 IPv4 的协议字段。若无扩展首部,则标识上层协议类型;若存在扩展首部,则标识紧随其后的第一个扩展首部的类型;
- 跳数限制:占 8 位,作用等同于 IPv4 的 TTL 字段。源主机在发送数据报时设定初始值(最大为 255),每经过一个路由器其值减 1,减至 0 时丢弃该数据报;
- 源地址和目的地址:各占 128 位,分别表示数据报的发送方/接收方的 IPv6 地址。
4.3.3 IPv6 地址 考点
1.三种基本地址类型
IPv6 数据报的目的地址有以下三种基本类型:
- 单播:即传统的点对点通信,数据报发送给唯一指定的接收方;
- 多播:一点对多点的通信,数据报发送给所有加入该多播组的接口;
- 任播:IPv6 新增的一种地址类型,特点可概括为"一名多用、就近交付"。任播地址标识一组接口,但网络会将数据报仅交付给其中路由距离最近的一个。
2.冒号十六进制记法与缩写规则
IPv4 地址通常采用点分十进制表示法。若 IPv6 也沿用此方式,其 128 位地址将显得冗长。因此 IPv6 标准采用冒号十六进制记法:将地址划分为 8 组,每组 16 位(4 个十六进制数),各组之间用冒号分隔。例如:
为了书写方便,还规定了如下两种缩写规则:
- 省略前导零:每组中前面连续的十六进制零可以省略,但至少要保留一个数字。例如,可以把地址 4BF5:0000:0000:0000:BA5F:039A:000A:2176 缩写为 4BF5:0:0:0:BA5F:39A:A:2176;
- 双冒号替换连续全零组:当地址中出现一个或多个连续的全零组时,可用双冒号(::)替代。但 "::" 在一个地址中只能使用一次,否则无法确定省略了多少个全零组(因总组数需恢复为 8)。因此上述地址可被更紧凑地缩写为 4BF5:BA5F:39A:A:2176。
已知某 IPv6 地址的简化写法为 8::D0:123:CDEF:89A,求其完整地址。步骤如下:
- 先把零压缩的部分展开:8::D0:123:CDEF:89A 表示 "::" 替代了中间若干连续全零组,展开骨架得到 8:0000:0000:0000:D0:123:CDEF:89A(共 8 组);
- 每个区域应该有 4 位十六进制数,不足 4 位表示开头的 0 被省略,须在前面补 0;
- 补齐后得到完整地址:0008:0000:0000:0000:00D0:0123:CDEF:089A。
注意两条要点的配合:① 多个连续区域为 0 可进行零压缩,但一个地址仅可出现一次零压缩;② 每个区域开头的 0 可省略,结尾的 0 不可省略。当有多处不相邻的 0 时,只能用 "::" 代表其中一处。
3.IPv6 地址的分类
| 地址类型 | 二进制前缀 | CIDR 记法 |
|---|---|---|
| 未指明地址 | 00…0(128 位) | ::/128 |
| 环回地址 | 00…1(128 位) | ::1/128 |
| 多播地址 | 11111111(8 位) | FF00::/8 |
| 本地链路单播地址 | 1111111010(10 位) | FE80::/10 |
| 全球单播地址 | 见图 4.14 的几种划分方法 | |
对五类地址解释如下:
- 未指明地址:不能用作目的地址,仅用于尚未配置 IPv6 地址的主机作为源地址;
- 环回地址:作用与 IPv4 的环回地址相同,但 IPv6 中仅定义这一个环回地址;
- 多播地址:作用与 IPv4 多播类似,这类地址占 IPv6 地址空间的 1/256;
- 本地链路单播地址:仅用于本地链路内的通信,不能被路由器转发;
- 全球单播地址:使用得最多的地址。其划分方法非常灵活,如图 4.14 所示:可以把整个 128 位都作为一个节点的地址;也可用 \(n\) 位作为子网前缀,剩下的 \((128-n)\) 位作为接口标识符(相当于 IPv4 的主机号);还可以划分为三级:用 \(n\) 位作为全球路由选择前缀,用 \(m\) 位作为子网前缀,而剩下的 \(128-n-m\) 位则作为接口标识符。

4.3.4 从 IPv4 向 IPv6 过渡 考点
IPv4 向 IPv6 的过渡只能采用逐步演进的办法,并确保新部署的 IPv6 系统具备向后兼容的能力:能够接收、转发 IPv4 数据报,并为其选择路由。
目前主要采用以下两种过渡策略:
- 双协议栈:指在一台主机上同时安装 IPv4 和 IPv6 两个协议栈,分别配置一个 IPv4 地址和一个 IPv6 地址,因此既能与 IPv4 网络通信,也能与 IPv6 网络通信。双协议栈主机通过应用层的域名系统(DNS)获知目的主机使用的地址类型:若 DNS 返回的是 IPv4 地址,则使用 IPv4;若返回的是 IPv6 地址,则使用 IPv6;
- 隧道技术:指当 IPv6 数据报需要进入 IPv4 网络时,将其整个封装为 IPv4 数据报的数据部分,使原 IPv6 数据报如同在 IPv4 网络的隧道中传输;当该 IPv4 数据报离开 IPv4 网络后,再将其数据部分交由主机的 IPv6 协议处理。
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位(空间是 IPv4 的 \(2^{96}\) 倍) |
| 首部长度 | 可变(4B 的整数倍) | 固定 40B |
| 首部字段数 | 较多(含选项、检验和等) | 仅 8 个,取消首部检验和 |
| 分片 | 源主机和中间路由器都可分片 | 只有源主机才能分片(端到端分片) |
| TTL 对应字段 | TTL | 跳数限制(Hop Limit),作用等同 |
| 协议字段对应 | 协议字段 | 下一个首部字段 |
| 地址类型 | 单播、多播、广播 | 单播、多播、任播(无广播) |
| 地址配置 | 通常需要 DHCP | 支持即插即用(自动配置) |