我实现了一个利用多播消息的网络发现过程。它允许发现连接到同一网段的任何IP地址的特定设备。为什么具有相同源IP地址的多播消息被忽略
客户端A发送多播消息,请求其他客户端。其他客户端回复多播消息“我在这里......”。基本上这工作正常。
但有一种情况会导致我的麻烦。
Client A Client B
192.168.2.5 192.168.2.5
| |
\__________/
>>>
UDP Multicast Message:
Source: 192.168.2.5 | Destination: 224.0.0.150
重合可能出现,发送多播消息的客户端A和客户端B都听同一个ip地址。在这种情况下,UDP数据包的源地址与目标客户端的IP地址相同。因此,客户端B上的应用程序不会收到任何多播消息。
我猜测具有相同消息的组播消息被阻塞并丢弃在ip-stack中。无论如何,有没有办法(套接字设置)来接收它。
通常情况下,两台电脑不可能有相同的ip。我认为交换机不允许将包发送到两个不同的端口。 – rekire 2012-02-03 11:57:24
当然两次同样的IP是不允许的。但可能会发生。无论如何,因为我知道交换机不关心IP地址(> Layer 3)。 – Maus 2012-02-03 12:06:45
@Maus交换机不会连接到它们的东西,如果他们发现2台具有相同IP的机器,它们的ARP缓存将会感到困惑,并且不知道将数据包发送到哪里,或者只发送到其中的一个,或者拒绝向他们中的任何人发送几乎任何东西。 – nos 2012-02-03 12:10:23