组播原理详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
精心整理
组播原理
第一章?概?述
随着数据通信技术的不断发展,各项基于数据通信技术的业务层出不穷,FTP ,HTTP ,SMTP 等传统的数据通信业务已经不能满足人们对信息的需求,视频点播,远程教学,新闻发布,网络电视等新型业务也逐渐发展起来,并被引入数据通信网络。
这些新型业务的特点是,有一个服务器(我们把这个服务器称为媒体流服务器)在发布信息,而接收端数量很大,可能有成千上万个,而且具体数目不固定。在这种方式下,我们可以使用传统12312在这个时候,我们自然而然的想起了组播。这种技术最适合上面的这些新型业务。因为组播通信有下列优点:
1。媒体流服务器不必知道某个客户端的存在,它只管把媒体流以组播
地址播放出去即可,而且仅仅播放一份;
2。媒体流数据在网上仅仅传送一份即可,即使有成千上万个客户端;
3。客户端不必向媒体流服务器注册,如果想接收某个媒体流服务器的
数据,仅仅加入该媒体流服务器所播放的数据所在的多播组即可。
组播技术从提出到现在,它的一些标准和技术已经相当完善了,但推广还不是十分广泛,尤其是在我国,人们对组播的认识还处于一个朦胧的阶段,更谈不上规模应用。为了让大家尽快的了解组播技术,我们在本文中给出一些学习指引,主要有下列内容:
1。组播基础概念,这些概念是深入学习组播的最基础的东西,如果对这些基础概念不了解,学习组播将是一句空话;
2。流行组播协议,在文中我们不具体分析哪种组播协议,而给出组播协议的一些共性,并列举了目前比较流行的组播协议和它的应用场合;
3。
也可以
第二章?二层组播基础概念
在前面的介绍中,我们讨论了用多播的方式解决新型流媒体业务的好处,在该部分中,我们结合一个实际的网络给出一些多播的基础概念,掌握这些基础概念是深入掌握多播技术的前提。
2.1网络实例
有下面一个网络需求:
在图中,媒体流服务器通过以太网交换机LSWA,跟核心路由器GSRA连接起来,并启动流媒体进程,不断的以多播IP地址发送媒体流。GSRA和GSRB之间采用以太网连接起来,GSRB 通过以太网交换机LSWB连接了许多终端,其中两台终端需要媒体流服务器播放的媒体流。
2.2组播
IP地址就
IP地址
IP地址即主机
1。
2。IP模块维护一张接收列表(该列表是IP地址组成的结合),每当接收到一个数据报(链路层送上来的)后,便把数据报的目的IP地址提取出来,然后跟接收列表中的每个IP地址比较,如果有一项匹配,则接收该数据,并向上层传送,否则丢弃;
3。如果一台主机想加入一个多播组(加入与否由上层应用决定),比如你想看网络电视频道,这时候你需要启动一个应用程序,并告诉该应用程序网络电视频道的组播IP地址,该应用程序就会向IP模块注册,请求加入组播组。IP模块于是在自己维护的接收列表里添加一项(同时也告诉数据链路层自己加入了一个组播组,并附带上组播组地址),添加的这项就是组播组的组播IP地址。这样每当接收到目的地址是该组播IP地址的数据报的时候,IP模块就接收下来,并向上层传送。
4。如果一台主机想退出组播组,比如你终止了电视频道接收程序,于是该程序在退出的时候会告诉IP模块,自己不再接收组播组的数据,并告诉IP模块组播组的组拨IP地址,于是IP模块就把该组播地址从接收列表中删除,这样以后如果再接收到该组播组的数据报的话,因为接收列表里没有匹配的项目,所以IP模块就丢弃该数据报。
经过上面的分析可以看出,问题的关键在于IP模块维护的接收列表。通常情况下(主机没有加入任何组播组),该列表里只有两项,即主机自己的IP地址和广播IP地址(),这样主机只能接收针对自己的数据报和广播数据报。
细心的读者可以看出一个问题,就是数据链路层如何接收组播数据帧呢?原来,数据链路层的接收过程跟IP层原理一致,即数据链路层也有自己的接收列表(不过该列表的内容不是IP地址,而是MAC地址),每当IP模块收到上层应用的加入组播组的请求之后,IP模块就会向数据链路
地址进行
地址跟
做一个IP
MAC地
IP地址低23
开始的时候,PCB和PCC都没有接收该数据流,于是在PCB,PCC的数据链路层和网络层的接收列表中都没有针对组播地址的接收项,从而当数据链路层接收到一个数据帧,该该数据帧的目的MAC地址是01--00--5E--0A--0A--0A的时候,因为接收列表中没有该地址,所以在数据链路层就被丢弃(到这里,读者应该能体会到,组播数据在数据链路层就可以被隔离,而广播数据则必须到达网络层才能判断出是否需要丢弃,这也是使用组播而不使用广播的最大好处)。
这时候,假设PCB计算机的一个用户想收看网络电视频道了,于是该用户启动一个程序(比如,WINDOWS平台下的WMPLAYER),并告诉该程序接收组播组的数据流。于是发生下列事情:
1。该应用程序通过操作系统调用接口(API函数)告诉该PC机的IP模块,自己想接收组播组的数据(也就是说要加入组播组);
2。IP模块接收到该加入请求后,便把组播组地址加入自己的接收列表中,同时向数据链路层发送一个请求,告诉数据链路层自己想接收组对应的数据流;
3。数据链路层接收到IP模块的这个请求后,根据组播MAC地址跟组播IP地址的影射规则,把组播IP地址影射成组播MAC地址01--00--5E--0A--0A--0A,然后加入自己的接收列表,到此动作完成。
完成上述动作后,PCB就可以接收组播组的数据流了。如果这时候用户不想继续看网络电视了(比如用户关闭应用程序),则应用程序在退出的时候会通知网络层,自己退出组播组了,于是网络层会把自己的接收列表中项删除,并通知数据链路层删除相应的列表项目。
到此为止,我们对组播IP地址跟组播MAC地址做了个详细的介绍,并详细分析了各个协议
书籍。
2.3
PCA所在
在接收
则仅仅向
{目的CAM表,
MAC 地址可能是
转发项(
发组播数据流,这样PCC就不能收到无用的数据流了。
这时候假设PCC也加入了组播组,于是交换机修改自己的转发表,把转发项
(01--00--5E--0A--0A--0A,{B})修改成(01--00--5E--0A--0A--0A,{B,C})(假设PCC连接交换机的C端口),这样每当交换机从PCA接收到一个数据帧,就根据这个转发项,复制成两份,一份给PCB,一份给PCC。
大家对交换机上的组播转发项已经很清楚了,这时候又一个问题出现了:交换机根据什么创建组播转发项,并对组播转发项的出口集合做出修改?回忆单播的情况下,交换机是根据学习来获得单播转发表的,在组播情况下,学习能否奏效?