【问题标题】:ICMPv6 Protocol Unreachable (Protocol Not Supported)ICMPv6 协议不可达(不支持协议)
【发布时间】:2017-04-06 08:51:19
【问题描述】:

SIP RFC 3261 - 第 18.4 节 -

如果传输用户要求通过 不可靠的传输,结果是 ICMP 错误,行为 取决于 ICMP 错误的类型。主机、网络、端口或协议 无法访问的错误,或参数问题错误应该导致 传输层通知传输用户发送失败。

对于 IPv4 - 协议不可达可以通过通过 SCTP 向不支持 SCTP 的节点发送 SIP 消息来模拟。

我对 IPv6 感到困惑。 ICMPv6 中没有“协议无法访问”错误。我没有设置 IPv6 进行测试。我有以下问题 -

  1. IPv6/ICMPv6 不支持“协议不可达”吗?
  2. RFC 4443 关于类型 = 1,代码 = 3

    如果无法将无法交付的原因映射到任何 其他代码,代码字段设置为 3。这种情况的示例是 无法将 IPv6 目标地址解析为 相应的链接地址,或某种特定于链接的问题。

这是否意味着 type = 1, code = 3 映射到“协议不可达”?在这里提出问题的目的是为了获得有关此问题的最大信息。

【问题讨论】:

标签: sip ipv6 icmp


【解决方案1】:

您正在通过 IPv4 眼镜看待这个问题。 IPv4包头有Protocol字段,而IPv6包头没有,所以Protocol Unreachable消息不适用于IPv6。 IPv6 数据包标头使用 Next Header 字段。

ICMPv6 确实有参数问题消息,其中包括以下代码:遇到无法识别的下一个标头类型

【讨论】:

  • 嗨,Ron,这个问题也适用于 IPv6 下一个标头。如果“下一个标头”包含指示 SCTP 传输作为有效负载但目的地不支持 SCTP 的值 (132),该怎么办。我应该收到哪个 ICMP 错误?该参数对 TCP、UDP 也有效。尽管每个堆栈都支持这两种协议,但这个问题在理论上仍然有效。如有错误请指正。
  • 正如我在回答中解释的那样,如果主机接收到一个 IPv6 数据包,该数据包的目标是主机不支持的协议(SCTP,如您的示例),那么网络堆栈中的 IPv6 应该生成一个ICMPv6 Type 4 (Parameter Problem) 消息,带有代码 1(Unrecognized Next Header type遇到),通常是 40 的指针(Next Header)。这一切都清楚地记录在 RFC 4443, Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification, Section 3.4, Parameter Problem Message 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 2023-03-04
  • 1970-01-01
  • 2011-07-14
相关资源
最近更新 更多