组播与广播是什么
它们都是一台主机向多台主机发送 UDP 数据的方式。组播把数据发到一个特定组地址,只有通过 IGMP(IPv4)或 MLD(IPv6)声明加入该组的主机才收;广播把数据发到本网段的广播地址,同网段所有主机都会收到,且不能被路由器转发到其他网段。需要发现邻居、推送同一份数据的场景常走组播,广播则多用于老协议的地址发现。
基本信息
| IPv4 组播范围 | 224.0.0.0/4 |
|---|---|
| IPv6 组播范围 | ff00::/8 |
| 常见组地址 | 224.0.0.251 是 mDNS,239.255.255.250 是 SSDP |
| 广播地址 | 255.255.255.255 与子网广播地址 |
| 加入组的方式 | 应用调用 setsockopt 的 IP_ADD_MEMBERSHIP |
| 二层要求 | 交换机通常需开启 IGMP snooping 才会定向转发 |
观察与测试组播
观察与测试组播
ip maddr show # 本机加入的组地址
ss -uanp | head -20 # 看 UDP 套接字与进程
socat -u UDP4-RECV:1900,ip-add-membership=239.255.255.250:0.0.0.0 - # 加入组并接收
ip -4 route show 224.0.0.0/4 # 查组播路由(跨网段需要 PIM)三种发送方式对照
| 方式 | 目标 | 能否跨网段 |
|---|---|---|
| 单播 | 单个目标地址 | 可以,按路由转发 |
| 组播 | 组地址,需加入组 | 可以,但需组播路由协议支持 |
| 广播 | 网段广播地址 | 不可以,路由器默认不转发 |
典型使用场景
- 零配置服务发现:mDNS、SSDP 让同一网段的设备彼此发现
- 局域网音视频分发与直播:一份流量送达多台接收者,省带宽
- 集群心跳与状态同步:同网段节点用组播广播自身存活
- PXE 与老协议引导:依赖广播发现引导服务器
- 监控与遥测推送:向一组采集节点同时下发同一份数据
排查顺序建议从二层往上:先确认交换机是否开启 IGMP snooping、是否配了合适的组播 VLAN,再看三层有没有组播路由(PIM),最后才怀疑接收端代码。云环境通常不提供组播与广播能力,服务发现类协议往往无法跨子网使用,需要改用单播方案。