需要澄清有关 ipv6 多播和 ipv4 广播

需要澄清有关 ipv6 多播和 ipv4 广播

我正在研究 IPv6,并试图更深入地了解它的工作原理。

到目前为止,我知道根据通信类型,地址基本上有三种类型:

  • 单播:一对一沟通
  • 多播:一对多通信
  • 任播:一个到最近的通信

我知道在 IPv6 网络中没有广播的概念,而是使用多播地址:例如,可以使用 FF02::2 地址仅向同一本地网络段上的路由器发送某些内容,并且此信息不会发送到不是路由器的其他主机。

YouTube 上有一些由 Sunny Classroom 制作的关于 IPv6 的精彩视频:IPv6 - 邻居发现协议https://youtu.be/a1AQfjWwPaE?t=165),在 2:46 处,您可以看到一个动画,其中一台计算机发送一个 FF02::2 数据包,该数据包仅到达两个路由器,而忽略了其他设备。

混乱就从这里开始了:如果我有一个网络,例如,在同一个本地网络(即同一个交换机上)上有 20 台计算机和一台路由器,并且其中一台计算机发送类型为 FF02::2 的多播,则该数据包应该只到达路由器(如果我理解了我到目前为止所学的内容),但是交换机(即第 2 层设备)如何知道如何通过路由器所在的端口转发 FF02::2 数据包?我想象在这种情况下,所有设备都会接收 FF02::2 数据包,就像广播消息一样:所以,在我看来,广播消息仍然存在于 IPv6 中:我错在哪里了?

答案1

请记住,IPv4 也具有多播,其工作方式与 IPv6 几乎相同。IPv6 在这一领域并没有引入太多根本性的新内容,只是现在更加整洁了(例如,组地址范围已正确分组)。

作为第 2 层设备的交换机如何知道如何通过路由器所在的端口转发 FF02::2 数据包?

交换机实际上会关注 IPv4 IGMP 和 ICMPv6 MLD 数据包,这些数据包在主机请求加入或离开多播组时会经过交换机。通常此功能称为“IGMP 侦听”(用于 IPv4)或“MLD 侦听”(用于 v6)。

这使得多播感知交换机比纯 L2 设备稍微多一点。(RFC 4541更详细地描述了交换机 IGMP/MLD 侦听。)事实上,RFC 4541 甚至建议侦听交换机根据 L3(IP)地址而不是 L2(MAC)转发多播帧,尽管帧仍然保留其原始的 L2 报头(而纯 L3 转发则不会如此,如路由器那样),所以它是 L2/L3 功能的突破层混合。

(并非所有交换机都会监听 IGMP/MLD 订阅;特别是,较小的非管理型交换机通常根本不关心,即使在管理型“企业”交换机中,它也经常默认禁用。因此在实践中,通常数据包实际上会到达所有主机并被主机操作系统过滤。)

类似地,Wi-Fi 接入点通常具有“多播增强”功能,该功能也基于 IGMP/MLD 侦听,因此也比纯 L2 桥接略多。(无线电本质上是一种广播媒介,但实际的多播帧以低速率发送;“多播增强”将它们转换为单播帧 - 每个接收者一份副本 - 传输速度更快、更可靠。)

但请注意,某些多播组根本不使用 IGMP 或 MLD - 特别是ff02::1“所有节点”组不使用 MLD,因此有效地广播组(RFC 2710 第 5 节;RFC 4541 第 3 节),即使人们不愿意承认。类似地,224.0.0.1IPv4 中的“所有节点”(以及 224.0.0.x 的其余部分)在功能上是一个广播组,因为 IGMP 不适用于它。

也可以看看:

相关内容