计算机网络(六)---IP多播

IP多播是需要在因特网上增加更多的智能才能提供的一种服务。

与单播相比,在一对多的通信中,多播可大大节约网络资源。当采用多播方式时,视频服务器只需要把视频分组当作多播数据报来发送,并且只需发送一次。当分组到达目的局域网时,由于局域网具有硬件多播的功能,因此不需要复制分组,在局域网上的多播组成员都能收到这个视频分组


在因特网范围的多播要靠路由器来实现,这些路由器必须增加一些能够识别多播数据报的软件。能够运行多播协议的路由器称为多播路由器(multicast router)。

为了适应交互式音频和视频信息的多播,从1992年起,在因特网上开始试验虚拟的多播主干网MBONE(Multicast Backbone On the InterNEt)。MBONE可把分组传播给地点分散但属于一个组的许多个主机。现在多播主干网已经有了相当大的规模。

在因特网上进行多播就叫做IP多播。IP多播所传送的分组需要使用多播IP地址。

问题:在因特网中每一个主机由一个IP地址。如果某个主机现在想接收某个特定多播组的分组,怎样才能使这个多播数据报传送到这个主机?

解答:这个多播数据报的目的地址一定不能写入这个主机的IP地址。因为不可能在其首部写入成千上万各主机的IP地址。在多播数据报的目的地址写入的是多播组的标识符,然后设法让加入到这个多播组的主机的IP地址与多播组的标识符关联起来。


多播组的标识符就是IP地址中的D类地址。我们用每一个D类地址标志一个多播组。这样D类地址共可标志2^28个多播组,即同一时间可以允许有超过2.6亿的多播组在因特网上运行。多播数据报是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。

多播数据报和一般的IP数据报的区别是它使用D类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用网际组管理协议IGMP。

多播地址只能用于目的地址,而不能用于源地址。此外,对多播数据报不产生ICMP差错报文。因此在PING命令后面键入多播地址,将永远不会收到响应。

D类地址中有一些已经被IANA指派为永久组地址

224.0.0.0    基地址(保留)

224.0.0.1    在本子网上的所有参加多播的主机和路由器

224.0.0.2    在本子网上的所有参加多播的路由器

224.0.0.3    未指派

224.0.0.4    DVMRP路由器

。。。。

224.0.1.0 至 238.255.255.255   全球范围ie都可使用的多播地址

239.0.0.0 至 239.255.255.255   限制在一个组织的范围

IP多播可以分为两种。一种是只在本局域网上进行硬件多播,另一种则是在因特网的范围进行多播。

前一种虽然比较简单,但很重要,因为现在大部分主机都是通过局域网接入到因特网的。在因特网上进行多播的最后阶段,还是要把多播数据报在局域网上用硬件多播交付多播组的所有成员。


在局域网上进行硬件多播

因特网号码指派管理局IANA拥有的以太网地址块的高24位为00-00-5E,因此TCP/IP协议使用的以太网多播地址块的范围是从00-00-5E-00-00-00到00-00-5E-FF-FF-FF。

以太网硬件地址字段中的第一个字节的最低位为1时即为多播地址,这种多播地址数占IANA分配到的地址数的一半。

因此IANA拥有的以太网多播地址范围是从00-00-5E-00-00-00到01-00-5E-7F-FF-FF(为什么是7F,由于后24位只有23可分配,可看下图)

D类IP地址可供分配的有28位,在这28位中的前5位不能用来构成以太网硬件地址。由于多播IP地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接受的数据报丢弃。

IP多播需要两种协议:网际组管理协议IGMP和多播路由选择协议

图中标有IP地址的四个主机都参加了一个多播组。多播数据报应当传送到路由器R1、R2、R3,而不应当传送到路由器R4,因为与R4连接的局域网上没有这个多播组的成员。


问题:这些路由器如何知道多播组的成员信息?

解决方法:利用网际组管理协议IGMP(Internet Group Management Protocol)。


IGMP并非在因特网范围内对所有多播组成员进行管理的协议。

IGMP协议是让连接在本局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。


显然(IGMP不在因特网范围的运行),仅有IGMP协议是不能完成多播任务的。连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议


多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。

多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。

多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。


网际组管理协议IGMP

从概念上讲,IGMP的工作可分为两个阶段。

第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给因特网上的其他多播路由器。

第二阶段:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要有一个主机对某个组响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,多播路由器就认为本网络上的主机已经都离开了这个组,因此也就不再把这个组的成员关系转发给其他的多播路由器。


为了避免了多播控制信息给网络增加大量的开销,IGMP采用的一些具体措施如下:

1)在主机和多播路由器之间的所有通信都是使用IP多播。只要有可能,携带IGMP报文的数据报都用硬件多播来传送。因此在支持硬件多播的网络上,没有参加IP多播的主机不会收到IGMP报文。

2)多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文(虽然也允许对一个特定组发送询问报文)。默认的询问速率是每125秒发送一次(通信量并不太大)。

3)当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。因此,网络上多个多播路由器并不会引起IGMP通信量的增大。

4)在IGMP的询问报文中有一个数值N,它指明一个最长响应时间(默认值为10秒)。当收到询问时,主机在0到N之间随机选择发送响应所需要经过的时延。因此,若一个主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。

5)同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。这样就抵制了不必要的通信量。


多播路由选择协议

多播路由选择实际上就是要找出以源主机为根节点的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。

已有了多种实用的多播路由选择协议,它们在转发多播数据报时使用了以下的三种方法:

1)洪泛与剪除。这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。为了避免兜圈子,采用了叫做反向路径广播RPB(Reverse Path Broadcasting)的策略。RPB的要点是:每一个路由器在收到一个多播数据报时,先检查数据报是否从源点经最短路径传送来的。进行这种检查很容易,只要从本路由器寻找到源点的最短路径上(之所以叫做反向路径,因为在计算最短路径时是把源点当作终点)的第一个路由器是否就是刚才把多播数据报送来的路由器。若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发。如果本路由器有好几个相邻路由器都处在到源点的最短路径上(也就是说,存在几条同样长度的最短路径),那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的IP地址最小。如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就应把它和下游的树枝一起剪除。

2)隧道技术(tunneling)。隧道技术适用于多播组的位置在地理上很分散的情况。网A和网B都支持多播,但路由器R1和R2之间的网络并不支持多播,因而R1和R2不能按多播地址转发数据报。为此,路由器R1就对多播数据报进行再次封装,即再加上普通数据报首部,使之成为向单一目的站发送的单播数据报,然后通过“隧道”从R1发送到R2。单播数据报到达路由器R2后,再由路由器R2剥去其首部,使它又恢复成原来的多播数据报,继续向多个目的站转发。

 

3)基于核心的发现技术。这种方法对于多播组的大小在较大范围内变化时都适合。这种方法是对每一个多播组G指定一个核心路由器,给出它的IP单播地址。核心路由器按照前面讲过的方法创建出对应于多播组G的转发树。如果有一个路由器R1向这个核心路由器发送数据报,那么它在途中经过的每一个路由器都要检查其内容。当数据报到达参加了多播组G的路由器R2时,R2就处理这个数据报。如果R1发出的是一个多播数据报,其目的地址是G的组地址,R2就向多播组G的成员转发这个多播数据报。如果R1发出的数据报是一个请求加入多播组G的数据报,R2就把这个信息加到它的路由中,并用隧道技术向R1转发每一个多播数据报的一个副本。这样,参加到多播组G的路由器就从核心向外增多了,扩大了多播转发树的覆盖范围。


目前还没有在整个因特网范围使用的多播路由选择协议。下面是一些建议使用的多播路由选择协议。

距离向量多播路由选择协议DVMRP(Distance Vector Multicast Routing Protocol)

基于核心的转发树CBT(Core Based Tree)。这个协议使用核心路由器作为转发树的根节点。一个大的自治系统AS可划分为几个区域,每一个区域选择一个核心路由器(也叫做中心路由器center router,或汇聚点路由器rendezvous router).

开放最短通路优先的多播扩展MOSPF(Multicast extensions to OSPF)。这个协议是单播路由选择协议OSPF的扩充,使用于一个机构内。MOSPF使用多播链路状态路由选择创建出基于源点的多播转发树。

协议无关多播-稀疏方式PIM-SM(Protocol Independent Multicast-Sparse Mode)。这个协议使用和CBT同样的方法构成多播转发树。采用“协议无关”这个名词是强调:虽然在建立多播转发树时是使用单播数据报来和远程路由器联系,但这并不要求使用特定的单播路由选择协议。这个协议适用于组成员的分布非常分散的情况。

协议无关多播-密集方式PIM-DM(Protocol Independent Multicast-Dense Mode)。这个协议适用于组成员的分布非常集中的情况,例如组成员都在一个机构之内。PIM-DM不使用核心路由器,而是使用洪泛方式转发数据报。



虚拟专用网VPN和网络地址转换NAT

在许多情况下,很多主机主要还是和本机构内的其他主机进行通信。假定在一个机构内部的计算机通信也是采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址。这就是说,让这些计算机使用仅在本机构有效的IP地址(这种地址称为本地地址),而不需要向因特网的管理机构申请全球唯一的IP地址(这种地址称为全球地址)。


问题:有时机构内部的某个主机需要和因特网连接,那么这种仅在内部使用的本地地址就有可能和因特网中某个IP地址重合,这就出现地址的二义性问题。

解决方案:指明一些专用地址(private address)。这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。采用这样的专用IP地址的互连网络称为专用互联网或本地互联网或专用网。专用IP地址也叫做可重用地址(reusable address)。

2010年1月,RFC5735全面地给出了所有特殊用途的IPv4地址,但三个专用地址块的指派并无变化。

1)10.0.0.0到10.255.255.255(或记为10.0.0.0/8,它又称为24位块)

2)172.16.0.0到172.31.255.255(或记为172.16.0.0/12,它又称为20位块)

3)192.168.0.0到192.168.255.255(或记为192.168.0.0/16,它又称为16位块)


一个很大的机构有许多部门分布在相距很远的一些地点,而在每一个地点都有自己的专用网。假定这些分布在不同地点的专用网需要经常进行通信。

有两种方法:

1.租用电信公司的通信线路为本机构专用。简单方便,但线路的租金太高。

2.利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(Virtual Private Network)。

之所以称为“专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。如果专用网不同网点之间的通信必须经过公用的因特网,但又有保密的要求,那么所有通过因特网传送的数据都必须加密。一个机构要构建自己的VPN就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址。


使用IP隧道技术实现虚拟专用网。


场所A或B内部的通信量都不经过因特网。但如果A中的主机要和B中的主机通信,就必须经过路由器R1和R2。假设发送的IP数据报的源地址是10.1.0.1,而目的地址是10.2.0.3。这个数据报先作为本机构的内部数据报发送到与因特网连接的路由器R1.路由器R1收到内部数据报后,发现其目的网络必须通过因特网才能到达,就把整个的内部数据报进行加密(保证了内部数据报的安全),然后重新加上数据报的首部,封装成外部数据报发给路由器R2。

由场所A和场所B的内部网络构成的虚拟专用网VPN又称为内联网(intranet或intranet VPN,即内联网VPN)。有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网(extranet或extranet VPN,即外联网VPN)。

内联网和外联网都采用了因特网技术,即都是基于TCP/IP协议的。

远程接入VPN(remote access VPN)。在外地工作的员工通过拨号接入因特网,而驻留在员工PC中的VPN软件可以在员工的PC和公司的主机之间建立VPN隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。


网络地址转换NAT

问题:专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密),那么该怎么办?

解决方案:网络地址转换NAT(Network Address Translation)

这种方法需要在专用网连接到因特网的路由器上安装NAT软件。该路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。

当NAT路由器具有n个全球IP地址时,专用网最多可以同时有n个主机接入到因特网。通过NAT路由器的通信必须由专用网内的主机发起。当因特网上的主机要通信,但NAT路由器不知道应当把目的IP地址转换成专用网内的哪一个本地IP地址。即专用网内部的主机不能充当服务器用(对于因特网上的主机来说)。

现在常用的NAT转发表把运输层的端口号也利用上了,使多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址,因而可以同时和因特网上的不同主机进行通信。

使用端口号的NAT也叫网络地址与端口号转换NAPT(Network Address and Port)








  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值