【问题标题】:Multiple IPs on a Single NIC: UDP Broadcast单个 NIC 上的多个 IP:UDP 广播
【发布时间】:2023-03-13 01:57:01
【问题描述】:

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

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

netsh interface ip>show address

接口“本地连接”的配置
启用 DHCP:否
IP地址:22.108.131.1
子网掩码:255.255.255.0
IP地址:22.108.132.1
子网掩码:255.255.255.0
IP地址:22.108.133.1
子网掩码:255.255.255.0
接口度量: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 就不会收到,这显然是应该的。但我不明白的是,当它是关于广播消息时,为什么它不能按应有的方式运行。

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

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

那么我在这里遗漏了什么吗?还是 Windows 网络处理的本质?

【问题讨论】:

    标签: java windows networking udp broadcast


    【解决方案1】:

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

    【讨论】:

    • 我相信 OP 知道这一点 - 只需看看标题和内容。他关心的是收到的端点地址。
    • 鲍勃,欢迎堆砌。能帮助人真是太好了。我喜欢它。但有时我发现自己回答了一个人的一小部分问题。在这些情况下,我会问自己是否帮助解决了问题,或者只是向他们抛出了一些事实。我希望你继续贡献,但在这种情况下,我问,你有没有帮助哈坎解决他的问题?他现在有可能解决他的困境吗?您是否可以添加任何可以提供进一步帮助的分析?
    • 其实这样是不对的。我知道这是一条广播消息,我想我在帖子中明确说明了这一点。但是,广播消息的发送地址会根据配置而变化,例如子网掩码。
    猜你喜欢
    • 2014-10-20
    • 1970-01-01
    • 2013-01-09
    • 2011-03-12
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多