单个NIC上的多个IP:UDP广播

时间:2013-01-24 09:06:40

标签: java windows networking udp broadcast

问题:
1-客户端1侦听子网A的IP 2-服务器向子网B发送广播消息 3-客户端1还通过子网A中的IP读取此消息 - 如果消息不是广播而是单播,则不会出现这种情况。

我正在尝试编写一个Java应用程序来侦听在单个网络接口上定义的某些IP和端口。您可以在下面找到我的网络配置示例:

netsh interface ip>show address

Configuration for interface "Local Area Connection"
DHCP enabled: No
IP Address: 22.108.131.1
SubnetMask: 255.255.255.0
IP Address: 22.108.132.1
SubnetMask: 255.255.255.0
IP Address: 22.108.133.1
SubnetMask: 255.255.255.0
InterfaceMetric: 0

我打开数据报通道并将它们绑定到这些IP地址。对于每个IP,我有不同的线程来响应来自频道的消息。

现在问题是,服务器将UDP广播消息发送到

  

22.108.131.255
  22.108.132.255
  等等。

但是,例如,在创建用于侦听22.108.131.1的线程中,我收到了发往22.108.132.255的广播消息。我使用Wireshark检查传入的消息,它告诉我消息正确地以22.108.132.255正确但是在我的应用程序中我看到消息的端点是22.108.131.1,它是监听线程。

起初我认为我的实现是错误的,但更令人惊讶的问题是传入的非广播消息。我的意思是,如果消息的目的地是22.108.131.1那么22.108.132.1没有收到,这显然是应该如何。但我不明白的是,它是关于广播消息的,为什么不能像它应该的那样运行。

我不确定问题是否是由Windows多个IP配置引起的。但我观察到的是操作系统将子网A的广播消息传递给子网B。

另一件可能是线索的事情是,我只讨论了上面的22.108.131.1和22.108.132.1,尽管我也定义了22.108.133.1。如果我没有为该IP打开数据报通道,我仍然可以从其他IP读取该子网的广播消息。

我在这里错过了一些东西吗?或者它是Windows的网络处理的本质?

1 个答案:

答案 0 :(得分:0)

以255结尾的IP是广播消息,网络中的每个节点都会听到该消息。