单播、广播、组播到底有什么区别?¶
在嵌入式领域中,也会遇到关于网络方面的知识,在做网络视频、音频流、物联网通信,甚至调试路由器、交换机时,我们经常会听到三个词:
单播、广播、组播,很多人“听过、用过”,但真要问它们的区别、适用场景、为什么有的能用有的不能用,反而说不清楚。
刚好最近又接触它们几个,今天就记录下这篇文章,我们就用尽量不抽象、不拗口的方式,一次把这三个概念讲明白。
1. 单播 (Unicast)¶
单播 = 点对点通信
你给“某一个确定的设备”发数据,只有它能收到。
就像你打电话给一个人,其他人听不到。
一个源 IP → 一个目标 IP
比如,打开的网页,SSH登录服务,RTSP单路视频拉流,手机访问云端等等,都是属于单播的例子。
单播优缺点:
优点:简单直观,几乎不会被网络拦截
缺点:一对多时候效率低,如果有100个客户要看同一个视频,那么服务器需要发送100份,占用带宽。
单播很明显适合这种私聊,不适合群发。
2. 广播 (Broadcast)¶
广播 = 一喊,所有人都能听见
你发一个包,整个局域网内的所有设备都会收到,不管它们想不想要。
一个源 IP → 广播地址(如 255.255.255.255 或网段广播)
比如:
在ARP请求过程中,这是谁的IP,这种非常常见看到的一种广播;
DHCP获取IP地址,
局域网发现设备,在嵌入式设备中,常常遇到私有协议进行设备扫描发现,一般都是采用广播方式;
广播优缺点:
优点:不需要知道对方是谁,所有人都能收到
缺点:所有设备都会被受到打扰,网络规模大,可能产生广播风暴;同时无法跨路由器传播;
广播只适合短时间,小范围的网络发现
3. 组播 (Multicast)¶
为什么需要组播?
在音视频中,视频的传输场景,如果一个视频源,需要多个设备看,并且内容完全一样,如果通过单播,需要发送10路,50路等这样的数据没这样非常浪费带宽,于是有了组播去解决这个问题。
组播 = 只发一份,想要的设备自己来加入
一个源 IP → 一个“组播地址” 接收端通过协议“声明自己要接收”
组播地址:
例如:
239.1.1.1224.1.2.3
这些地址不是某一台设备,而是一个“组”。
关键问题:设备如何加入组播?
加入组播,就好比微信群聊如何我如何加入这个群聊。
交换机 / 路由器据此决定:
- 哪些端口需要转发
- 哪些端口可以丢弃
📌 没有 Join,就收不到组播数据
4. 单播,组播,广播对比¶
| 类型 | 通信关系 | 接收范围 | 是否跨网段 | 典型用途 |
|---|---|---|---|---|
| 单播 | 一对一 | 指定设备 | ✅ 可以 | Web、SSH、RTSP |
| 广播 | 一对所有 | 整个局域网 | ❌ 不行 | ARP、DHCP |
| 组播 | 一对多 | 只给加入者 | ⚠️ 需配置 | 视频流、会议、数据分发 |
在现实过程中,往往遇到单播是可以,组播却不行,关于更多组播的内容将在下一章节细讲。