我實現了一個利用多播消息的網絡發現過程。它允許發現連接到同一網段的任何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