第12章 广播和多播

所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议

本章介绍广播和多播,包括广播地址、多播地址、广播和多播的区别等。


12.1 引言

三种传输方式

三种传输方式:

  1. 单播(Unicast)

    • 一对一
    • 一个发送者,一个接收者
    • 最常见
  2. 广播(Broadcast)

    • 一对所有
    • 一个发送者,所有都收到
    • 同一网络内
  3. 多播(Multicast)

    • 一对多
    • 一个发送者,一组接收者
    • 只有加入组的才收到

三种传输方式:单播、广播、多播。


为什么需要广播和多播

为什么需要广播和多播:

单播的问题:

  • 要发给多个人
  • 得发多次
  • 浪费带宽
  • 效率低

广播/多播的好处:

  • 只发一次
  • 多个人收到
  • 节省带宽
  • 效率高

广播和多播提高一对多的效率。


本章讨论的内容

本章讨论的内容:

  • 广播
  • 多播
  • 广播和多播的区别
  • 广播地址
  • 多播地址
  • 用途

本章介绍广播和多播。


12.2 广播

什么是广播

广播(Broadcast):

  • 一对所有
  • 发一个包,网络上所有主机都收到
  • 同一广播域内
  • 用广播地址

广播发给所有人。


广播地址

IP广播地址:

  • 主机号全为1
  • 比如192.168.1.255(C类网络的广播)

两种广播:

  1. 受限广播(Limited Broadcast)

    • 255.255.255.255
    • 本网络内广播
    • 路由器不转发
  2. 直接广播(Directed Broadcast)

    • 网络号 + 全1主机号
    • 发给特定网络的所有主机
    • 路由器可以转发(现在通常禁用)

两种广播地址。


链路层广播

链路层广播:

  • MAC地址全F
  • FF:FF:FF:FF:FF:FF
  • 所有网卡都接收
  • IP广播对应的链路层就是广播

链路层广播用全F的MAC。


广播的问题

广播的问题:

  1. 所有人都收到

    • 不管想不想要
    • 都要处理一下
    • 浪费资源
  2. 不能跨路由器

    • 受限广播路由器不转发
    • 只能在同一网络
    • 范围有限
  3. 广播风暴

    • 大量广播包
    • 网络拥塞
    • 主机处理不过来
  4. 安全问题

    • 容易被利用
    • 广播攻击

广播有很多问题。


广播的用途

广播的用途:

  1. 地址解析

    • ARP
    • 不知道目标MAC,广播问
  2. 动态配置

    • DHCP
    • 启动时不知道服务器在哪,广播找
  3. 服务发现

    • 找网络上的服务
    • 广播问谁有这个服务
  4. 局域网内的一对多

    • 小范围
    • 所有人都需要的信息

广播有它的用途。


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.5OSPF路由器
224.0.0.6OSPF指定路由器
224.0.0.9RIP v2路由器
224.0.0.12DHCP服务器/中继
224.0.0.22IGMP v3
224.0.1.1NTP网络时间协议

很多协议用多播。


以太网多播地址

以太网多播地址:

  • 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 多播详细比较:

对比项广播多播
地址类型主机号全1D类地址
接收者同一网络所有主机加入组的主机
范围同一广播域可以跨网络
效率低,所有人都处理高,只有需要的处理
路由器不转发(受限广播)可以转发(有多播路由)
协议支持UDP, ARP等UDP, IGMP等
实现复杂度简单复杂
安全性差,容易广播风暴好一些
典型应用ARP, DHCP视频直播, 路由协议

多播更高效但更复杂。


什么时候用哪个

什么时候用广播:

  • 小网络
  • 所有人都需要
  • 简单应用
  • 比如ARP、DHCP

什么时候用多播:

  • 大网络
  • 只有部分人需要
  • 跨网络
  • 比如视频直播、路由协议

根据场景选择。


12.6 TCP和广播/多播

TCP支持广播/多播吗

TCP支持广播/多播吗?

  • 不支持
  • TCP是面向连接的
  • 点对点的
  • 广播多播是一对多
  • 不匹配

为什么TCP不支持:

  • TCP需要确认
  • 多个人确认怎么处理?
  • 重传给谁?
  • 太复杂
  • 不现实

TCP不支持广播和多播。


UDP支持广播/多播吗

UDP支持广播/多播吗?

  • 支持
  • UDP无连接
  • 发就行,不用管谁收
  • 很适合

为什么UDP支持:

  • 无连接
  • 不用确认
  • 简单
  • 一对多很自然

UDP支持广播和多播。


12.7 小结

三种传输方式

  1. 单播

    • 一对一
    • 最常见
  2. 广播

    • 一对所有
    • 同一网络内
  3. 多播

    • 一对多
    • 只有加入组的收到

广播

  1. 什么是广播

    • 一对所有
    • 广播地址
  2. 广播地址

    • 受限广播:255.255.255.255
    • 直接广播:网络号+全1主机号
  3. 问题

    • 所有人都收到
    • 不能跨路由器
    • 广播风暴
    • 安全问题
  4. 用途

    • ARP
    • DHCP
    • 服务发现

多播

  1. 什么是多播

    • 一对多
    • 只有加入组的收到
  2. 多播地址

    • D类地址
    • 224.0.0.0 - 239.255.255.255
    • 各种范围
  3. 以太网多播

    • MAC第一位为1
    • IP映射到MAC
  4. 工作原理

    • 多播组
    • IGMP管理成员
    • 多播路由

比较

  1. 广播 vs 多播

    • 广播:简单,效率低,范围小
    • 多播:复杂,效率高,范围大
  2. 适用场景

    • 广播:小网络,所有人都需要
    • 多播:大网络,部分人需要

TCP和UDP

  1. TCP

    • 不支持广播多播
    • 面向连接,点对点
  2. UDP

    • 支持广播多播
    • 无连接,适合一对多

关键概念

  1. 广播

    • 一对所有
    • 广播地址
    • 同一网络
  2. 多播

    • 一对多
    • D类地址
    • 组的概念
  3. IGMP

    • 组管理协议
    • 主机和路由器之间
  4. UDP支持

    • UDP支持广播多播
    • TCP不支持

广播多播单播