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 的主要特点

  1. 更大的地址空间。这是最重要的。IPv6 将地址从 IPv4 的 32 位增大到 128 位,IPv6 的地址空间是 IPv4 的 倍,从长远来看,这些地址是绝对够用的。
  2. 扩展的地址层次结构。IPv6 因为地址空间很大,所以可以划分为更多的层次。
  3. 灵活的首部格式。IPv6 定义了许多可选的扩展首部,不仅可提供比 IPv4 更多的功能,还能提高路由器的处理效率,这是因为路由器对扩展首部不进行处理。
  4. 改进的选项。IPv6 首部长度是固定的,其选项放在有效载荷中,选项是灵活可变的;而 IPv4 所规定的选项是固定不变的,其选项放在首部的可变部分。
  5. 允许协议继续扩充。IPv6 允许不断扩充功能,而 IPv4 的功能是固定不变的。
  6. 支持即插即用(自动配置)。因此 IPv6 不需要使用 DHCP。
  7. 支持资源的预分配。IPv6 支持实时音/视频等要求保证一定带宽和时延的应用。
  8. IPv6 只有源主机才能分片,是端到端的,不允许类似 IPv4 在中间路由器进行分片。
  9. IPv6 首部长度是固定的 40B,而 IPv4 首部长度是可变的(必须是 4B 的整数倍)。
  10. 增大了安全性。身份鉴别和保密功能是 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 年考过):

  1. 版本:占 4 位,指明协议的版本,对于 IPv6 该字段的值是 6。
  2. 通信量类:占 8 位,用来区分不同的 IPv6 数据报的类别或优先级。
  3. 流标号:占 20 位。IPv6 提出流的抽象概念:流是指互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音/视频传输),而在这个”流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有相同的流标号。
  4. 有效载荷长度:占 16 位,指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),最大值是 65535(单位为字节)。
  5. 下一个首部:占 8 位,相当于 IPv4 首部中的协议字段或可选字段。当 IPv6 没有扩展首部时,其作用与 IPv4 的协议字段一样,指明 IPv6 数据报所运载的数据是何种协议数据单元;当 IPv6 带有扩展首部时,它就标识后面第一个扩展首部的类型。
  6. 跳数限制:占 8 位,类似于 IPv4 首部的 TTL 字段。源点在每个数据报发出时即设定某个限制值(最大为 255),路由器每次转发时将其值减 1,减为 0 时就将该数据报丢弃。
  7. 源地址和目的地址:各占 128 位,是数据报的发送端和接收端的 IP 地址。

IPv4 与 IPv6 对照

比较项IPv4IPv6
地址长度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 倍❌( 倍,2023)
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 的逐项对比

链接