ICMP在OSI模型中被归类为第3层协议,但据我所知,它不符合网络层协议的定义。
它不提供寻址或数据包路由(为此它使用IP),因此它所做的只是将信息从一个节点发送到另一个节点,例如传输协议。那么,既然如此,为什么将ICMP归类为第3层协议?
它还可以告诉您流量的方向,确认主机的存在,通知问题的发送者,并且最重要的是,它需要 IP地址才能工作
—
NickW
我相信您提到的所有内容仅仅是传递信息的形式。我同意它需要IP,但这肯定是将它放在堆栈中IP之上的一层的原因。
—
罗比·麦肯尼
无论如何,层数太多了:)
—
NickW
我想我说应该在传输层时打错了。我的意思是它似乎在网络层中不合适,所以在那里的解释是什么?当然,我认为一切都有原因,有时我是错的。
—
罗比·麦肯尼
对于您而言,重要的是要意识到Internet不适合清洗OSI模型。实际上,RFC(3439 2.4)提到,当人们尝试过于严格时,它们认为分层是有害的。IP基本上需要ICMP,因此有人可以说它属于IP。ICMP基本上是IP的错误通知功能。TCP / UDP将IP用于错误消息(端口不可达)。PMTU由ICMP完成。因此,ICMP当然会降低TCP / UDP。您只需要接受在TCP / IP中各层之间没有严格的边界即可。事情起作用只重要。
—
Zoredache