如何处理 ICMP-in-IPv6 或 ICMPv6-in-IPv4?

网络工程 ip ipv4 ipv6 国际会议 icmpv6
2021-07-05 08:43:44

由于ICMP 和ICMPv6 具有不同的IP 协议编号,因此IPv4 主机接收ICMPv6 数据包或IPv6 主机接收ICMP 数据包在技术上是可能的。在这种情况下,主机的行为是否有任何标准规定?我在任何 RFC 中都没有看到任何内容。

2个回答

RFC 8200 声明 IPv6 中的“下一个标头”字段使用与 IPv4 中的“协议”字段相同的值。

但是,RFC 4443 指出:

每个ICMPv6 消息前面都有一个IPv6 标头……ICMPv6 标头由Next Header值 58标识......

RFC 792 指出:

ICMP 消息使用基本 IP 报头发送。
...
4

我解释这两个语句的方式是,ICMP 数据包不仅由“协议”或“下一个标头”字段标识,而且该协议由ANDIP 版本和“协议”/“下一个标头”编号的逻辑组合标识.

这意味着 IPv4 数据包中的“协议”值 58并不意味着 ICMPv6,而 IPv6 数据包中的“下一个标头”值 1并不意味着 ICMP(v4)。

如果这种解释是正确的,则您必须以与收到具有未知“协议”或“下一个标头”编号的数据包相同的方式做出反应。

ICMPv4 封装在 IPv4 数据包中,ICMPv6 封装在 IPv6 中。仅 IPv4 的主机无法接收和解析 IPv6 数据包(反之亦然)。