IP 多播
多播(也称组播)是让源主机一次发送的单个分组可以抵达用一个组地址标识的若干目的主机,即一对多的通信。在互联网上进行的多播,称为 IP 多播。
4.5 的四个小节合成一页:概念、地址、局域网上的硬件多播、IGMP 与多播路由。本页 2 道错题都在 4.5.1 与 4.5.4 的交界处:多播与多个单播差在哪里,多播靠什么避免环路。
机制
4.5.1 多播的概念
与单播相比,在一对多的通信中,多播可大大节约网络资源。假设视频服务器向 90 台主机传送同样的视频节目:
| 单播 | 多播 | |
|---|---|---|
| 服务器发送的份数 | 90 份(每台主机一份) | 1 份 |
| 分组在哪里复制 | 不复制,服务器发 90 次 | 只有在传送路径出现分岔时才将分组复制后继续转发 |
| 服务器到第一台路由器的链路上 | 90 个分组 | 1 个分组 |
多播时仅发送一份数据,并且只需发送一次,只有在传送路径出现分岔时才将分组复制后继续转发,因此大大减轻了发送者的负担和网络的负载。多播需要路由器的支持才能实现,能够运行多播协议的路由器称为多播路由器。
4.5.2 IP 多播地址
多播数据报的源地址是源主机的 IP 地址,目的地址是 IP 多播地址。IP 多播地址就是 IPv4 中的 D 类地址。D 类地址的前四位是 1110,因此 D 类地址范围是 224.0.0.0~239.255.255.255。每个 D 类 IP 地址标志一个多播组,一台主机可以随时加入或离开一个多播组。
多播数据报和一般的 IP 数据报的区别是,前者使用 D 类 IP 地址作为目的地址,并且王道写明其首部中的协议字段值是 2,表明使用 IGMP(这一说法的准确含义见下方口径差异)。需要注意的是:
- 多播数据报也是”尽最大努力交付”,不提供可靠交付。
- 多播地址只能用于目的地址,而不能用于源地址。
- 对多播数据报不产生 ICMP 差错报文(4.2.7)。
IP 多播可以分为两种:①只在本局域网上进行硬件多播;②在互联网的范围内进行多播。目前大部分主机都是通过局域网接入互联网的。因此,在互联网上进行多播的最后阶段,还是要把多播数据报在局域网上用硬件多播交付给多播组的所有成员。
多播机制仅应用于 UDP,它能将报文同时发送给多个接收者。而 TCP 是一个面向连接的协议,它意味着分别运行在两台主机的进程之间存在一条连接,因此会一对一地发送。
4.5.3 在局域网上进行硬件多播
因为局域网支持硬件多播,所以只要把 IP 多播地址映射成多播 MAC 地址,即可将 IP 多播数据报封装在局域网的 MAC 帧中,而 MAC 帧首部的目的 MAC 地址字段就设置为由 IP 多播地址映射成的多播 MAC 地址。这样,就很方便地利用硬件多播实现了局域网内的 IP 多播。
IANA 拥有的以太网多播地址的范围是从 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。在这些地址中,只有后 23 位可用作多播。但 D 类 IP 地址可供分配的有 28 位(32 位去掉前缀 1110),即这 28 位中的前 5 位无法映射到以太网多播地址,因此两者是多对一的映射关系:每
| IP 多播地址 | 十六进制 | 映射成的以太网多播地址 |
|---|---|---|
| 224.128.64.32 | E0-80-40-20 | 01-00-5E-00-40-20 |
| 224.0.64.32 | E0-00-40-20 | 01-00-5E-00-40-20 |
两个不同的 IP 多播地址映射成了同一个 MAC 地址,因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
4.5.4 IGMP 与多播路由协议
路由器要获得多播组的成员信息,需要利用网际组管理协议(Internet Group Management Protocol,IGMP)。连接到局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有组成员,这就需要使用多播路由选择协议。
IGMP 是让连接到本地局域网上的多播路由器,知道本局域网上是否有主机参加或退出了某个多播组。IGMP 并不是在互联网范围内对所有多播组成员进行管理的协议:IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员分布在哪些网络上。
IGMP 报文被封装在 IP 数据报中传送,但它也向 IP 提供服务。因此不把 IGMP 视为一个单独的协议,而视为整个网际协议 IP 的一个组成部分。IGMP 的工作可分为两个阶段:
- 加入:当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个 IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,还要利用多播路由选择协议,把这种组成员关系转发给互联网上的其他多播路由器。
- 探询:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍然是组的成员。只要对某个组有一台主机响应,多播路由器就认为这个组是活跃的;但一个组在经过几次探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都已离开了这个组,因此就不再把这个组的成员关系转发给其他的多播路由器。
多播路由选择实际上就是要找出以源主机为根节点的多播转发树,其中每个分组在每条链路上只传送一次(在多播转发树上的路由器不会收到重复的多播数据报)。不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
计算模板
IP 多播地址映射成以太网多播地址
- 前 3 字节固定为 01-00-5E。
- IP 地址的第 2 字节最高位置 0(只取低 7 位),写成十六进制。
- IP 地址的第 3、4 字节原样写成十六进制。
例:224.215.145.230。215 = 11010111,最高位置 0 得 01010111 = 0x57;145 = 0x91;230 = 0xE6。映射结果为 01-00-5E-57-91-E6(王道 4.5.5 第 3 题)。
边界
错题复盘:用多个单播仿真一个多播,带宽更多,时延也大得多
王道 4.5.5 第 1 题:下列关于多播概念的描述中,错误的是(A. 在单播路由选择中,路由器只能从它的一个接口转发收到的分组 B. 在多播路由选择中,路由器可以从它的多个接口转发收到的分组 C. 用多个单播仿真一个多播时需要更多的带宽 D. 用多个单播仿真一个多播时时延基本上是相同的)。答案 D。
多个单播可以仿真多播,但是一个多播所需的带宽要小于多个单播带宽之和(C 对);用多个单播仿真一个多播时,路由器的时延将很大,而处理一个多播分组的时延是很小的(D 错)。
以 90 台主机为例:单播时服务器要把同一份数据依次发 90 遍,最后一台主机收到的那一份,要排在前面 89 份后面才能发出;多播只发一份,在分岔处复制,各分支同时向下传。
错题复盘:多播路由靠构造多播转发树避免环路,水平分割是距离向量算法的手段
王道 4.5.5 第 2 题:在设计多播路由时,为了避免路由环路,( )(A. 采用了水平分割技术 B. 构造多播转发树 C. 采用了 IGMP D. 通过生存时间(TTL)字段)。答案 B。
因为树具有不存在环路的特性,所以构造一个多播转发树,通过该转发树既能将多播分组传送到组内的每台主机,又能避免环路。
其余三项都对应别的问题:水平分割用于避免距离-向量路由算法中的无穷计数问题(4.4.3);IGMP 用于本地多播路由器了解组成员关系;TTL 字段用于防止 IP 分组因为环路而在网络中无限循环——它只能让绕圈的分组最终被丢弃,并不能避免环路本身。
多播地址只能作目的地址。 这与 0.0.0.0 只能作源地址正好相反(王道 4.5.5 第 4 题)。
多播只用于 UDP。 TCP 是面向连接的一对一协议。
以太网多播映射是多对一的,所以主机收到后要在 IP 层过滤。 链路层按 MAC 地址收下,不代表数据报一定是发给本主机所在的多播组的。
IGMP 只管本地局域网。 互联网范围内的组成员关系靠多播路由选择协议在多播路由器之间传递。
口径差异:多播数据报的协议字段不是 2
教材口径:多播数据报首部中的协议字段值是 2,表明使用 IGMP。
标准口径:协议字段值 2 标识的是 IGMP 报文本身——主机加入组、路由器探询时发送的那些控制报文。真正传送视频等内容的多播数据报携带的是 UDP 报文段,协议字段为 17。两类数据报的目的地址都是 D 类地址。
考试若原样出现”多播数据报的协议字段为 2”,按教材口径判断。
对照速查
| 说法 | 对错 |
|---|---|
| 多播时源主机只发送一份数据,在分岔处复制 | ✅ |
| IP 多播地址是 D 类地址,224.0.0.0~239.255.255.255 | ✅ |
| 多播地址可以用作源地址 | ❌ |
| 多播数据报提供可靠交付 | ❌(尽最大努力) |
| 对多播数据报出错要发送 ICMP 差错报文 | ❌ |
| 多播可以用于 TCP | ❌(仅 UDP) |
| IP 多播地址与以太网多播地址一一对应 | ❌(32 对 1) |
| IGMP 知道一个多播组的全部成员分布在哪些网络上 | ❌ |
| 多播路由选择就是找以源主机为根的多播转发树 | ✅ |
考点
- 多播 vs 单播:一份数据、分岔处复制;多个单播仿真需要更多带宽、时延大
- D 类地址;只作目的地址;尽最大努力;不发 ICMP 差错报文;仅用于 UDP
- 以太网多播地址 01-00-5E + 低 23 位,多对一,需软件过滤
- IGMP:本地局域网的组成员关系,加入 + 探询两阶段
- 多播转发树避免环路
链接
- 🏠 返回总览:计算机网络第 4 章:网络层总览
- ⬅️ 上一节:4.4.5 边界网关协议 BGP
- ➡️ 下一节:4.6 移动 IP
- 🔗 4.2.2 分类的 IP 地址(D 类)
- 🔗 3.6.2 以太网(MAC 地址中的多播位)
- 📖 名词库:第 4 章名词库