跳至主要內容

6.IP组播


组播的概念

  • 人们所需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收。
  • 组播一定仅应用于 UDP,它对将报文同时送往多个接收者的应用来说非常重要
  • 源主机把单个分组发送给一个组播地址,该组播地址标识一组地址,网络(如因特网)把这个分组的副本投递给该组中的每合主机。主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组。
  • 在IPv4 中,这些地址在 D 类地址空问中分配, 而Iv6 也有一部分地址空间保留给组播组。
  • 主机使用一个称为IGMP(因特网组管理协议)的协议加入组播组
  • 主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发
  • 组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器。
单播与组播的比较
单播与组播的比较

IP组播地址

  • 使用D 类地址格式。D类地址的前四位是 1110,因此D类地址范围是 224.0.0.0~ 239.255.255.255。
  • 每个D类IP地址标志一个组播组
  • 组播数据报和一般的IP数据报的区别是,前者使用D 类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用 IGMP

注意

  1. 组播数据报也是“尽最大努力交付”,不提供可靠交付。
  2. 组播地址只能用于目的地址,而不能用于源地址
  3. 对组播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入组播地址,将永远不会收到响应。
  4. 并非所有的D 类地址都可作为组播地址。

IP 组播可以分为两种:

  1. 一种只在本局域网上进行硬件组播;
  2. 另一种则在因特网的范围内进行组播。

IANA 拥有的以太网组播地址的范围是从01-00-5E-00-00-00 到01-00-5E-7F-FF-FF。不难看出, 在每个地址中,只有23 位可用作组播。这只能和D类卫地址中的23 位有一一对应关系。D类IP地址可供分配的有 28 位,可见在这28 位中,前5 位不能用来构成以太网的硬件地址

由于组播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此收到组播数据报的主机,还要在IP 层利用软件进行过滤, 把不是本主机要接收的数据报丢弃

D类IP地址与以太网组播地址的映射关系
D类IP地址与以太网组播地址的映射关系

IGMP 与组播路由算法

  • 连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作,以便把组播数据报用最小代价传送给所有组成员,这就需要使用组播路由选择协议。IGMP 并不是在因特网范围内对所有组播组成员进行管理的协议。IGMP 不知道 IP 组播组包含的成员数,也不知道这些成员分布在哪些网络上。IGMP 让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。
  • IGMP 应视为网际协议 IP 的一个组成部分,其工作可分为两个阶段:
    1. 当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个 IGMP 报文,声明自己要成为该组的成员。本地的组播路由器收到IGMP 报文后,将组成员关系转发给因特网上的其他组播路由器
    2. 因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机, 以便知道这些主机是否仍继续是组的成员。只要对某个组有一合主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一合主机响应时,则不再将该组的成员关系转发给其他的组播路由器。

组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次

在许多由路由器互连的支持硬件多点传送的网络上实现因特网组播时,主要有三种路由算法:

  1. 基于链路状态的路由选择;
  2. 基于距离-向量的路由选择;
  3. 可以建立在任何路由器协议之上,因此称为协议无关的组播(PIM)