网络层 — — IP多播技术
《》IP多播技术也叫做IP组播技术,具体的内容见《计算机网络——谢希仁》,下面只是介绍一下IP多播的一些原理、概念和特点
《》IP多播技术实际上是由运输层的UDP协议应用程序来使用的技术,因此它是一种无连接的、无差错校验的、不可靠的协议
《》IP多播的实现需要有三方面的支持:
①多播组:一个多播组由一个D类IP地址唯一标识,称为多播IP地址;主机可以任意的动态的加入一个多播组或者撤出一个多播组
多播组只能够用于目的地址,不能够用于源地址,也就是说,发送的多播数据中是不携带源主机的任何位置信息的,所以
多播数据报不会有差错校验或者重传。因此,若在Ping命令后面键入多播地址,将永远不会有回应
D类地址中并不是所有的地址都能够在应用程序中使用,一些地址已经被指派为他用了,下面是可用的D类地址:
224.0.1.0 到 238.255.255.255 为全球范围内可使用的多播地址
239.0.0.0 到 239.255.255.255 限制在一个组织的范围内使用
②IP多播需要能够在广域网上多播:这就需要能够识别多播数据的多播路由器,实际中,多播主干网已经有相当大的规模了,支持多播
③IP多播需要能够在局域网上多播:这就需要局域网能够进行多播,实际中,通过硬件多播实现
④IP多播具体的实现由ICMP和多播路由选择协议来规定,下面我们就来说一下,IP多播的实现原理:
1、当一个主机动态的加入一个多播组之后,那么这个主机就要向所在的局域网的多播路由器(记为R1)发出信息,告诉路由器自己加入了某个多播组这个路由器收到这个信息之后,就会向其他的路由器发送这个消息(至于需要让多大范围内的路由器知道,使用这种多播技术应用程序是可以设定的,比如:java中UDP的相关方法,就可以限定本应用程序使用的多播技术的覆盖范围:地区、州、世界范围等等),这样的话,在一定范围内的所有的路由器就都会知道:如果自己收到含有这个多播组IP的数据的话,那么就要向R1发送;注意,实际上,这些路由器包括R1都不知道这台主 机的IP地址,只是知道R1连接的局域网中有主机加入了某个多播组,至于具体有几台主机加入了,这些主机的IP地址实际是多少路由器是没有必要知道的,因为路由器只要知道R1连接的局域网中有主机加入了某个多播组,将数据传递给R1,那么R1就会将多播数据发送到局域网中,在局域网中就会通过硬件多播将数据发送到各主机,这些主机收到数据时,会自动的检查,是不是发送给自己的,那么整个过程就结束了
2、由于主机可以随时从某个多播组中退出,那么,那些多播路由器就要及时的知道这个信息,协议中是这样实现的:路由器会定期向局域网中的发送一种验证信息,这个验证信息是询问某个多播组中知否还有主机没有撤出,注意发送的验证信息并不是以主机为单位,而是以多播组为单位,也就是说如果路由器想验证对于某个多播组IP来说 ,当前的局域网中是否还有主机在这个组中,一旦有任何一台主机发出回应的话,就代表这个多播组在当前的局域网中依然存在,那么一旦有这个多播组的数据传来,路由器就会发送到这个局域网中,但是如果没有任何主机响应这个询问的话,那么就说明,当前局域网中不再使用这个多播组了,那么当路由器再收到这个多播组的数据报时,就不在向这个局域网中发送了;同样,这的协议还是说明:路由器并不需要知道某台具体的主机的多播情况,只需要知道自己是否应该向这个局域网中发送数据就行,一旦发送到局域网中,就有硬件多播来实现接下的工作
3、需要注意的一个问题是,位于一个多播组中的主机当然可以想这个多播组中的所有的主机发送数据报,同时没有位于任何一个多播组中的主机也是可以向一个多播组发送数据的,只要这台主机知道这个多播组的多播IP地址就行了;而且位于不同的多播组的主机可以相互的发送多播数据,同样也是只要知道对方的多播IP即可
4、上面我们说的都是把主机做为使用多播技术的对象,实际上,准确的说应该是主机上的进程或者应用程序,因为正是这些程序来使用多播技术,而且一台主机上运行的不同的程序可以使用相同的或者不同的多播组IP,所以实际上,当主机接收到多播数据报的时候,还需要正确的将这些数据送给指定程序使用,这些工作都有主机自动识别和完成

浙公网安备 33010602011771号