多播
IGMP
Internet Group Management Protocol,网际组管理协议 IGMP
IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上,等等。
IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
IGMP 已有三个版本。1989 年公布的 RFC 1112(IGMPv1);1997 年公布的 RFC 2236(IGMPv2,建议标准)对 IGMPv1 进行了更新;2002 年 10 月公布了 RFC 3376(IGMPv3,建议标准),宣布 RFC 2236(IGMPv2)是陈旧的。
多播路由选择协议
显然,仅有 IGMP 协议是不能完成多播任务的。连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传递给所有的组成员。这就需要使用多播路由选择协议。
然而多播路由选择协议要比单播路由选择协议复杂得多。
224.0.0.22
是 IGMPv3 Report 报文目的组播地址
多播转发树
多播路由选择实际上就是要找出以源主机为根节点的多播转发树。
隧道技术
如下图,网 1 和网 2 都支持多播,但路由器 R1 和 R2 之间的网络不支持多播,因而 R1 和 R2 不能按多播地址转发数据报。为此,路由器 R1 就对多播数据报进行再次封装,即再加上普通数据报首部,使之成为单一目的站发送的单播(unicast)数据报,然后通过“隧道”(tunnel)从 R1 发送到 R2。
单播数据报到达路由器 R2 后,再由路由器 R2 剥去其首部,使它恢复成原来的多播数据报,继续向多个目的站转发。
这一点和英吉利海峡隧道运送汽车的情况相似。英吉利海峡隧道不允许汽车在隧道中行驶。但是可以把汽车放置在隧道中行驶的电气火车上来通过隧道。过了隧道后,汽车又可以继续在公路上行驶。这种使用隧道技术传送数据报又叫做 IP 中的 IP(IP-in-IP)。
IGMP 工作阶段
从概念上讲,IGMP 的工作可分为两个阶段。
第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个 IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,还要利用多播路由选择协议把这种组成员关系转发给因特网上的其它多播路由器。
第二阶段:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要有一个主机对某个组相应,那么多播路由器就认为这个组是活跃的。