IPv6 的特点与基本首部
目前广泛使用的 IPv4 是在 20 世纪 70 年代设计的,互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 地址已经耗尽。为了解决”IP 地址耗尽”问题,有三种措施:采用无分类编址 CIDR,使 IP 地址的分配更加合理;采用网络地址转换 NAT 方法以节省全球 IP 地址;采用具有更大地址空间的新版本的 IPv6。前两种方法只是延长了 IPv4 的使用寿命,只有第三种方法能从根本上解决 IP 地址耗尽问题(4.2.2)。
本页的考法只有一种:拿 IPv6 与 IPv4 逐项对比(2023 年真题考了特点、首部字段和过渡策略)。错题是”IPv6 数据报太大时路由器怎么办”——IPv6 的路由器不分片。
机制
4.3.1 IPv6 的主要特点
- 更大的地址空间。这是最重要的。IPv6 将地址从 IPv4 的 32 位增大到 128 位,IPv6 的地址空间是 IPv4 的
倍,从长远来看,这些地址是绝对够用的。 - 扩展的地址层次结构。IPv6 因为地址空间很大,所以可以划分为更多的层次。
- 灵活的首部格式。IPv6 定义了许多可选的扩展首部,不仅可提供比 IPv4 更多的功能,还能提高路由器的处理效率,这是因为路由器对扩展首部不进行处理。
- 改进的选项。IPv6 首部长度是固定的,其选项放在有效载荷中,选项是灵活可变的;而 IPv4 所规定的选项是固定不变的,其选项放在首部的可变部分。
- 允许协议继续扩充。IPv6 允许不断扩充功能,而 IPv4 的功能是固定不变的。
- 支持即插即用(自动配置)。因此 IPv6 不需要使用 DHCP。
- 支持资源的预分配。IPv6 支持实时音/视频等要求保证一定带宽和时延的应用。
- IPv6 只有源主机才能分片,是端到端的,不允许类似 IPv4 在中间路由器进行分片。
- IPv6 首部长度是固定的 40B,而 IPv4 首部长度是可变的(必须是 4B 的整数倍)。
- 增大了安全性。身份鉴别和保密功能是 IPv6 的扩展首部。
虽然 IPv6 与 IPv4 不兼容,但总体而言它与所有其他的互联网协议兼容,包括 TCP、UDP、ICMP、IGMP 和 DNS 等,只是在少数地方做了必要的修改(大部分是为了处理长地址)。
4.3.2 IPv6 数据报的基本首部
IPv6 数据报由两部分组成:基本首部和有效载荷(也称净负荷)。有效载荷由零个或多个扩展首部(扩展首部不属于 IPv6 数据报的首部)及其后面的数据部分构成。基本首部固定 40B,有效载荷不超过 65535B。
与 IPv4 相比,IPv6 对首部中的某些字段进行了如下更改:
- 取消了首部长度字段,因为它的首部长度是固定的(40B)。
- 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。
- 取消了总长度字段,改用有效载荷长度字段。
- 取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中。
- 把 TTL 字段改称为跳数限制字段,但作用是一样的(名称与作用更加一致)。
- 取消了协议字段,改用下一个首部字段。
- 取消了检验和字段,毕竟在传输层有差错检验功能,这样就加快了路由器的处理速度。
- 取消了选项字段,而用扩展首部来实现选项功能。
因为取消了首部中不必要的功能,IPv6 基本首部的字段数减少到只有 8 个,但是由于 IPv6 地址长度为 128 位,所以 IPv6 基本首部的长度反而增大到 40B。
| 行 | 字段(位数) |
|---|---|
| 第 1 行(32 位) | 版本(4)· 通信量类(8)· 流标号(20) |
| 第 2 行(32 位) | 有效载荷长度(16)· 下一个首部(8)· 跳数限制(8) |
| 第 3~6 行 | 源地址(128) |
| 第 7~10 行 | 目的地址(128) |
各字段的含义如下(IPv6 基本首部字段的意义 2023 年考过):
- 版本:占 4 位,指明协议的版本,对于 IPv6 该字段的值是 6。
- 通信量类:占 8 位,用来区分不同的 IPv6 数据报的类别或优先级。
- 流标号:占 20 位。IPv6 提出流的抽象概念:流是指互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音/视频传输),而在这个”流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有相同的流标号。
- 有效载荷长度:占 16 位,指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),最大值是 65535(单位为字节)。
- 下一个首部:占 8 位,相当于 IPv4 首部中的协议字段或可选字段。当 IPv6 没有扩展首部时,其作用与 IPv4 的协议字段一样,指明 IPv6 数据报所运载的数据是何种协议数据单元;当 IPv6 带有扩展首部时,它就标识后面第一个扩展首部的类型。
- 跳数限制:占 8 位,类似于 IPv4 首部的 TTL 字段。源点在每个数据报发出时即设定某个限制值(最大为 255),路由器每次转发时将其值减 1,减为 0 时就将该数据报丢弃。
- 源地址和目的地址:各占 128 位,是数据报的发送端和接收端的 IP 地址。
IPv4 与 IPv6 对照
| 比较项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位(空间是 IPv4 的 |
| 首部长度 | 20~60B,可变 | 基本首部固定 40B |
| 首部检验和 | 有,每跳重算 | 取消 |
| 分片 | 源主机和中间路由器都可以 | 只有源主机,信息放在分片扩展首部 |
| 寿命字段 | TTL | 跳数限制(Hop Limit),作用相同 |
| 上层协议字段 | 协议 | 下一个首部 |
| 选项 | 首部的可变部分 | 扩展首部,放在有效载荷中 |
| 地址配置 | 手工或 DHCP | 支持即插即用(自动配置) |
边界
错题复盘:IPv6 数据报太大时,路由器丢弃它并发 ICMP 报文,不会替它分片
王道 4.3.5 第 6 题:若一个路由器收到的 IPv6 数据报因太大而不能转发到链路上,则路由器将把该数据报(A. 丢弃 B. 暂存 C. 分片 D. 转发至能支持该数据报的链路上)。答案 A。
IPv6 中不允许在中间路由器进行分片。因此,若路由器发现到来的数据报太大而不能转发到链路上,则丢弃该数据报,并向发送方发送一个指示分组太大的 ICMP 报文,由源主机减小数据报后重发。
选 C 是把 IPv4 的做法搬了过来。IPv4 中 DF=0 时路由器可以分片,IPv6 相当于所有数据报都 DF=1,并且分片的字段干脆从基本首部移到了分片扩展首部,路由器根本不看它。D 不成立,因为路由器按目的地址查表选定出口,不会为了长度另换一条链路。
扩展首部不属于首部。 有效载荷长度把扩展首部算在内;“IPv6 首部固定 40B”说的是基本首部。
跳数限制最大 255,每跳减 1。 它与 TTL 完全对应,只是名称上明确了单位是”跳”(2023)。
IPv6 没有检验和,差错检测交给链路层和传输层。 这是 IPv6 转发比 IPv4 快的原因之一。
口径差异:IPv6 "不需要 DHCP"、"只有源主机分片"的具体含义
教材口径:IPv6 支持即插即用,因此不需要使用 DHCP;IPv6 只有源主机才能分片。
标准口径:IPv6 主机可以根据路由器通告的前缀自己生成地址(无状态地址自动配置),但仍然存在 DHCPv6,用于集中分配地址或下发 DNS 服务器等参数,很多企业网两者并用。分片方面,IPv6 规定每条链路的 MTU 至少为 1280B,源主机通过路径 MTU 发现得知整条路径能通过的最大长度,必要时自己加分片扩展首部。由于 IPv6 取消了首部检验和,UDP 的检验和在 IPv6 下由可选变为必选。
考试按教材口径作答。
对照速查
| 说法 | 对错 |
|---|---|
| IPv6 地址空间是 IPv4 的 96 倍 | ❌( |
| IPv6 基本首部长度可变 | ❌(固定 40B,2023) |
| IPv6 基本首部有 8 个字段 | ✅ |
| IPv6 使用首部检验和保证传输正确 | ❌(取消了检验和) |
| IPv6 允许中间路由器分片 | ❌ |
| 扩展首部属于 IPv6 数据报的首部 | ❌(属于有效载荷) |
| 跳数限制字段等价于 IPv4 的 TTL 字段 | ✅(2023) |
| IPv6 与 IPv4 兼容 | ❌(与 TCP、UDP、DNS 等其他协议兼容) |
| IPv6 的”下一个首部”字段相当于 IPv4 的协议字段 | ✅ |
考点
- 三种应对地址耗尽的措施,只有 IPv6 治本
- 10 个特点:128 位、首部固定 40B、只有源主机分片、无检验和、即插即用(2023)
- 基本首部 8 个字段;流标号 20 位;有效载荷长度含扩展首部;跳数限制 ≈ TTL(2023)
- 与 IPv4 的逐项对比
链接
- 🏠 返回总览:计算机网络第 4 章:网络层总览
- ⬅️ 上一节:4.2.7 网际控制报文协议 ICMP
- ➡️ 下一节:4.3.3 IPv6 地址与过渡
- 🔗 4.2.1 IPv4 分组(逐字段对照)
- 📖 名词库:第 4 章名词库