I P多播提供两类服务:
图1 2 - 2显示了D类I P地址的格式。
不像图1 - 5所示的其他三类I P地址(A、B和C),分配的28 bit均用作多播组号而不再表示其他。
多播组地址包括为 111 0的最高4 bit和多播组号。它们通常可表示为点分十进制数,范围从2 2 4 . 0 . 0 . 0到2 3 9 . 2 5 5 . 2 5 5 . 2 5 5。
能够接收发往一个特定多播组地址数据的主机集合称为主机组 (host group)。一个主机组可跨越多个网络。主机组中成员可随时加入或离开主机组。主机组中对主机的数量没有限制,同时不属于某一主机组的主机可以向该组发送信息。
一些多播组地址被 I A N A确定为知名地址。它们也被当作永久主机组,这和 T C P及U D P中的熟知端口相似。同样,这些知名多播地址在 R F C最新分配数字中列出。注意这些多播地址所代表的组是永久组,而它们的组成员却不是永久的。
例如,2 2 4 . 0 . 0 . 1代表“该子网内的所有系统组”,2 2 4 . 0 . 0 . 2代表“该子网内的所有路由器组”。多播地址2 2 4 . 0 . 1 . 1用作网络时间协议 N T P,2 2 4 . 0 . 0 . 9用作R I P - 2 (见1 0 . 5节),2 2 4 . 0 . 1 . 2用 作S G I公司的d o g f i g h t应用。
I A N A拥有一个以太网地址块,即高位 24 bit为0 0 : 0 0 : 5 e(十六进制表示),这意味着该地址块所拥有的地址范围从 0 0 : 0 0 : 5 e : 0 0 : 0 0 : 0 0到0 0 : 0 0 : 5 e : ff : ff : ff。I A N A将其中的一半分配为多播地址。为了指明一个多播地址,任何一个以太网地址的首字节必须是 0 1,这意味着与 I P多播相对应的以太网地址范围从 0 1 : 0 0 : 5 e : 0 0 : 0 0 : 0 0到0 1 : 0 0 : 5 e : 7 f : ff : ff。
这里对C S M A / C D或令牌网使用的是I n t e r n e t标准比特顺序,和在内存中出现的比特顺序一样。这也是大多数程序设计员和系统管理员采用的顺序。 I E E E文档采用了这种比特传输顺序。Assigned Numbers RFC给出了这些表示的差别。
这种地址分配将使以太网多播地址中的 2 3 b i t与I P多播组号对应起来,通过将多播组号中的低位2 3 b i t映射到以太网地址中的低位 2 3 b i t实现,这个过程如图1 2 - 3所示。由于多播组号中的最高 5 bit在映射过程中被忽略,因此每个以太网多播地址对应的多播组是不唯一的。 3 2 个不同的多播组号被映射为一个以太网地址。例如,多播地址2 2 4 . 1 2 8 . 6 4 . 3 2(十六进制e 0 . 8 0 . 4 0 . 2 0)和2 2 4 . 0 . 6 4 . 3 2(十六进制e 0 . 0 0 . 4 0 . 2 0)都映射为同一以太网地址0 1 : 0 0 : 5 e : 0 0 : 4 0 : 2 0。
既然地址映射是不唯一的,那么设备驱动程序或 I P层(见图1 2 - 1)就必须对数据报进行过滤。因为网卡可能接收到主机不想接收的多播数据帧。另外,如果网卡不提供足够的多播数据帧过滤功能,设备驱动程序就必须接收所有多播数据帧,然后对它们进行过滤。
局域网网卡趋向两种处理类型:一种是网卡根据对多播地址的散列值实行多播过滤,这意味仍会接收到不想接收的多播数据;另一种是网卡只接收一些固定数目的多播地址,这意味着当主机想接收超过网卡预先支持多播地址以外的多播地址时,必须将网卡设置为“多播混杂(multicast promiscuous)”模式。因此,这两种类型的网卡仍需要设备驱动程序检查收到的帧是否真是主机所需要的。
即使网卡实现了完美的多播过滤(基于48 bit的硬件地址),由于从D类I P地址到48 bit的硬件地址的映射不是一对一的,过滤过程仍是必要的。尽管存在地址映射不完美和需要硬件过滤的不足,多播仍然比广播好。
单个物理网络的多播是简单的。多播进程将目的 I P地址指明为多播地址,设备驱动程序将它转换为相应的以太网地址,然后把数据发送出去。这些接收进程必须通知它们的 I P层,它们想接收的发往给定多播地址的数据报,并且设备驱动程序必须能够接收这些多播帧。这个过程就是“加入一个多播组”(使用“接收进程”复数形式的原因在于对一确定的多播信息,在同一主机或多个主机上存在多个接收者,这也是为什么要首先使用多播的原因)。当一个主机收到多播数据报时,它必须向属于那个多播组的每个进程均传送一个复制。这和单个进程收到单播U D P数据报的U D P不同。使用多播,一个主机上可能存在多个属于同一多播组的进程。
当把多播扩展到单个物理网络以外需要通过路由器转发多播数据时,复杂性就增加了。需要有一个协议让多播路由器了解确定网络中属于确定多播组的任何一个主机。这个协议就是I n t e r n e t组管理协议(I G M P),也是下一章介绍的内容。
F D D I网络使用相同的D类I P地址到48 bit FDDI地址的映射过程[Katz 1990]。令牌环网络通常使用不同的地址映射方法,这是因为大多数令牌控制中的限制。