1、广播通信基础:无线广播的本质
各位同学,咱们今天聊点最基础的——无线广播。你别看它听起来简单,但WiFi配网、广告推送这些日常功能,底层全靠它撑着。
什么叫无线广播?说白了,就是一个设备发消息,周围所有能收的设备都能收到。就像你在广场上喊一嗓子,方圆百米的人都听得见。无线广播也是这样,只不过载体换成了电磁波。
我记得刚入行那会儿,总觉得广播就是“发出去就完事了”。后来做项目踩了坑才明白——广播虽然简单,但它的行为模式和单播、组播完全不同。选错了,轻则丢包,重则整个网络瘫痪。
1.1 广播 vs 单播 vs 组播:一张表说清楚
咱们先看个对比,心里有个底:
| 通信模式 | 发送方式 | 接收方 | 典型场景 |
|---|---|---|---|
| 单播 | 一对一 | 指定设备 | 网页浏览、文件下载 |
| 组播 | 一对多(指定组) | 加入组播组的设备 | 视频会议、IPTV |
| 广播 | 一对所有 | 同一网段内所有设备 | ARP请求、DHCP发现、WiFi配网 |
你想想看,单播就像你给朋友打电话,只有他一个人能听到。组播就像你在公司群里@所有人,只有群里的人能看到。广播呢?就像你在公司广播里喊话,整栋楼的人都听得见。
这里有个关键点:广播不保证送达,也不保证顺序。它就是个“尽力而为”的机制。我在项目中遇到过好几次,有人以为广播像TCP一样可靠,结果丢包了还在那死等——嗯,这就是没搞清楚广播的本质。
1.2 WiFi广播的典型应用场景
广播在WiFi世界里到底干嘛用?我挑两个最常见的说说。
1.2.1 智能家居配网
这是广播最经典的应用。你买了个智能灯泡,手机怎么告诉它WiFi密码?
流程大概是这样的:
- 灯泡上电,进入配网模式。它打开一个临时的AP(热点),或者直接监听广播包。
- 手机连上灯泡的热点,或者在同一局域网内,发送一个包含WiFi SSID和密码的广播包。
- 灯泡收到广播包,解析出密码,然后自己去连路由器。
为什么用广播?因为灯泡刚上电,根本不知道手机在哪。广播是唯一能让“陌生人”通信的方式。我做过一个项目,客户非要用单播去配网,结果灯泡收不到手机发来的包——因为灯泡还没加入网络,单播根本找不到目标。
1.2.2 广告推送
你走进商场,手机突然弹出一条“欢迎光临”的通知。这背后也是广播。
商场里的AP会定期发送Beacon帧,里面携带了服务集标识(SSID)和一些厂商自定义信息。手机扫描到这些Beacon帧,就能识别出商场的WiFi网络,甚至直接弹出认证页面。
这种广播叫“被动扫描”。手机不需要主动发任何包,只要听就行了。省电,而且对用户透明。
1.3 广播通信的核心逻辑图
下面这张图展示了广播通信的基本流程。我画得比较简洁,但核心逻辑都在里面了。
这张图里,发送端发了一个UDP广播包,目标IP是255.255.255.255。这个包会经过WiFi路由器,转发给同一网段内的所有设备。灯泡、插座、传感器都能收到,但它们不会回复——这就是广播的“单向性”。
核心结论:广播适合“一对多、不要求回复”的场景。WiFi配网就是典型——手机发密码,灯泡收密码,不需要灯泡说“我收到了”。如果非要确认,那就得在应用层自己加握手协议。
1.4 避坑指南:广播的几个“坑”
我做WiFi开发这么多年,广播相关的坑没少踩。挑几个典型的说说:
- 广播包被路由器拦截:有些路由器默认会丢弃广播包,尤其是跨子网的时候。我曾经在调试一个配网功能时,死活收不到广播包,最后发现是路由器开启了“广播风暴抑制”。
- 广播包大小限制:WiFi的MTU一般是1500字节,广播包不能超过这个值。如果你要发配网信息,SSID+密码+校验码,一般几十个字节就够了。但如果你往里面塞证书、固件……嗯,那就要分片了,分片后的广播包更容易丢。
- 广播包没有重传机制:丢了就是丢了。所以配网时,手机通常会连续发5~10次广播包,间隔100~200毫秒。这样就算丢了一两个,灯泡也能收到。
1.5 小结
广播通信,说白了就是“喊一嗓子,爱谁谁”。它简单、高效,但不靠谱。WiFi配网用它,是因为配网阶段设备之间没有建立连接,广播是唯一可行的方式。广告推送用它,是因为它不需要用户主动参与,省电又省心。