`
abin103
  • 浏览: 152945 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

作者:The Cable Guy

欲了解关于The Cable Guy的所有专栏的列表和更多信息,请单击此处

除了单播和广播支持,IP(第4版)还提供一种发送和接收IP多播流量的机制。IP多播流量发送到单个目标IP地址,但是由多个IP主机接收和处理,而不管这些主机在IP互联网络上所处的位置。一个主机侦听一个特定的IP多播地址,并接收发送到该IP地址的所有数据包。

对于一对多的数据传输,IP多播要比IP单播和广播更为高效。与单播不同,多播仅发送数据的一个副本。与广播不同,多播流量仅由正在侦听它的计算机进行接收和处理。

IP多播的附加元素如下:

侦听特定IP多播地址的那一组主机称为一个主机组。

主机组的成员关系是动态的,主机可以在任何时候加入或离开该组。

主机组的成员数量没有限制。

主机组可以跨越多个网段。这种配置需要IP路由器上的IP多播支持,并要求主机能够将它们对接收多播流量的意愿注册到该路由器。主机注册是使用“Internet组管理协议(Internet Group Management Protocol,IGMP)”来完成的。

主机可以向不属于对应的主机组的某个IP多播地址发送流量。

IP多播地址(也称为组地址)在224.0.0.0到239.255.255.255的D类地址范围内,这是通过将前四个高序位设置为1110来定义的。在网络前缀或无类别域间路由(Classless Inter-Domain Routing,CIDR)表示法中,IP多播地址缩写为224.0.0.0/4。 从224.0.0.0到224.0.0.255 (224.0.0.0/24)范围的多播地址保留用于本地子网,而IP报头中的生存时间(Time to Live,TTL)可忽略,它们都不会被IP路由器转发。下面是保留IP多播地址的一些例子:

224.0.0.1 - 该子网上的所有主机。

224.0.0.2 - 该子网上的所有路由器。

224.0.0.5 - 开放最短路径优先(Open Shortest Path First,OSPF)算法第2版,设计用于到达某个网络上的所有OSPF路由器。

224.0.0.6 - 开放最短路径优先算法第2版,设计用于到达某个网络上的所有OSPF指定的路由器。

224.0.0.9 - 路由信息协议(Routing Information Protocol,RIP)第2版。

224.0.1.1 - 网络时间协议(Network Time Protocol)。

将IP多播映射到MAC层多播

为了支持IP多播,Internet权威机构把01-00-5E-00-00-00到01-00-5E-7F-FF-FF范围的多播地址保留用于以太网和光纤分布式数据接口(Fiber Distributed Data Interface,FDDI)媒体访问控制(MAC)地址。为了将一个IP多播地址映射到一个MAC层多播地址,IP多播地址的23个低序位被直接映射到MAC层多播地址23个低序位。根据D类地址约定,IP多播地址的前4位是固定的,IP多播地址中有5位没有映射到MAC层多播地址。 因此,某个主机可以接收不是它所属的组的MAC层多播数据包。 然而,一旦确定了目标IP地址,这些数据包就会被IP丢弃。

例如,多播地址224.192.16.1将变成01-00-5E-40-10-01。为了使用那23个低序位,第一个八位组将不会被使用,第二个八位组中仅有最后7位被使用。第三个和第四个八位组将直接转换为十六进制数字。对于第二个八位组,192的二进制表示11000000。如果丢弃高序位,它将变成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将用于通过令牌环网发送的所有IP多播流量。 有关令牌环网对IP多播的支持的更多信息,请参见RFC 1469。

支持IP多播的Intranet

在支持IP多播的intranet(企业内联网)中,任何主机都能够向任何组地址发送IP多播流量,并且任何主机都能够接收来自任何组地址的IP多播流量,而它们的位置可忽略。为了促进这个功能,intranet的主机和路由器都必须支持IP多播。

主机的IP多播支持

为了使主机能够发送IP多播包,它必须:

确定要使用的IP多播地址。

该IP多播地址可由应用程序硬编码,或者通过一种分配唯一多播地址的机制来获得。

将IP多播数据包放到媒体上。

发送主机必须构造一个包含预期目标IP多播地址的IP数据包,并将它放到媒介上。对于诸如以太网、FDDI和令牌环网这样的共享访问技术,目标MAC地址是根据先前描述的IP多播地址来创建的。

为了使主机能够接收IP多播数据包,其必须:

通知IP接收多播流量。

为了确定要使用的IP多播地址,应用程序必须首先确定是创建一个新的主机组,还是使用某个现有的主机组。为了加入某个现有的组,应用程序可以使用硬编码的多播地址,或使用从某个统一资源定位符(URL)派生而来的地址。

在确定组地址之后,应用程序必须通知IP在某个指定的目标IP多播地址接收多播流量。例如,应用程序可以使用Windows Socket(Windows套接字)函数来通知IP关于所加入的多播组的情况。如果多个应用程序使用相同的IP地址,那么IP必须向每个应用程序传递多播数据包的一个副本。当应用程序加入或离开某个主机组时,IP必须跟踪哪个应用程序在使用哪个多播地址。此外,对于多宿主主机,IP必须跟踪每个子网的主机组的应用程序成员关系。

将多播MAC地址注册到网络适配器。

如果所使用的网络技术支持基于硬件的多播,那么网络适配器会被告知将数据包传递给特定的多播地址。对于诸如以太网、FDDI和令牌环网这样的共享访问技术,Windows 2000 NdisRequest函数可用于通知网络适配器响应对应于某个IP多播地址的多播MAC地址。

通知本地路由器。

主机必须通知本地子网路由器关于它正在侦听某个特定组地址的多播流量的情况。注册主机组信息的协议是“Internet组管理协议”。目前使用的IGMP有两个版本:IGMP第1版(IGMP v1)和IGMP第2版(IGMP v2)。Windows 2000和Windows XP TCP/IP支持IGMP v2。主机通过发送“IGMP主机成员关系报告”消息,在某个特定的主机组中注册成员关系。

路由器的IP多播支持

为了仅向那些存在组成员的子网转发IP包,IP多播路由器必须能够:

接收所有IP多播流量。

转发IP多播流量。

接收和处理“IGMP主机成员关系报告”消息。

查询连接的子网以了解主机成员关系状态。

将组成员关系传达给其他IP多播路由器。

接收所有IP多播流量

对于共享访问技术,比如以太网和FDDI,通常的网络适配器侦听模式是单播侦听模式。侦听模式是网络适配器分析传入帧的目标MAC地址,以决定是否进一步处理它们的方式。在单播侦听模式下,唯一被认为需要进一步处理的帧在网络适配上的一个感兴趣的目标MAC地址表中。通常,唯一感兴趣的地址是适配器的广播地址(0xFF-FF-FF-FF-FF-FF)和单播地址,也称为MAC地址。

然而,为了使IP多播路由器能够接收所有IP多播流量,它必须将网络适配器置于一种称为混杂模式(promiscuous mode)的特殊侦听模式。多播混杂模式分析电子和电气工程师协会(IEEE)定义的Individual/Group(单独的/组,I/G)位,以确定该帧是否需要进一步的处理。以太网和FDDI地址的I/G位是目标MAC地址的第一个字节的最后一位。

I/G位的值如下:

如果设置为0,那么该地址为单播(或单独的)地址。

如果设置为1,那么该地址为多播(或组)地址。广播地址也会设置多播位。

当把网络适配器置于多播混杂侦听模式时,多播位设置为1的所有帧都会上传以作进一步的处理。

多播混杂模式不同于混杂模式。在混杂模式下,所有帧(不管目标MAC地址如何)都会上传以作进一步的处理。混杂模式由协议分析器(也称为网络探测器)应用,比如作为Microsoft Systems Management Server组成部分的完整版本的Microsoft Network Monitor(Microsoft网络监视器)。主机的网络适配器通常不会置于多播混杂模式。

转发IP多播流量

转发IP多播数据包的能力是TCP/IP协议的一个功能,Windows 2000所采用的TCP/IP包括了这个功能。当启用多播转发(通过“路由和远程访问”服务)时,非本地子网IP多播数据包将接受分析以确定该数据包是通过哪个接口转发的。分析是通过将源地址和目标组地址与IP多播转发表中的条目作比较来完成的。当接收到一个非本地IP多播数据包时,IP报头中的生存时间(TTL)将减去1。如果TTL在减去1之后仍大于0,则检查多播转发表。如果在多播转发表中找到一个与目标IP多播地址匹配的条目,该IP多播包将使用新的TTL通过适当的接口转发。

多播转发过程不区分本地连接的子网上正在接收多播流量的主机,或者跨越该子网上另一个路由器的本地连接的子网下游网段上的主机。换句话说,多播路由器可以转发其上没有主机在侦听的子网上的多播数据包。这样的多播数据包被转发是因为,该子网上的另一个路由器指出了在它的方向上有一个主机正在接收多播流量。

多播转发表没有记录每个主机组成员或主机组成员的数量;这只是因为一个特定的主地址至少有一个主机组成员。

接收和处理“IGMP主机成员关系报告”消息

多播路由器从所有本地连接的子网上的所有主机接收“IGMP主机成员关系报告”消息。这个信息用于跟踪主机组成员关系,也就是在多播转发表中放入条目。由于所有多播路由器都在以多播混杂模式侦听,它们将接收发送到任何组地址的“IGMP主机成员关系报告”消息。

为了改进离开延迟(某个子网上的最后一台主机离开该组和再没有多播流量被转发到该子网间的时间),可能是某个子网上的某个组的最后一个成员的主机将发送一条“IGMP离开组”消息。在通过“IGMP离开组”消息向该组发送特定于多播地址的IGMP查询之后,路由器就能够确定该子网上不再有组成员。

查询连接的子网以了解主机成员关系状态

在某个特定的子网上,可能存在IGMP v1和IGMP v2主机的混合。当IGMP v1主机停止接收某个特定组地址的IP多播流量(即这个主机离开该组)时,它不会发送“IGMP离开组”消息来通知本地路由器。结果,这个主机可能离开该组;如果它是这个子网的最后一个成员,那么本地路由器将继续向该子网转发这个组的多播流量。

为弥补IGMP v1主机报告功能的缺乏并避免可能丢失“IGMP主机成员关系报告和离开组”消息,多播路由器定期地向本地子网发送“IGMP主机成员关系”查询,以获得主机成员关系信息。仍然是某个多播组成员的主机将使用一条“IGMP主机成员关系报告”消息来响应该查询。为了防止某个特定子网上的多个主机发送相同组的“IGMP主机成员关系报告”消息,主机使用一个随机响应定时器来推迟“IGMP主机成员关系报告”消息的传输。如果这条消息是该子网上的另一个主机在响应定时器过期之前发送的,则不会发送消息。

对于Windows 2000 Server“路由和远程访问服务”,接收和处理“IGMP主机成员关系报告”消息以及查询连接的子网以获得主机成员关系状态的能力,是通过添加路由协议组件并在一个接口上启用IGMP路由器模式来提供的。

将组成员关系传达给其他IP多播路由器

为了创建支持多播的包含多个路由器的IP互联网络,多播路由器必须相互传达组成员关系信息,以便组成员能够接收IP多播流量,而可以忽略它们在该IP互联网络上的位置。

多播路由器使用某种多播路由协议交换主机成员关系信息,比如距离矢量多播路由协议(Distance Vector Multicast Routing Protocol,DVMRP)、多播开放最短路径优先(MOSPF)或者协议无关多播(PIM)。组成员关系信息要么显性地传递,即交换组地址和子网信息;要么隐性地传递,即通知上游路由器关于多播流量来源的下游是否存在组成员的情况。

多播路由协议的目标包括如下:

从源转发出流量以防止循环。

最小化或消除发送到不需要该流量的子网的多播流量。

最小化路由器上的CPU和内存负载以实现可伸缩性。

最小化路由协议的开销。

最小化加入延时,即某个子网上的第一个主机成员开始接收组流量所花的时间。

多播路由要比单播路由更加复杂。对于单播路由,单播流量被转发到一个全局唯一的目的地。单播路线总结了全局唯一目的地的范围。网络中的单播路线是相当稳定的,仅在IP互联网络的拓扑结构发生变化时才需要更新。

对于多播路由,多播流量被转发到某个不明确的组目的地。组地址表示单独的组,并且一般不能在多播转发表中总结出来。组成员的位置是不稳定的,每当一个主机成员加入或离开某个主机组,多播路由器的多播转发表就可能需要更新。

正如单播路由协议更新单播IP路由表一样,多播路由协议将更新IP多播转发表。 Windows 2000 Server“路由和远程访问”服务没有包括任何多播路由协议,尽管它提供了一个可以运行第三方协议的平台。 Windows 2000 Server所提供的能够更新多播转发表中的条目的唯一组件是IGMP路由协议组件。

更多信息

关于Windows 2000中的IP多播支持的更多信息,请参考以下资源:

Windows 2000 Server文档(网络\路由和远程访问\路由)

“IP多播支持”章节

PIM-SM Multicast Routing Protocol(PIM-SM多播路由协议)白皮书

Microsoft产品支持服务知识库

如对专栏的内容有任何疑问或欲提供反馈信息,请致信Microsoft TechNet

分享到:
评论

相关推荐

    IP多播网络的设计与部署 第1卷

    #### 一、IP多播技术概述 - **定义**:IP多播是一种允许一个或多个发送者(多播源)将数据包发送到多个接收者(多播组成员)的技术。这种技术不仅提高了网络效率,还能够有效地利用带宽资源。 - **应用场景**:视频...

    IP组播-组播概述.pdf

    一、组播概述 组播(Multicast)是一种网络通信方式,它能够将数据从一个源点发送到多个目的地。组播技术的出现是为了解决单点发送、多点接收的问题,提高网络传输效率,降低网络负载。与单播(Unicast)和广播...

    IP组播概述及IGMP讲义.pdf

    IP组播是一种网络通信技术,特别适用于“一对多”数据传输场景,比如多媒体直播、在线培训和金融应用等。在单播模式下,如果多个接收者需要同样的数据,服务器必须发送相同数据的多个副本,这可能导致服务器资源和...

    tcp ip 多播组播

    #### 一、组播技术概述 组播(Multicast)是一种网络技术,用于在发送方与多个接收方之间建立点到多点的网络连接。这种技术允许发送方将同一份数据包发送给多个接收方,而无需为每个接收方单独复制数据包。组播技术...

    IP组播-组播概述-D.docx

    #### 组播概述 组播技术是一种重要的网络通信方式,它与单播(Unicast)和广播(Broadcast)并列,主要用于解决单点发送、多点接收的问题。组播能够有效地节约网络带宽,降低网络负载,支持高效的点到多点数据传送...

    IP多播网络的设计和部署

    ### IP多播网络的设计与部署 #### 一、组播技术概述 组播技术作为一种高效的数据传输方式,在网络通信领域有着广泛的应用。它允许数据包从一个或多个源节点发送到一组目标节点,这一特性使其在视频会议、在线教育...

    有关IP组播技术的学术论文(8篇)

    IP组播技术是一种高效的数据传输方式,尤其在广播或向多个接收者同时发送相同信息时,它能显著节省网络带宽资源。以下是对压缩包中论文主题的详细解读: 1. **MPLS环境下组播路由研究**:多协议标签交换(MPLS)与...

    IP组播网络设计开发(第1卷)中文.pdf

    组播技术概述 - **定义**:组播是一种数据传输技术,允许一个或多个发送者(组播源)将数据发送到多个接收者(组播组成员)。它通过高效的路由机制减少了网络带宽的消耗。 - **应用场景**:视频会议、在线教育、流...

    tcp/ip 协议基础概述

    TCP/IP协议基础概述 TCP/IP协议是互联网通信的基础,它定义了网络中数据传输的一系列标准和规则。这个协议族包括多个层次,每个层次负责不同的功能,共同保证了数据的有效传输。网络层是TCP/IP协议栈中的第三层,...

    IP组播技术的java实现

    #### 二、IP组播技术概述 IP组播技术允许一台或多台主机(组播源)发送单一数据包到多台主机(同时的一次性)。这是一种点对多点的通信方式,特别适用于需要将一个节点的数据传送给多个节点的场景,例如多媒体广播。...

    CCIE复习:IP组播.pdf

    #### 一、IP组播概述 **IP组播**是一种在IP网络中高效地将数据包发送给多个接收者的通信方式。相较于传统的单播技术,组播能够显著减少网络中的数据传输量,减轻服务器及中间设备的负载,同时提高网络效率和性能。 ...

    P2P与组播结合实现高质量IP视频直播承载

    【P2P与组播结合实现高质量IP视频直播承载】技术概述 IP视频直播作为一种流行的媒体传播方式,尤其在IPTV、实时广播和远程会议等领域,对带宽、低丢包率、低延迟和稳定性有着高要求。高质量IP视频直播通常需要1.5 M...

    基于MPEG-4和IP组播技术的图像监控系统

    IP组播利用组播路由器进行数据包的复制和分发,数据包沿着“组播树”从一个发送端传送到多个接收端,这种方法比在端系统进行复制和分发效率更高。 #### 四、系统工作原理 本图像监控系统的工作原理如下: 1. **远...

    IP组播PIM协议原理

    ### IP组播PIM协议原理 #### 一、组播概念简介 组播是一种网络通信方式,用于将信息从一个源点发送到多个目的地。与单播(一对一)和广播(一对所有)不同,组播可以高效地利用网络资源,减少冗余数据传输。在组播...

    IP组播-组播配置举例.pdf

    组播(Multicast)是一种网络通信技术,允许多个发送方向多个接收方发送数据包,这可以大大减少网络带宽的占用和提高网络的效率。组播技术广泛应用于视频会议、在线教育、股票行情等领域。 二、组播协议 1. IGMP...

    组播概述-组播IPTV应用

    组播组是一个由IP组播地址标识的接收者集合,主机加入组播组成为成员,即可接收发往该组的数据。组播源无需加入组播组,可以同时向多个组播组发送数据。组播组成员动态变化,可分布于网络任意位置,由组播路由器进行...

Global site tag (gtag.js) - Google Analytics