当ICMP协议数据是IP数据包的有效载荷时,为什么认为ICMP协议运行在维基百科页面的第3层(与IP相同的层)?
这是维基百科上的文章,指出 ICMP 与 IP 协议在同一层。我对此感到困惑。 https://en.wikipedia.org/wiki/Internet_protocol_suite
当ICMP协议数据是IP数据包的有效载荷时,为什么认为ICMP协议运行在维基百科页面的第3层(与IP相同的层)?
这是维基百科上的文章,指出 ICMP 与 IP 协议在同一层。我对此感到困惑。 https://en.wikipedia.org/wiki/Internet_protocol_suite
ICMP 的原始 RFC RFC777指出:
ICMP,使用IP的基础支持,就好像它是一个更高级别的协议,然而,ICMP实际上是IP的一个组成部分,必须由每个IP模块来实现。
该声明也出现在 RFC792 中,它废弃了 RFC777。
关于哪些协议在模型的哪些层上运行存在很多争议。了解模型,例如 OSI 模型,只是模型,而现实世界往往是不同的。
ICMP层放置两边都有人。请记住,维基百科由所有人维护,包括您。如果您不同意文章中的内容,您可以自由更改它,或者添加一些内容来解释为什么它应该是第 4 层协议。
您还应该咨询其他来源。最后,你自己决定你认为它属于哪里。
为什么在维基百科页面上认为 ICMP 协议在第 3 层运行?
正如其他人所指出的,模型就是模型。因此,并非现实世界中的所有事物都能够完美地融入模型中。ICMP 就是这样一个领域,人们有时会在该领域争论它存在于哪一层(L3、L3.5 或 L4)。
尽管有这些争论,但 ICMP 通常被认为是 L3 或网络协议,因为它不是传输层协议,L3.5 也不是实际的层。具体来说,ICMP 只提供 IP 数据包中的结构化数据;它没有添加任何被认为是另一层标头的东西,比如像 TCP 或 UDP 那样的 L4 协议。
此外,虽然 ICMP 确实需要 IP 才能运行,但它是作为 IP 协议的一部分实现的,并且仅用于传达有关网络层的信息。例如,ping(回声请求和回声回复)仅提供有关 L3 可达性的信息。它们不提供有关任何更高层协议的任何信息。
当ICMP协议数据是IP数据包的有效载荷时,为什么认为ICMP协议运行在维基百科页面的第3层(与IP相同的层)?
IP 数据包的有效载荷是原始数据还是更高层协议与 IP (L3) 无关。或者换一种说法,仅仅因为 IP 数据包具有有效载荷并不意味着有效载荷来自更高层协议。
这同样适用于 L2,有许多 L2 帧的示例(STP、CDP 等)包含与 L3 或更高协议完全无关的数据(即没有 IP 报头等)。同样,仅仅因为帧具有有效载荷并不意味着有效载荷来自更高层协议。
ICMP 仅适用于网络层。您可以在 Cisco Packet Tracer 中进行模拟测试。从 PC 到目标运行 ping。在模拟中单击任何数据包。然后它显示七层(OSI)。你会想通的。(我就这样解开了疑惑)