不是所有数据包都只送给一个人。有的包只发给一个接收者,有的包要发给大家,有的包只发给特定的一群——网络按发送方式把它们分成三类:单播、广播、组播,代理IP链路里天天见的主要是第一种。
分清三种发送方式,很多「为什么这个请求只有我能看到」「为什么有人在局域网里喊话全网都收得到」的疑问就有了答案。
单播:点对点的专送
单播是绝大多数网络流量的形态:一个包从发送方出发,目标地址指向唯一一台设备。网页访问、文件传输、视频点播,全是单播。
单播的优点是精准:包只往目标方向走,不打扰别人,也不浪费带宽。缺点是每多一个接收者,就要多送一份——十个人看同一个视频,就得送十份。
单播也是最容易理解的一种:你想看什么,服务器单独给你发一份,你和别人互不干扰。正因为每份都独立,单播也最容易做个性化——发给你的内容和发给别人的可以完全不一样。
广播:一呼百应但止于本地
广播是一个包发给同网段里的所有设备。发送方把目标地址设成广播地址,局域网内每台设备都会收到并检查是不是给自己的。
广播不会跨路由器传播,否则全网都会被刷爆。它主要用于局域网内的发现类操作:找网关、找打印服务器、找同一网络里的设备,喊一嗓子大家都听得见。
广播还有一层自我保护:它的范围被严格限制在本地网段,路由器默认不转发广播包。否则一个办公室的广播会顺着网络传到整栋楼、整个园区,谁都别想安静上网。
| 方式 | 送给谁 | 典型用途 | 能否跨网段 |
|---|---|---|---|
| 单播 | 唯一一台设备 | 网页/文件/视频 | 能 |
| 广播 | 本网段所有设备 | 设备发现、找网关 | 不能 |
| 组播 | 订阅了的一组设备 | 直播、批量同步 | 视路由支持 |
组播:只发给想收的人
组播介于两者之间:包发给「加入了某个组」的设备。设备想收这类数据就先申请入组,不想收就不入组,发送方一份包送出去,组内所有成员都能收到。
组播适合一对多且接收者不固定的场景:网络直播、行情推送、批量软件更新。相比给每个接收者单播一份,组播省带宽;相比广播,组播不打扰无关设备。
组播的实现依赖设备维护一张「谁在听」的名单:设备加入组时登记,离开时注销。名单维护得当,组播既省带宽又精准;维护不当,组播也可能变成变相广播,白占网络资源。
三种方式在代理IP链路上各自怎么走
网页访问、接口调用这类单播流量,是代理IP链路的主要乘客,转发层处理最熟练;广播流量基本只在本地网段内部转悠,通常不会进代理链路;组播流量则要看链路支不支持,很多代理转发层并不处理组播。
对使用者来说记住一句话就够:日常业务全是单播,代理IP链路就是为单播服务的专线;遇到本地设备找不到之类的问题,先想想是不是广播没走通——那多半和代理IP无关,是本地网络的事。
单播精准、广播高效但扰民、组播折中——三种发送方式各为不同的场景而生,代理IP链路的主角永远是单播。
把三种方式分清,遇到「只有我能看到/大家都收到/一部分人收到」这类现象时,就能直接对号入座,不用瞎猜原因。
