ICMP 在 OSI 模型中被归类为第 3 层协议,但据我所知,它不符合网络层协议的定义。
它不提供寻址或数据包路由(它使用 IP 来实现这一点),因此它所做的只是将信息从一个节点发送到另一个节点,就像传输协议一样。那么,既然如此,为什么 ICMP 被归类为第 3 层协议呢?
答案1
ICMP 实际上位于第 3 层的“最顶层”。它使用 IP 协议将数据传送到远程主机。换句话说,ICMP 消息必须封装在 IP 数据包中。
将其视为类似于 ARP,可以将其视为第 2 层的“顶部”,同时使用以太网协议来实际发送数据包。
ICMP 是作为 IP 层的一部分实现的,因此 ICMP 处理可以视为与 IP 处理并行发生,或作为 IP 处理的一部分。因此,在基于 TCP/IP 的分层网络主题中,ICMP 显示为第 3 层协议。
@Robbie Mckennie
ICMP 属于哪一层是一个备受争议的话题。ICMP 报头位于第 4 层,就像 TCP 和 UDP 一样,因此有人认为它属于第 4 层。然而,其他人则认为 ICMP 是第 3 层协议,因为它辅助 IP,并且没有端口概念。
对我来说,将协议归类为 OSI 模型中的某一层取决于协议的工作方式。例如:
BGP 用于第 3 层路由,但 BGP 本身由 TCP(当然还有 IP)承载
答案2
ICMP(以及 ICMPv6、IGMP 等)都管理网络层连接。它们通常不由最终用户使用,而是由操作系统使用。因此,它属于第 3 层(网络),尽管它依赖 IP 进行寻址和路径确定(路由)。
OSI 模型主要是从连接用户(实际人员或应用服务器)的角度编写的。所有管理协议和其他东西仍然适合 OSI 模型,但似乎与语言不太匹配,因为它们(通常)不直接为用户服务。