【问题标题】:Receiving multicast on multiple machines with the same IP address在具有相同 IP 地址的多台机器上接收多播
【发布时间】:2018-08-02 08:17:20
【问题描述】:

构建一些自动配置 IP 地址的代码,当它们启动时它们都具有相同的 IP,该软件使用多播来查找网络上的其他设备并使用该信息来计算它自己的 IP 配置。

但是,如果它们具有相同的 IP,它们将停止接收多播数据包,但如果我强制它们具有不同的 IP,多播会再次开始工作。多播是否与 IP 地址绑定,或者具有相同 IP 的多个设备可以接收多播。

我们不能使用 APIPA/Link-Local 寻址。

谢谢, 丹

【问题讨论】:

    标签: c# networking multicast


    【解决方案1】:

    多播并不意味着广播。多播意味着向之前请求过这个多播组的设备发送数据。

    您不能使用多播来访问任何以前未配置的机器。为此,您必须使用广播(即 255.255.255.255)。

    多播依赖于 IGMP 协议,而后者又依赖于有效的 IP 单播设置,这反过来又要求所有设备都可以通过其 IP 地址进行唯一标识。 IGMP 消息包含发送设备的单播 IP 地址。

    在您的设置中,路径上所有网络组件(路由器、交换机以及设备本身)中的所有漂亮优化算法都将失败,因为它们无法识别请求多播组的目标。他们可能会以任何随机方式失败。具有相同 IP 地址的多个设备的行为方式完全未定义。

    在您的情况下,某些网络组件决定无需将多播数据包分发到相关端口,因为没有唯一的接收器连接到该端口。 (我只是在这里推测。任何其他答案也是正确的。只是一个例子来解释它如何表现你所看到的方式。)

    【讨论】:

    • 谢谢,我不知道IGMP的设计需要知道源地址和事先设置单播的要求。我在配置之前依靠标准广播解决了它,并在配置时跳转到多播。
    • 听起来很完美!尽可能限制广播的使用。它确实适用于您确实需要接触所有机器的情况,以便踏入大门。
    猜你喜欢
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多