🎯 课程摘要:IPv6 与 IPv4 一样不保证数据报可靠交付,因此也需要 ICMP 来反馈差错信息,对应版本为 ICMPv6。ICMPv6 比 ICMPv4 复杂得多,合并了 ARP 和 IGMP 的功能,是 IPv6 唯一配套的网际层协议。
- 引入原因:由于 IPv6 与 IPv4 一样,都不确保数据报的可靠交付,因此 IPv6 也需要使用网际控制报文协议 ICMP 来向发送 IPv6 数据报的源主机反馈一些差错信息,相应的 ICMP 版本为 ICMPv6。
- 与 ICMPv4 的区别:
- ICMPv6 比 ICMPv4 要复杂得多。
- ICMPv6 合并了原来的地址解析协议 ARP 和网际组管理协议 IGMP 的功能。
- 因此与 IPv6 配套使用的网际层协议就只有 ICMPv6 这一个协议。
- 协议关系示意:IPv4 网际层中的 IGMP 和 ARP,在 IPv6 中都合并到了 ICMPv6。
| IPv4 配套协议 | 功能 | 在 IPv6 中的归属 |
|---|
| ICMPv4 | 差错报告、信息获取 | 并入 ICMPv6 |
| ARP | 地址解析 | 并入 ICMPv6(邻站询问/通告) |
| IGMP | 多播组管理 | 并入 ICMPv6(多播听众发现) |
- ICMPv6 报文需要封装成 IPv6 数据报进行发送。
- 封装在基本首部之后:若 IPv6 数据报的数据载荷封装的是 ICMPv6 报文,需要将其基本首部中下一个首部字段的值设置为 58,表明数据载荷封装的是 ICMPv6 报文。
- 封装在扩展首部之后:若 IPv6 数据报的有效载荷中包含扩展首部,在扩展首部之后封装的是 ICMPv6 报文,则在 ICMPv6 报文前面的那个扩展首部中,其下一个首部字段的值也必须设置为 58。
- ⚠️ 重点/考点:ICMPv6 对应的"下一个首部"字段值为 58(注意区分:ICMPv4 在 IPv4 首部协议字段中为 1)。
- 用途:ICMPv6 报文可被用来报告差错、获取信息、探测邻站或管理多播通信。
- 分类策略:不同 RFC 文档使用了不同策略——RFC 2461 定义了 5 种类型的 ICMPv6 报文,RFC 2710 定义了 3 种。
- 常用 ICMPv6 报文类型:
| ICMPv6 报文类型 | 类别 | 替代的原 IPv4 协议 |
|---|
| 目的不可达 | 差错报告 | —— |
| 分组太长 | 差错报告 | —— |
| 超时 | 差错报告 | —— |
| 参数问题 | 差错报告 | —— |
| 回送请求 / 回送回答 | 询问 | —— |
| 路由器询问 / 路由器通告 | 邻居发现(NDP) | —— |
| 邻站询问 / 邻站通告 | 邻居发现(NDP) | 替代 ARP |
| 多播听众发现(MLD) | 多播管理 | 替代 IGMP |
- ⚠️ 重点/考点:
- ICMPv6 **多播听众发现报文(MLD)**替代了原来的 IGMP 协议。
- ICMPv6 邻站询问和邻站通告报文替代了原来的 ARP 协议。
- 与 IPv6 配套的网际层协议只有 ICMPv6 一个。
- ICMPv6 是 IPv6 唯一配套的网际层协议,合并了 ICMPv4 + ARP + IGMP 三者功能。
- ICMPv6 报文封装为 IPv6 数据报时,下一个首部字段值为 58。
- 邻站询问/通告替代 ARP,多播听众发现(MLD)替代 IGMP。
- 为什么说与 IPv6 配套使用的网际层协议只有 ICMPv6 一个?
- ICMPv6 报文封装在 IPv6 数据报中时,"下一个首部"字段应设置为何值?
- ICMPv6 中哪些报文替代了 IPv4 中的 ARP 和 IGMP 协议?
- 简述 ICMPv6 相比 ICMPv4 的主要变化。