Windows

單個 NIC 上的多個 IP 地址接收來自不同子網的 UDP

  • June 15, 2018

抱歉,如果我沒有為這一切使用正確的語言,我是軟體開發人員而不是伺服器/網路管理員!

我有一台配置了多個 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.255172.1.88.255172.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.3UDP 消息。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 層目標網路中的主機將接受流量,然後將其丟棄……但它們會接受它。

引用自:https://serverfault.com/questions/916686