为什么将ICMP归类为第3层协议?[关闭]


11

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

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


它还可以告诉您流量的方向,确认主机的存在,通知问题的发送者,并且最重要的是,它需要 IP地址才能工作
NickW

我相信您提到的所有内容仅仅是传递信息的形式。我同意它需要IP,但这肯定是将它放在堆栈中IP之上的一层的原因。
罗比·麦肯尼

1
无论如何,层数太多了:)
NickW

1
我想我说应该在传输层时打错了。我的意思是它似乎在网络层中不合适,所以在那里的解释是什么?当然,我认为一切都有原因,有时我是错的。
罗比·麦肯尼

7
对于您而言,重要的是要意识到Internet不适合清洗OSI模型。实际上,RFC(3439 2.4)提到,当人们尝试过于严格时,它们认为分层是有害的。IP基本上需要ICMP,因此有人可以说它属于IP。ICMP基本上是IP的错误通知功能。TCP / UDP将IP用于错误消息(端口不可达)。PMTU由ICMP完成。因此,ICMP当然会降低TCP / UDP。您只需要接受在TCP / IP中各层之间没有严格的边界即可。事情起作用只重要。
Zoredache

Answers:


15

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
不,它在第3层起作用。对于它所做的一切,它都在第3层。重要的是您应该问自己:What is the "data unit of layer 4 protocol"?
cuonglm

我什至不知道那个问题是什么意思。我只是按照我为不同层阅读的定义来思考,也许我对osi层模型如何工作的想法是不正确的
Robbie Mckennie 2013年

1
行动,只是一个提示。data unit of layer 1 is bitsdata unit of layer 2 is framesdata unit of layer 3 is packets。第四层是什么?
cuonglm

回答:第4层的PDU是一个“段”
lobi,2016年

6

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

OSI模型主要是由连接用户(实际人员或应用程序服务器)的预期编写的。所有管理协议及其仍不适合OSI模型的内容,但似乎与语言不完全匹配,因为它们(通常)不直接为用户服务。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.