IP多播
•单播:从一个主机发送数据到另一台主机
•多播:从一个主机发送数据到多台主机
•广播:从一个主机发送数据到网上的所有主机
•许多硬件技术提供向多个目的主机发送分组的机制。
•硬件广播:
–多数硬件广播都是通过指定一个广播地址来实现的(例如以太网卡指定48位全1为广播地址),硬件能识别广播地址并接收(当然也能识别本机地址)。
•硬件多播:
–一些硬件支持多播。典型的机制是保留一些地址集作为多播地址,每一组机器分配一个多播地址,每台机器能识别其所在的多播组的多播地址,这样只有在组中的机器才会接收以此多播地址为目的地址的多播分组。单播是多播的特例,即一个多播组只有一个主机。以太网用最高的8位组中的低4位来区分是单播还是多播,
–全0为单播,(00.00.00.00.00.00)16进制
–全1为多播,(01.00.00.00.00.00)16进制
•IP多播是硬件多播在网络层的抽象
•其机制也是保留一些地址集作为多播地址,一个多播地址标识一个多播组,每一台机器可以动态地加入或退出一个多播组。
•IP多播地址(D类地址)和端口号分配是一样的,也分为两类:
–由Internet授权组织分配,这种组总是存在的,即使某一时期组内没有成员。
–另一类为暂时多播组,在需要时创建,成员数为0后撤销。
•主机组:能够接收发往同一个特定多播地址的数据的所有主机集合称为一个主机组。
•一个主机组可以都是在单一物理网络中,也可以是在整个Internet范围(跨越多个物理网络)。
•
•TCP/IP定义了IP多播寻址、主机如何发送和接收多播数据报、路由器如何决定网络中的多播组成员。
•多播地址
•在IP协议中用D类地址来做多播地址,其格式为:
由于224.0.0.0保留,多播地址范围:
224.0.0.1 到 239.255.255.255
其中224.0.0.1永久性用于标识一个在一个局域网中所有参加组播的主机和路由器组成的多播组。
IP多播地址只能用于目的地址,而不能为源地址。
ICMP不能为多播报告出错消息。
•映射IP多播为以太多播:
–方式:把IP低23位映射到以太网地址的低23位,由于D类地址除去头4位固定还有28位,因此有可能有多个IP多播地址映射到同一以太网地址。不过23位的IP多播地址足够大,低23位都相同的多播地址出现的可能性极小。
•
•发送IP多播:
–IP软件允许应用程序指定一个多播地址为目的IP地址
•
•接收IP多播:
–IP软件允许应用程序申请加入或离开一个特定的多播组,并记住为每一个组成员发送一个数据报的拷贝。同时,主机还需要运行一个协议(IGMP)向路由器报告组成员的状态。
•在同一个物理网络中的多播比较简单,可以通过IP多播地址到硬件多播地址的直接映射而实现。
•而跨越多个物理网络的多播,就需要多播路由器的参与:
–为了实现跨越多个物理网络的多播,主机需要把其成员状态报告给本地多播路由器,然后本地路由器和其他多播路由器之间交换各自网络中主机的组成员状态,以实现多播路由。而其中主机把成员状态向本地多播路由器报告就需要使用网际组管理协议(Internet Group Management Protocol)。多播路由器之间交换主机的组成员状态使用距离矢量多播路由协议(Distance Vector Multicast Routing Protocol)。
•网际组管理协议(Internet Group Management Protocol)RFC1112
•IGMP类似于ICMP:
–使用IP数据报发送消息(IP报头协议字段=2)
–为IP提供服务。
•ICMP为IP(单播)提供差错信息而IGMP为IP多播传递组状态信息
•因此,和ICMP一样,一般也把IGMP作为IP的组成部分。
•
•IGMP报文有固定的报文格式和长度,没有可选数据:
•版本:目前为版本1
•类型:
–1多播路由器发出的查询报文
–2主机发出的报告报文
•检校和:和ICMP一样
•组地址:D类IP地址,
–在类型1的查询报文中该地址设为0
–在类型2的报告报文中为要参加的组地址
•IGMP报告和查询
–当一个应用进程加入某个主机组时,主机发送一个IGMP报告。
–当一个应用进程离开某个主机组时,主机不用发送IGMP报告。
–多播路由器定时发送IGMP查询来了解是否还有主机中的应用进程属于某个组。
–主机通过发送IGMP报告来响应IGMP查询。如果主机中没有任何进程在多播组中,则无需报告。
•IGMP执行
–由于IGMP是IP交付的,因而并不能保证一次报告一次就被可靠接收,下一次的报告会在一个0-10秒的随机时间间隔后发送。
–当一个主机收到路由器的查询后,并不立即响应,而是经过一个随机的时间间隔。如果同一物理网络中有多台主机中的应用进程都加入了同一组,则任何一台主机的响应其他主机都可以收到,这样其他主机就可以不用再次响应,因为路由器只关心一个组中还有没有主机,有则转发多播数据,没有则无需转发。
•距离矢量多播路由协议(Distance Vector Multicast Routing Protocol)
–DVMRP是一个实验性的协议,和RIP类似
–用于在路由器之间交换当前的多播组成员以及数据转发距离的信息。对于每一个可能的多播组,都可以形成一个路由树,一旦收到一个多播数据,就根据路由树的相应分枝进行转发。
–目前对其性能的评估还在实验中。
上期回顾
留言与评论(共有 0 条评论) |