为什么 ICMP 被归类为第 3 层协议?

Rob*_*nie 12 networking icmp network-protocols

ICMP 在 OSI 模型中被归类为第 3 层协议,但据我所知它不符合网络层协议的定义。

它不提供寻址或数据包路由(为此使用 IP),因此它所做的只是将信息从一个节点发送到另一个节点,就像传输协议一样。那么,既然如此,为什么 ICMP 被归类为第 3 层协议?

cuo*_*glm 17

ICMP 实际上位于第 3 层的“顶部”。它使用 IP 协议将数据传送到远程主机。换句话说,ICMP 消息必须封装在 IP 数据包中。

将其视为类似于 ARP,可以将其视为第 2 层的“顶部”,同时使用以太网协议实际发送数据包。

ICMP 是作为 IP 层的一部分实现的,因此可以将 ICMP 处理视为与 IP 处理并行发生或作为 IP 处理的一部分。因此,在基于 TCP/IP 的分层网络主题中,ICMP 被显示为第 3 层协议。

@罗比麦肯尼

ICMP属于哪一层是一个激烈争论的话题。ICMP 报头在第 4 层,就像 TCP 和 UDP 一样,所以人们认为它属于第 4 层。然而,其他人认为 ICMP 是第 3 层协议,因为它支持 IP 并且没有端口的概念。

对我来说,属于 OSI 模型中某个层的协议的分类取决于协议的工作方式。一个例子:

BGP 用于在第 3 层进行路由,但 BGP 本身由 TCP(当然还有 IP)承载

  • 不,它在第 3 层工作。它所做的一切都在第 3 层。重要的是你应该问自己,“什么是“第 4 层协议的数据单元”?` (3认同)

Chr*_*s S 6

ICMP(和 ICMPv6、IGMP 等)都管理网络层连接。它们(通常)不是由最终用户使用,而是由操作系统使用。因此,它属于第 3 层(网络),即使它依赖 IP 进行寻址和路径确定(路由)。

OSI 模型主要是从连接用户(实际人员或应用程序服务器)的角度编写的。所有管理协议和其他内容仍然适合 OSI 模型,但似乎与语言不太匹配,因为它们(通常)不直接为用户提供服务。