多播是让源主机一次发送的但个分组可以抵达用一个组地址标识的若干目的主机,即一对多的通信。在互联网上进行的多播,称为 IP 多播。多播需要路由器的支持才能实现,支持多播协议的路由器称为多播路由器。
IP 多播地址
多播数据报的源地址是源主机的 IP 地址,目的地址是 IP 多播地址。IP 多播地址就是 IPv4 中的 D 类地址。D 类地址的前四位是 1110,范围是 224.0.0.0~239.255.255.255 。每个 D 类 IP 地址标志一个多播组,一台主机可以随时加入或离开一个多播组。
多播数据报使用 D 类地址作为目的地址,首部中的协议字段值为 2,表明使用 IGMP 协议。
IP 多播的特点
- 多播数据报也是“尽最大努力交付”,不提供可靠交付
- 多播地址只能用于目的地址,而不能用于源地址
- 对多播数据报不产生 ICMP 差错报文
- 多播机制只应用于 UDP,因为 TCP 面向连接,所以只能一对一发送
在局域网上进行硬件多播
因为局域网支持硬件多播,所以只要把 IP 多播地址映射成多播 MAC 地址,即可将 IP 多播数据报封装在局域网的 MAC 帧中。
IANA 拥有的以太网多播地址的范围是 01-00-5E-00-00-00 到 01-00-5E-7E-FF-FF,也就是 01-00-5E-0xxxxxxx-XX-XX
IP 多播数据报的后 23 位直接映射成 MAC 多播地址的后 23 位。
IGMP 与多播路由协议
网际组管理协议 IGMP 用于管理本地局域网内的多播组成员。 多播路由选择协议负责把多播数据报用最小代价传送给所有组成员。
IGMP 报文被封装在 IP 数据报中传送,但它也向 IP 提供服务。因此不把 IGMP 视为一个单独的协议,而视为整个网际协议 IP 的一个组成部分。
IGMP 仅在同一个网络中有效, TTL 为 1。
IGMP 的协议字段值为 2 。
IGMP 的工作分为两个阶段
第一阶段: 当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一 IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上的其他多播路由器。
Tip
主机向多播地址发送一个 IGMP 报文来加入该多播组。
第二阶段: 组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要有一台主机对某个组响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机已经都离开了这个组,因此也就不再把这个组的成员关系转发给其他的多播路由器。