【发布时间】:2013-04-24 14:21:51
【问题描述】:
这一段如果来自UNP, 第 21.3 章第 555 页
- 运行应用程序的主机已加入某个多播组,其 相应的以太网地址恰好是接口的一个 当它被编程为接收 01:00:5e:00:01:01 时接收(例如, 接口卡执行不完善的过滤)。此帧将被丢弃 通过数据链路层或 IP 层。
我只是不知道作者在谈论哪种特殊情况。你能帮我解释清楚吗?
【问题讨论】:
标签: sockets unix networking
这一段如果来自UNP, 第 21.3 章第 555 页
我只是不知道作者在谈论哪种特殊情况。你能帮我解释清楚吗?
【问题讨论】:
标签: sockets unix networking
在 IPV4 中。多播地址(旧的 D 类)由 4 位固定组成,用于将其标识为多播(1110),其余 28 位用于标识组。
由于 MAC 地址中只有 23 位可用(高 25 位是固定的),当您将多播地址的低 23 位映射到 mac 的低 23 位时,您会丢失 5 位寻址信息。所以多个组播地址都具有相同的MAC地址。
例如
237.138.0.1
238.138.0.1
239.138.0.1
全部映射到 MAC 地址:01:00:5e:0a:00:01(还有更多,这只是一个子集来说明)
因此,如果您加入组 237.138.0.1,您的以太网卡将开始向该 MAC 的堆栈发送帧。由于它是不完美的匹配(因为我们丢弃了这 5 位),以太网卡也会将 238.138.0.1 和 239.138.0.1 发送到堆栈中。但是由于您对这些帧不感兴趣,当它们可以完全匹配时,它们将在第 2 层(数据链路)或第 3 层(网络)被丢弃。
所以特殊情况是,如果您有多个多播流占用相同的低 23 位地址空间,则网段上的所有主机都将不得不处理堆栈中更高的数据包,从而做更多的工作来判断他们收到的数据包是否是他们感兴趣的数据包)。
通常您只需要确保在规划多播部署时尽量避免地址重叠。
【讨论】: