← 返回学习笔记

7 题型 - IPv6

408 学习笔记:7 题型 - IPv6。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。

本页目录

描述:IPv6 题主要考查 128 位地址的冒号十六进制表示、零压缩和 IPv4 混合表示,以及 IPv4/IPv6 基本首部、任播和配套控制协议的差异。

7.1 IPv6 地址结构

IPv6 地址长度为 128 位,按每 16 位一组划分:

$$ 128/16=8 $$

因此一个完整 IPv6 地址包含 8 个十六进制组,每组 4 个十六进制数字:

xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

例如:

2001:0db8:0000:0000:0000:ff00:0042:8329

IPv6 前缀仍使用 CIDR 斜线表示,例如:

2001:db8:0:cd30::/60

7.2 IPv6 地址压缩规则

7.2.1 省略组内前导 0

每个 16 位组中的前导 0 可以省略,但不能省略组内末尾的有效 0:

0FFF -> FFF
0042 -> 42
0000 -> 0

7.2.2 用 :: 压缩连续全 0 组

一段连续的全 0 组可以压缩为两个冒号:

2001:0:0:0:0:FFF1:1321:2A21
= 2001::FFF1:1321:2A21

同一个 IPv6 地址中,:: 最多只能出现一次,否则无法唯一判断每处分别补多少个 0 组。

例如错误写法:

2001::abcd::1234

它可能对应多种完整地址:

2001:0000:0000:abcd:0000:0000:0000:1234
2001:0000:0000:0000:abcd:0000:0000:1234
2001:0000:abcd:0000:0000:0000:0000:1234
2001:0000:0000:0000:0000:abcd:0000:1234

所以无法无歧义还原。

7.2.3 展开 :: 的方法

  1. 数出地址中已经明确写出的十六进制组数。
  2. 用 $8-$ 已写组数,得到 :: 应补的全 0 组数。
  3. 若末尾采用点分十进制 IPv4 地址,则该 32 位部分按两个 16 位组计数。

7.2.4 IPv4 混合表示

IPv6 地址末尾 32 位可以写成 IPv4 点分十进制形式。例如:

::ffff:192.168.1.1

这是一种合法的 IPv4 映射 IPv6 地址表示:前面使用冒号十六进制,末尾 32 位使用点分十进制。

7.3 特殊地址 ::

::

表示 128 位全 0 的未指明地址:

0000:0000:0000:0000:0000:0000:0000:0000
  • 未指明地址只有一个。
  • 它不能作为正常通信的目的地址。
  • 主机尚未配置标准 IPv6 地址时,可在特定初始化过程中把它作为源地址。

不要把 :: 与环回地址 ::1 混淆。

7.4 模拟题一:判断 IPv6 表示是否合法

题目给出:

I.   ::
II.  2001::abcd::1234
III. ::ffff:192.168.1.1
IV.  2001:db8:0:cd30::/60

逐项判断:

编号 判断 原因
I 正确 :: 是 128 位全 0 的未指明地址
II 错误 同一地址使用两次 ::,无法唯一展开
III 正确 合法的 IPv4 混合表示,IPv4 尾部占 32 位
IV 正确 IPv6 可以使用 CIDR 前缀长度 /60

只有 II 错误。

答案:A,II。

7.5 IPv4 与 IPv6 的关键差异

比较项 IPv4 IPv6
地址长度 32 位 128 位
基本首部长度 最小 20 B,可变 固定 40 B
首部校验和 有 基本首部取消首部校验和
广播 支持 不使用广播,以多播等机制替代
多播 支持 支持
任播 IPv4 未将其定义为独立地址类型 支持:多个接口可配置同一个任播地址,路由把分组送达其中一个接口
地址解析 独立 ARP ICMPv6 邻居发现中的邻站询问/通告
多播成员管理 独立 IGMP ICMPv6 的多播听众发现 MLD
反向地址解析 RARP 不再使用 RARP

取消 IPv6 基本首部校验和,可以避免每个路由器因跳数限制变化而重新计算首部校验和;差错检测仍可由链路层和运输层等机制完成。

任播与多播不同:任播把分组送到共享该地址的多个接口中的一个,具体选中哪个由路由决定;多播则将分组送给相应多播组的接收者。任播不能因为“没有广播”就被误认为多播。

7.6 ICMPv6 整合的功能

在 IPv4 中,与网际层配套的常见协议包括 ICMP、IGMP、ARP 和 RARP。

IPv6 不再设置独立的“ARPv6”和“IGMPv6”:

  • ICMPv6 邻站询问 NS 和邻站通告 NA 完成原 ARP 的邻居地址解析功能。
  • ICMPv6 多播听众发现 MLD 完成原 IGMP 的多播成员管理功能。
  • RARP 被取消,不属于 IPv6 的配套协议。

因此看到“IPv6 配套协议包括 ICMPv6、ARPv6、IGMPv6”的说法,应判错;相关功能已并入 ICMPv6。

7.7 模拟题二:IPv4 与 IPv6 叙述

判断以下四项:

  1. IPv4 数据报首部固定部分为 20 B,IPv6 基本首部为 40 B。
  2. IPv6 支持任播。
  3. IPv6 基本首部取消首部校验和字段。
  4. 与 IPv6 配套的网际层协议有 ICMPv6、ARPv6、IGMPv6。

分析:

  • I 正确:IPv4 固定部分为 20 B,IPv6 基本首部固定为 40 B。
  • II 正确:IPv6 支持任播;共享同一任播地址的接口中,由路由选择一个作为送达目标。IPv6 也支持多播,但那不是本题第 II 项的原文。
  • III 正确:IPv6 基本首部没有首部校验和。
  • IV 错误:不存在题目所说的独立 ARPv6、IGMPv6;其功能由 ICMPv6 的邻居发现和 MLD 承担。

只有 IV 错误。

答案:B,仅 IV。

7.8 解题步骤

  1. 检查总位数逻辑:IPv6 应还原为 8 个 16 位组。
  2. 每组前导 0 可以省略,但 :: 在一个地址里只能出现一次。
  3. 混合表示中,末尾 IPv4 点分十进制占两个十六进制组。
  4. 带 /n 的写法是合法前缀表示,不要因有斜线而判错。
  5. 协议对比题记住 IPv6 基本首部 40 B、无首部校验和、支持任播和多播但无广播;读题时不要把“任播”抄成“多播”。
  6. 看到 ARPv6、IGMPv6 时,联想到 ICMPv6 邻居发现和 MLD,判断其为错误命名。

7.9 易错点

  • :: 是合法未指明地址,::1 才是环回地址。
  • 一个地址中只能使用一次 ::;多个普通 0 组可以分别省略前导 0,但不能出现两次零压缩。
  • ::ffff:192.168.1.1 是合法混合表示,不是“冒号与点号不能混用”。
  • IPv6 仍使用 CIDR 前缀长度,例如 /60。
  • IPv6 支持多播,但不支持广播。
  • 任播只把分组交给共享任播地址的接口之一,多播则面向多播组接收者;原题第 II 项考的是任播。
  • IPv6 基本首部固定 40 B;IPv4 的 20 B 是不含选项的最小/固定部分长度。
  • IPv6 没有独立 ARPv6、IGMPv6;相关功能并入 ICMPv6。

相关知识

7.10 本节复盘

  • IPv6 地址为 128 位,分成 8 个 16 位十六进制组。
  • 组内前导 0 可省略,连续全 0 组可用一次 :: 压缩。
  • 2001::abcd::1234 因使用两次 :: 而非法;模拟题一答案为 A。
  • :: 是未指明地址,::ffff:192.168.1.1 是合法 IPv4 混合表示,/60 是合法前缀。
  • IPv6 基本首部固定 40 B,取消首部校验和,支持任播与多播但不使用广播;模拟题二原题第 II 项是“支持任播”。
  • ICMPv6 的邻居发现替代 ARP 功能,MLD 替代 IGMP 功能,RARP 被取消;模拟题二答案为 B。