【问题标题】:Is ICMP a transport layer protocol?ICMP 是传输层协议吗?
【发布时间】:2016-07-03 03:42:46
【问题描述】:

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

【问题讨论】:

    标签: networking icmp


    【解决方案1】:

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

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

    希望这会有所帮助!

    【讨论】:

    • “通常”这个词不属于这个答案。要么是,要么不是。
    • RFC792的第一段,概述ICMP协议的文档:“ICMP,使用IP的基本支持,好像它是一个更高级别的协议,但是,ICMP实际上是IP的组成部分,必须由每个IP模块实现”.
    【解决方案2】:

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

    更新:

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

    引用书中的内容。

    “定位标记为 ICMP 和 IGMP 的协议框始终是 挑战。之前,我们将它们展示在与 IP 相同的层,因为它们确实 是知识产权的附属品。但在这里我们将它们展示在 IP 之上,重申一下 ICMP消息和IGMP消息封装在IP数据报中"

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

    接下来要学习的最关键的事情是,

    即使你在同一台机器上使用多个 say 控制台 ping 到另一台机器,它仍然能够跟踪所有个人,即所谓的连接(只是关联消息交换,否则没有像 tcp 这样的连接) .

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

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

    【讨论】:

    • 究竟什么时候“经常与传输层混淆”?除了这个问题,我从未见过它。它在没有传输层的情况下工作的事实并不能证明它在传输层中。否则一切都必须在传输层中。你只是在这里增加了混乱。
    • 首先,通过 OSI 模型学习,我看到学生假设总有某种传输层。没有看到周围让他们认为 ICMP 自己处理传输。首先了解总是有一个端口来识别应用程序,然后了解在没有端口的情况下工作的异常是新的。甚至史蒂文斯的圣经也列出了 ICMP 在某些混合领域,指出它在某种意义上就像运输,在另一种意义上就像网络。我脑子里有一张朦胧的堆栈图片。会在这里引用。
    • 此外,看不出是什么让您认为它令人困惑。我解释了 ICMP 的两种最常见的应用是如何工作的,这一直是学生心中的一个问题
    • 《Linux 内核网络》一书(第 3 章)说 ICMP 是第 4 层(传输层)协议。不过,在这个困境中,我会站在史蒂文斯一边。 amazon.com/Linux-Kernel-Networking-Implementation-Experts/dp/…
    • @holgac,我听说斯坦福大学的一位教授添加了一个警告“严格来说它是一个传输层协议,但它确实是为网络层服务的”,但我会相信创建者的话;加上以下内容更有意义,也可能对您有用。 RFC792,概述ICMP协议的文档:“ICMP,使用IP的基本支持,就好像它是更高级别的协议一样,但是,ICMP实际上是IP的组成部分,必须实现由每个 IP 模块”。我倾向于相信,因为每个 IP 模块都需要它,所以它是一种网络协议。
    猜你喜欢
    • 1970-01-01
    • 2018-10-30
    • 2019-03-23
    • 2022-12-10
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多