基于 ip multicast 的 udp 实现局域网的设备发现。 一开始设备虽然加入了 组播组 239.0.0.10 ,但是收不到,PC 上发送,wireshark 也抓不到相应的包。 用 wireshark 可以看到 mdns 的包,mdns 使用 224.0.0.251 作为组播地址。 我测试了也使用 224.0.0.251 发送,设备端也可以收到了。
我继续测试 ssdp 协议使用的组地址 239.255.255.250 , 同样也可以抓到流量。
是因为 PC 对组地址做了过滤么,只允许特定组地址。
一下是关于组播地址的范围: 224.0.0.0 ~ 224.0.0.255 永久组地址。IANA 为路由协议预留的 IP 地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。 224.0.1.0 ~ 231.255.255.255 233.0.0.0 ~ 238.255.255.255 ASM 组播地址,全网范围内有效。说明: 其中,224.0.1.39 和 224.0.1.40 是保留地址,不建议使用。 232.0.0.0 ~ 232.255.255.255 缺省情况下的 SSM 组播地址,全网范围内有效。 239.0.0.0 ~ 239.255.255.255 本地管理组地址,仅在本地管理域内有效。在不同的管理域内重复使用相同的本地管理组地址不会导致冲突。
我的问题是为什么 239.0.0.10 ,224.0.0.250 ,224.0.0.252 这些地址都不行?