單個 NIC 上的多個 IP 地址接收來自不同子網的 UDP
抱歉,如果我沒有為這一切使用正確的語言,我是軟體開發人員而不是伺服器/網路管理員!
我有一台配置了多個 IP 地址的單個 NIC 的 Windows 機器。例如,網卡地址是
172.1.48.3
. 它在 Properties -> Ip 4 Properties -> Advanced 中配置了三個 IP 地址,都在不同的子網172.1.48.3
和 . (子網遮罩在所有這些上)。172.1.88.3``172.1.104.3``255.255.255.0
我有一個程序用這些 IP 地址中的每一個監聽三個 UDP 套接字。
網路上的三件事正在向每個子網廣播
172.1.48.255
:172.1.88.255
和172.1.104.255
。我可以在wireshark 中看到UDP 是從這些地址進來的,所以
172.1.48.255 -> 172.1.48.3
等等172.1.88.255 -> 172.1.88.3
。但是,我看到了套接字之間的“交叉污染”。綁定到的 UDP 套接字正在接收來自和 的172.1.48.3
UDP 消息。172.1.48.3``172.1.88.3``172.1.104.3
要麼我不正確理解 UDP,要麼與網路有關。我認為在一個 NIC 上擁有這三個獨立的 IP 地址是有問題的,因為如果每個 IP 都有自己的機器(因此 NIC),它就可以正常工作。
任何人都知道為什麼
172.1.48.3
套接字會接收廣播到不同子網的消息172.1.104.255
?
因為廣播流量本質上是……廣播的。如果您查看 Wireshark 中 UDP 流量的乙太網幀部分,您會看到目標 MAC 地址(第 2 層)是 FF-FF-FF-FF-FF-FF,其中包括連接到同一物理網路的所有主機分割。連接到同一物理網段的所有主機都將接收此流量並查看第 3 層地址並確定它們是否應該接受和處理流量。不在同一個第 3 層目標網路中的主機將接受流量,然後將其丟棄……但它們會接受它。