ICMP在OSI模型中被分类为第3层协议,但据我所知它不符合networking层协议的定义。
它不提供寻址或分组路由(为此使用IP),所以它只是将信息从一个节点发送到另一个节点,如传输协议。 那么,为什么ICMP分类为第3层协议呢?
ICMP实际上位于第3层的“顶层”。它使用IP协议将数据传送到远程主机。 换句话说,ICMP消息必须封装在IP数据包中。
考虑它类似于ARP,它可以被认为是“在层2的顶部”,而使用以太网协议来实际发送分组。
ICMP是作为IP层的一部分实现的,所以ICMP处理可以看作是与IP处理并行或作为IP处理的一部分。 因此,在基于TCP / IP的分层networking的主题中,ICMP被表示为第三层协议。
@Robbie Mckennie
ICMP属于哪一层是一个激烈辩论的话题。 ICMP报头在第4层,就像TCP和UDP一样,所以人们认为它属于第4层。其他人则认为ICMP是第3层协议,因为它协助IP并且没有端口的概念。
对我来说,协议分类属于OSI模型中的某一层取决于协议是如何工作的。 一个例子:
BGP用于在第3层进行路由,但BGP本身由TCP(当然还有IP)承载,
ICMP(和ICMPv6,IGMP等)都pipe理networking层连接。 它们不是(通常)被最终用户使用,而是被操作系统使用。 由于这个原因,即使它依靠IP进行寻址和path确定(路由),它也属于第3层(networking)。
OSI模型主要是从连接用户(实际人员或应用程序服务器)的angular度编写的。 所有的pipe理协议以及OSI模型中仍然适用的东西,但是看起来并不完全符合语言,因为它们通常不直接为用户提供服务。