第12章 广播和多播
所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议
本章介绍广播和多播,包括广播地址、多播地址、广播和多播的区别等。
12.1 引言
三种传输方式
三种传输方式:
-
单播(Unicast)
- 一对一
- 一个发送者,一个接收者
- 最常见
-
广播(Broadcast)
- 一对所有
- 一个发送者,所有都收到
- 同一网络内
-
多播(Multicast)
- 一对多
- 一个发送者,一组接收者
- 只有加入组的才收到
三种传输方式:单播、广播、多播。
为什么需要广播和多播
为什么需要广播和多播:
单播的问题:
- 要发给多个人
- 得发多次
- 浪费带宽
- 效率低
广播/多播的好处:
- 只发一次
- 多个人收到
- 节省带宽
- 效率高
广播和多播提高一对多的效率。
本章讨论的内容
本章讨论的内容:
- 广播
- 多播
- 广播和多播的区别
- 广播地址
- 多播地址
- 用途
本章介绍广播和多播。
12.2 广播
什么是广播
广播(Broadcast):
- 一对所有
- 发一个包,网络上所有主机都收到
- 同一广播域内
- 用广播地址
广播发给所有人。
广播地址
IP广播地址:
- 主机号全为1
- 比如192.168.1.255(C类网络的广播)
两种广播:
-
受限广播(Limited Broadcast)
- 255.255.255.255
- 本网络内广播
- 路由器不转发
-
直接广播(Directed Broadcast)
- 网络号 + 全1主机号
- 发给特定网络的所有主机
- 路由器可以转发(现在通常禁用)
两种广播地址。
链路层广播
链路层广播:
- MAC地址全F
- FF:FF:FF:FF:FF:FF
- 所有网卡都接收
- IP广播对应的链路层就是广播
链路层广播用全F的MAC。
广播的问题
广播的问题:
-
所有人都收到
- 不管想不想要
- 都要处理一下
- 浪费资源
-
不能跨路由器
- 受限广播路由器不转发
- 只能在同一网络
- 范围有限
-
广播风暴
- 大量广播包
- 网络拥塞
- 主机处理不过来
-
安全问题
- 容易被利用
- 广播攻击
广播有很多问题。
广播的用途
广播的用途:
-
地址解析
- ARP
- 不知道目标MAC,广播问
-
动态配置
- DHCP
- 启动时不知道服务器在哪,广播找
-
服务发现
- 找网络上的服务
- 广播问谁有这个服务
-
局域网内的一对多
- 小范围
- 所有人都需要的信息
广播有它的用途。
12.3 多播
什么是多播
多播(Multicast):
- 一对多
- 发给一组主机
- 只有加入这个组的才收到
- 比广播更高效
多播发给一组主机。
多播 vs 广播
多播 vs 广播:
| 对比项 | 广播 | 多播 |
|---|---|---|
| 接收者 | 所有人 | 只有加入组的 |
| 效率 | 低 | 高 |
| 范围 | 同一网络 | 可以跨网络 |
| 资源浪费 | 大 | 小 |
| 实现复杂度 | 简单 | 复杂 |
| 支持的协议 | UDP, ICMP等 | UDP, IGMP等 |
多播比广播更高效。
多播地址
IP多播地址:
- D类地址
- 224.0.0.0 - 239.255.255.255
- 前四位是1110
多播地址范围:
| 范围 | 用途 |
|---|---|
| 224.0.0.0 - 224.0.0.255 | 本地网络,链路本地,路由器不转发 |
| 224.0.1.0 - 224.0.1.255 | 互联网组,可转发 |
| 232.0.0.0 - 232.255.255.255 | 特定源多播(SSM) |
| 239.0.0.0 - 239.255.255.255 | 私有/管理范围 |
D类地址用于多播。
常见的多播地址
常见的多播地址:
| 地址 | 用途 |
|---|---|
| 224.0.0.1 | 所有主机 |
| 224.0.0.2 | 所有路由器 |
| 224.0.0.5 | OSPF路由器 |
| 224.0.0.6 | OSPF指定路由器 |
| 224.0.0.9 | RIP v2路由器 |
| 224.0.0.12 | DHCP服务器/中继 |
| 224.0.0.22 | IGMP v3 |
| 224.0.1.1 | NTP网络时间协议 |
很多协议用多播。
以太网多播地址
以太网多播地址:
- MAC地址第一位为1
- IP多播映射到以太网多播
- 映射方法:IP的后23位放到MAC的后23位
映射关系:
- 以太网多播MAC前缀:01:00:5E
- 第25位是0
- 后23位来自IP多播地址的后23位
问题:
- 32个IP多播地址映射到同一个MAC
- 可能收到不是自己组的
- 需要IP层再过滤
IP多播映射到以太网多播。
12.4 多播的工作原理
组的概念
多播组(Multicast Group):
- 一组主机
- 对某个多播地址感兴趣
- 加入这个组
- 发给这个地址的都能收到
特点:
- 可以随时加入
- 可以随时离开
- 动态变化
- 发送方不用知道有谁
多播组是动态的。
IGMP
IGMP(Internet Group Management Protocol):
- 互联网组管理协议
- 主机和路由器之间用
- 主机报告自己加入了哪个组
- 路由器知道哪些组有成员
作用:
- 管理多播组成员
- 路由器知道往哪转发多播
IGMP管理多播组成员。
多播路由
多播路由:
- 多播包怎么转发
- 多播路由协议
- 比如PIM、DVMRP等
- 构建多播分发树
为什么需要多播路由:
- 跨网络的多播
- 需要知道往哪转发
- 避免重复
多播路由协议负责跨网络的多播。
12.5 广播和多播的比较
详细比较
广播 vs 多播详细比较:
| 对比项 | 广播 | 多播 |
|---|---|---|
| 地址类型 | 主机号全1 | D类地址 |
| 接收者 | 同一网络所有主机 | 加入组的主机 |
| 范围 | 同一广播域 | 可以跨网络 |
| 效率 | 低,所有人都处理 | 高,只有需要的处理 |
| 路由器 | 不转发(受限广播) | 可以转发(有多播路由) |
| 协议支持 | UDP, ARP等 | UDP, IGMP等 |
| 实现复杂度 | 简单 | 复杂 |
| 安全性 | 差,容易广播风暴 | 好一些 |
| 典型应用 | ARP, DHCP | 视频直播, 路由协议 |
多播更高效但更复杂。
什么时候用哪个
什么时候用广播:
- 小网络
- 所有人都需要
- 简单应用
- 比如ARP、DHCP
什么时候用多播:
- 大网络
- 只有部分人需要
- 跨网络
- 比如视频直播、路由协议
根据场景选择。
12.6 TCP和广播/多播
TCP支持广播/多播吗
TCP支持广播/多播吗?
- 不支持
- TCP是面向连接的
- 点对点的
- 广播多播是一对多
- 不匹配
为什么TCP不支持:
- TCP需要确认
- 多个人确认怎么处理?
- 重传给谁?
- 太复杂
- 不现实
TCP不支持广播和多播。
UDP支持广播/多播吗
UDP支持广播/多播吗?
- 支持
- UDP无连接
- 发就行,不用管谁收
- 很适合
为什么UDP支持:
- 无连接
- 不用确认
- 简单
- 一对多很自然
UDP支持广播和多播。
12.7 小结
三种传输方式
-
单播
- 一对一
- 最常见
-
广播
- 一对所有
- 同一网络内
-
多播
- 一对多
- 只有加入组的收到
广播
-
什么是广播
- 一对所有
- 广播地址
-
广播地址
- 受限广播:255.255.255.255
- 直接广播:网络号+全1主机号
-
问题
- 所有人都收到
- 不能跨路由器
- 广播风暴
- 安全问题
-
用途
- ARP
- DHCP
- 服务发现
多播
-
什么是多播
- 一对多
- 只有加入组的收到
-
多播地址
- D类地址
- 224.0.0.0 - 239.255.255.255
- 各种范围
-
以太网多播
- MAC第一位为1
- IP映射到MAC
-
工作原理
- 多播组
- IGMP管理成员
- 多播路由
比较
-
广播 vs 多播
- 广播:简单,效率低,范围小
- 多播:复杂,效率高,范围大
-
适用场景
- 广播:小网络,所有人都需要
- 多播:大网络,部分人需要
TCP和UDP
-
TCP
- 不支持广播多播
- 面向连接,点对点
-
UDP
- 支持广播多播
- 无连接,适合一对多
关键概念
-
广播
- 一对所有
- 广播地址
- 同一网络
-
多播
- 一对多
- D类地址
- 组的概念
-
IGMP
- 组管理协议
- 主机和路由器之间
-
UDP支持
- UDP支持广播多播
- TCP不支持