繁体   English   中英

ICMP是传输层协议吗?

[英]Is ICMP a transport layer protocol?

我正在进行关于网络的视频讲座,讲师提到ICMP作为传输层协议。 但是,谷歌搜索显示各种论坛将其描述为网络层协议。 这让我很困惑。 有人可以澄清吗?

传输层协议涉及从端到端发送数据并确保(或明确不确保)可靠性。 TCP用于将数据从一台计算机发送到另一台计算机,并包括确保数据正确传输所必需的逻辑,而UDP用于将数据从一台计算机发送到另一台计算机,同时希望获得可靠性。

ICMP真的不这样做。 它的工作是帮助路由器找出互联网的形状以及使用不同协议发送数据包的方向。 因此,它被认为是网络层协议,因为它的工作是确保数据路由到正确的位置,但实际上并不路由数据。

希望这可以帮助!

毫无疑问,它是一种网络层协议。 它经常与传输层混淆的原因是ICMP在没有任何传输层的情况下工作。 例如,ping或traceroute没有明确定义的端口。 相反,每台机器的tcp / ip堆栈负责处理和响应传入的ICMP消息(而不是查找端口并传递给相应的应用程序,就像所有其他应用程序一样)。

更新:

显然这对读者来说听起来很混乱,所以这里是理查德史蒂文斯解释概念和意图的TCP / IP Illustrated快照。

从书中引用。

“定位标有ICMP和IGMP的协议盒总是一个挑战。早些时候,我们将它们显示在与IP相同的层,因为它们实际上是IP的附属物。但是我们在IP上面显示它们,重申ICMP消息和IGMP消息被封装在IP数据报中“

来自RS的TCP / IP层 -  TCP / IP Illustrated

教授“某些协议和应用程序”的工作方式不同于每个层的标准概念,负责不同的任务(传输是端到端,网络是跳跃到跳跃)的概念很难,需要时间来消化。

接下来最重要的学习是,

即使您使用从SAME机器到另一台机器的多个控制台进行ping操作,它仍然能够跟踪所有单独的,所谓的连接(仅关联消息交换,否则没有像tcp这样的连接)。

如何完成上述操作,是特定于操作系统的。 Linux堆栈在ICMP的数据字段中放入8个字节,其中包含触发原始应用程序层的端口。 这也在ping程序的同一本书中解释。

这同样适用于较低层协议,例如ARP / RARP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM