D类IP地址(224.0.0.0到239.255.255.255)不识别互联网内的单个接口,但识别接口组,被称为多播组。
单个网络上的组成员利用IGMP协议在系统之间通信。多播路由器用多播选录协议,如DVMRP(distance vector multicast
routing protocol,距离向量多播路由选择协议)传播成员信息。
在Net/3中,如果某个接口支持多播,那么在接口ifnet结构中的if_flags的标识IFF_MULTICAST比特就被打开。
RFC 1112描述了多播对主机的要求,分三个级别:
0级:主机不能发送或接受IP。
折中主机应该自动丢弃它收到的具有D类目的地址的分组。
1级:主机能发送但不能接受IP多播。
在向某个IP多播组发送数据报之前,并不要求主机加入该组。多播数据报的发送方式与单播一样,除了多播数据报的目的地址
是IP多播组之外。网络驱动器必须能够识别出这个地址。
2级:主机能发送和接收IP多播
为了接收IP多播,主机必须能够加入或离开多播组,而且必须支持IGMP,能够在至少一个接口上交换组成员信息。多接口主机
必须支持在它的接口的一个子网上的多播,Net/3符合2级主机要求。可以完成多播路由器的工作。
和UDP、TCP的端口号一样,互联网授权机构IANA(Internet Assigned Numbers Authority)维护着一个注册的IP多播组表。下图
只给出了一些知名的多播组。
全256个组(224.0.0.0到224.0.0.255)是为实现IP单播和多播选路机制的协议预留的。不管发给其中任意一个组的数据报内IP
首部的TTL值如何变化,多播路由器都不会把它转发出本地网络。
对于符合2级的系统,要求其在系统初始化时,在所有的多播接口上加入224.0.0.1组,并且保持该组成员,直到系统关闭。
单播和多播路由可能会加入224.0.0.2组进行互相通信。ICMP路由器请求报文和路由器通告可能会被分别发往224.0.0.2(所有
路由器)和224.0.0.1(所有主机),而不是受限的广播地址(255.255.255.255).
224.0.0.4组支持在实现DVMRP的多播路由器之间的通信。
1.以太网多播地址
IP多播的高效实现要求IP充分利用硬件级多播,因为没有硬件级多播,就不得不在网络上广播每个多播IP数据报,而每台主机
也不得不检查每个数据报,把哪些不是给它的丢掉。硬件在数据报到达IP层之前,就把没有用的过滤掉了。
为了保证硬件过滤器能正常工作,网络接口必须把IP多播目的地址转换成网络硬件识别的链路级多播地址。在以太网,需要有
一个明确地完成映射地址的函数,以太网的标准映射适用于任何使用802.3寻址方式的网络。
因为以太网支持多种协议,所以要采取措施分配多播地址,避免冲突。IEEE管理以太网多播地址分配。IEEE把一块以太网多播
地址分给IANA以支持IP多播。块的地址都是以01:00:5e开头。以00:00:5e开头的以太网单播也被分配给IANA,但为将来
使用预留。下图显示了从一个D类IP地址构造出一个以太网多播地址。