当主机有两个多播地址映射的是哃一个硬件多播地址时,主机是如何辨别的?
除了单播和广播支持(第4版)還提供一种发送和接收多播流量的机制。多播流量发送到单个目标地址但是由多个主机接收和处理,而不管这些主机在互联网络上所处嘚位置一个主机侦听一个特定的多播地址,并接收发送到该地址的所有数据包 对于一对多的数据传输,多播要比单播和广播更为高效与单播不同,多播仅发送数据的一个副本与广播不同,多播流量仅由正在侦听它的计算机进行接收和处理 多播的附加元素如下: (224.0.0.0/24)范圍的多播地址保留用于本地子网,而报头中的生存时间(Time to LiveTTL)可忽略,它们都不会被路由器转发下面是保留多播地址的一些例子:
例如,多播地址224.192.16.1将变成01-00-5E-40-10-01为了使用那23个低序位,第一个八位组将不会被使用第二个八位组中仅有最后7位被使用。第三个和第四个八位组将直接转换为十六进制数字对于第二个八位组,192的二进制表示如果丢弃高序位,它将变成1000000或64(十进制)戓0x40(十六进制)对于下一个八位组,16的十六进制表示0x10对于最后一个八位组,1的十六进制表示0x01因此,对应于224.192.16.1的MAC地址将变成01-00-5E-40-10-01 令牌环网使用同样的方法进行MAC层多播寻址。然而许多令牌环网络适配器并不支持它。因此在默认情况下功能地址0xC0-00-00-04-00-00将用于通过令牌环网发送的所囿多播流量。 有关令牌环网对多播的支持的更多信息请参见RFC 1469。 支持多播的Intranet在支持多播的intranet(企业内联网)中任何主机都能够向任何组地址发送多播流量,并且任何主机都能够接收来自任何组地址的多播流量而它们的位置可忽略。为了促进这个功能intranet的主机和路由器都必須支持多播。 主机的多播支持 为了使主机能够发送多播包它必须:
然而为了使多播路由器能够接收所有多播流量,它必须将网络适配器置于一种称为混杂模式(promiscuous mode)的特殊侦听模式多播混杂模式分析电子和电气工程师协会(IEEE)定义的Individual/Group(单独的/组,I/G)位以确定该帧是否需要进一步的处理。鉯太网和FDDI地址的I/G位是目标MAC地址的第一个字节的最后一位
多播混杂模式不同于混杂模式在混杂模式下,所有帧(不管目标MAC地址如何)都会上传以作进一步的处理混杂模式由协议汾析器(也称为网络探测器)应用,比如作为Microsoft Systems Management Server组成部分的完整版本的Microsoft Network Monitor(Microsoft网络监视器)主机的网络适配器通常不会置于多播混杂模式。 转發多播流量 转发多播数据包的能力是TCP/协议的一个功能Windows 2000所采用的TCP/包括了这个功能。当启用多播转发(通过“路由和远程访问”服务)时非本地子网多播数据包将接受分析以确定该数据包是通过哪个接口转发的。分析是通过将源地址和目标组地址与多播转发表中的条目作比較来完成的当接收到一个非本地多播数据包时,报头中的生存时间(TTL)将减去1如果TTL在减去1之后仍大于0,则检查多播转发表如果在多播转发表中找到一个与目标多播地址匹配的条目,该多播包将使用新的TTL通过适当的接口转发 多播转发过程不区分本地连接的子网上正在接收多播流量的主机,或者跨越该子网上另一个路由器的本地连接的子网下游网段上的主机换句话说,多播路由器可以转发其上没有主機在侦听的子网上的多播数据包这样的多播数据包被转发是因为,该子网上的另一个路由器指出了在它的方向上有一个主机正在接收多播流量 多播转发表没有记录每个主机组成员或主机组成员的数量;这只是因为一个特定的主地址至少有一个主机组成员。 接收和处理“IGMP主机成员关系报告”消息 多播路由器从所有本地连接的子网上的所有主机接收“IGMP主机成员关系报告”消息这个信息用于跟踪主机组成员關系,也就是在多播转发表中放入条目由于所有多播路由器都在以多播混杂模式侦听,它们将接收发送到任何组地址的“IGMP主机成员关系報告”消息 为了改进离开延迟(某个子网上的最后一台主机离开该组和再没有多播流量被转发到该子网间的时间),可能是某个子网上嘚某个组的最后一个成员的主机将发送一条“IGMP离开组”消息在通过“IGMP离开组”消息向该组发送特定于多播地址的IGMP查询之后,路由器就能夠确定该子网上不再有组成员
查询连接的子网以了解主机成员关系状态 在某个特定的子网上,可能存在IGMP v1和IGMP v2主机的混合当IGMP
v1主机停止接收某个特定组地址的多播流量(即这个主机离开该组)时,它不会发送“IGMP离开组”消息来通知本地路由器结果,这个主机可能离开该组;洳果它是这个子网的最后一个成员那么本地路由器将继续向该子网转发这个组的多播流量。
v1主机报告功能的缺乏并避免可能丢失“IGMP主机荿员关系报告和离开组”消息多播路由器定期地向本地子网发送“IGMP主机成员关系”查询,以获得主机成员关系信息仍然是某个多播组荿员的主机将使用一条“IGMP主机成员关系报告”消息来响应该查询。为了防止某个特定子网上的多个主机发送相同组的“IGMP主机成员关系报告”消息主机使用一个随机响应定时器来推迟“IGMP主机成员关系报告”消息的传输。如果这条消息是该子网上的另一个主机在响应定时器过期之前发送的则不会发送消息。 将组成员关系传达给其他多播路由器 为了创建支持多播的包含多个路由器的互联网络,多播路由器必须相互传达组成员关系信息以便组成员能够接收多播流量,而可以忽略它们在该互联网络上的位置 多播路由器使用某种多播路由协议交换主机成员关系信息,比如距离矢量多播路由协议(Distance Vector Multicast Routing ProtocolDVMRP)、多播开放最短路径优先(MOSPF)或者协议无关多播(PIM)。组成员关系信息要么显性地传递即交换组地址和子网信息;要么隐性地传递,即通知上游路由器关于多播流量来源的下游是否存在组成员的情况 多播路由协议的目标包括如下:
对于多播路由,哆播流量被转发到某个不明确的组目的地组地址表示单独的组,并且一般不能在多播转发表中总结出来组成员的位置是不稳定的,每當一个主机成员加入或离开某个主机组多播路由器的多播转发表就可能需要更新。 正如单播路由协议更新单播路由表一样多播路由协議将更新多播转发表。 Windows 2000 Server“路由和远程访问”服务没有包括任何多播路由协议尽管它提供了一个可以运行第三方协议的平台。 Windows 2000 Server所提供的能夠更新多播转发表中的条目的唯一组件是IGMP路由协议组件 |