邻居发现协议的OSI层

网络工程 ip ipv6 奥西 icmpv6 民进党
2021-07-08 02:28:56

NDP 使用 ICMPv6 运行,尽管 ICMPv6 消息封装在 IPv6 数据报的有效载荷字段中,但 ICMPv6 和 ICMP 通常被视为网络层协议。至少,在维基百科上,它们是网络层协议。

所以我认为 NDP 因此也是网络层协议。但是维基百科上直接说是链路层协议:

邻居发现协议 (NDP, ND)[1] 是互联网协议套件中的一个协议,与互联网协议版本 6 (IPv6) 一起使用。它运行在 Internet 模型 (RFC 1122) 的链路层,负责收集 Internet 通信所需的各种信息,包括本地连接的配置以及用于与更远距离的系统通信的域名服务器和网关。[ https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol ]

所以我的假设是 NDP 被认为是一种链路层协议,因为 NDP 使用的 ICMPv6 消息(邻居请求、路由器广告、重定向等)永远不会离开本地网络——就像 ARP 消息永远不会离开本地网络一样。我对吗?

感谢您的关注。

更新 1

好吧,我意识到对我来说最有趣的一点是——NDP ICMPv6 消息永远不会离开本地网络的边界是否正确?

更新 2

尽管看起来没有什么可以阻止我将邻居请求发送到 Internet 上的任何主机。ICMPv6 是可路由的。所以我可以选择任何目标 IPv6,包括我的网络之外的目标。

4个回答

首先:在每个“模型”中,您都会发现某些方面无法正确描述现实。这适用于计算机科学、金融理论、政治或任何其他科学领域的“模型”。正如已经说过的那样,“OSI 模型”是一个“模型”,因此它没有在所有方面正确地描述现实。

尤其是“XYZ协议是什么层”这个问题,往往没有明确的答案:想想VPN会话中HTTPS连接中的隧道IP数据包。

但是,所谓的“TCP/IP 模型”(它是 OSI 模型的简化替代方案)对应于OSI 第 3层的层中看到 ICMP 数据包,而不是第 2 层。

该模型不将 ICMP 视为自己的第 3 层协议,而是将其视为 IP 协议(​​显然是第 3 层)的一部分:

将 NDP 置于第 3 层以外的任何其他层将意味着该协议可与任何第 3 层协议一起使用(例如,NDP 可与 IPv4 一起使用)。然而,这种情况并非如此。

本来可以将 NDP 放在第 2 层和第 3 层之间:

例如,ARP 位于第 2 层和第 3 层“之间”(维基百科称“第 2.5 层”),以表明该协议仅与第 2 层和第 3 层协议的某些组合一起使用。(据我所知,ARP 仅适用于 IPv4 和以太网的组合)。

然而,这在 NDP 的情况下并非如此:NDP 应该适用于每个第 2 层协议。

好吧,我意识到对我来说最有趣的一点是——NDP ICMPv6 消息永远不会离开本地网络的边界是否正确?

  1. 这个标准不足以说协议在第 2 层上:

    DHCP 也永远不会离开本地网络——但是 DHCP 覆盖了 OSI 层 5-7。

  2. 我知道至少有一个案例,NDP 信息在世界各地传播:

    使用 Teredo 使用 IPv6 时!

OSI 模型是一个概念性的想法——它与人们实际构建的任何东西都没有关系。此外,IPv4 和 IPv6 是在没有考虑 OSI 模型的情况下开发的,因此它们之间没有直接关联。许多 IPv4 协议并不真正适合该模型,IPv6 也是如此。

人们花费无数时间争论特定协议驻留在哪一层。你的推理和任何推理一样好。

有关OSI 模型和网络协议的更多信息请参阅此问题和答案

我也想回答我自己的问题。答案特别涉及我附加到最初问题的两个更新。我想知道如果我尝试将任何 NDP ICMPv6 消息发送到本地网络之外的主机会发生什么。这听起来像是一个安全问题。于是我发现问题在RFC-4861 [https://www.rfc-editor.org/rfc/rfc4861]中是通过以下方式解决的:

11.2. 保护邻居发现消息

该协议通过忽略从离线发送方收到的 ND 数据包,在没有身份验证的情况下减少了上述威胁的暴露。所有接收到的数据包的 Hop Limit 字段都被验证为包含 255,即最大合法值。因为路由器会递减它们转发的所有数据包的跳数限制,所以接收到的包含跳数限制为 255 的数据包一定来自邻居。

3.1. 与 IPv4 的比较

通过将 Hop Limit 设置为 255,Neighbor Discovery 不受意外或有意发送 ND 消息的离线发送者的影响。在 IPv4 中,离线发送方可以发送 ICMP 重定向和路由器广告消息。

因此,在此 RFC-4861 的每个部分中,对应于每种类型的 NDP 消息,-

6.1.1.  Validation of Router Solicitation Messages
6.1.2.  Validation of Router Advertisement Messages
7.1.1.  Validation of Neighbor Solicitations
7.1.2.  Validation of Neighbor Advertisements
8.1.    Validation of Redirect Messages

——有这样一句话:

主机必须静默丢弃任何不满足以下所有有效性检查的接收消息:

  • IP Hop Limit 字段的值为 255,即数据包不可能被路由器转发。
  • ...

因此,通常 NDP 消息只能在网络中本地传输,不应路由。

NDP属于L3网络层,是IPv6的重要组成部分。就像 IPv6 一样,它被封装在 L2 帧中,因此它使用 - 或在 - 数据链路层(最常见的是以太网)之上运行。