组网基础之深入解析二层组播
二层组播相关协议包括IGMP 和GMRP协议。让我们从分析组播MAC地址开始,逐步而深入的了解二层组播。 组播MAC地址 所谓组播MAC地址,是一类逻辑的MAC地址,该MAC地址代表一个组播组,所有属于该组的成员都接收以该组对应的组播MAC地址为目的地址的数据帧。 注意的是,组播MAC地址是一个逻辑的MAC地址,也就是说,在网络上,没有一个设备的MAC地址是一个组播MAC地址。组播MAC地址跟单播MAC地址(物理MAC地址)的区别是,组播MAC地址六个字节中,最高字节(第六字节)的最低位为1,而单播MAC地址则为0,如下图所示: 为了更进一步了解组播的概念,我们先从MAC层的数据帧接收过程说起。 MAC层数据帧的接收 在网卡的内部保留一张接收地址列表(可以理解为一个可读写的随机存储器),其中至少有两个MAC地址,即网卡的物理MAC地址和全1的广播MAC地址。每当计算机想接收一个组播数据,也就是说要加入一个组播组,那么上层软件会给网络层一个通知,网络层做完自己的处理后,也会发一个通知给数据链路层,于是,数据链路层根据网络层想加入的组播组的组地址(一般是一个组播的IP地址),根据一定的规则映射为一个组播的MAC地址,然后把该MAC地址加入接收地址列表。 每当数据链路层接收到一个数据帧的时候,就提取该数据帧的帧头,找出目的MAC地址,跟接收地址列表中的地址项目比较,如果在列表中遇到一个地址,跟该数据帧的目的MAC地址是相同的,就停止比较,接收该数据帧,并把该数据帧放到上层协议对应的接收队列中;如果在整个接收列表中没有找到一个匹配的MAC地址,则丢弃该数据帧。 现假设接收到的数据帧是发给自己的单播数据帧,于是该数据帧的目的MAC地址就是自己的硬件地址。数据链路层接收到该数据帧,跟接收列表中的地址比较,第一次比较就会通过,因为接收地址列表中的第一个MAC地址就是自己的硬件地址。所以在任何情况下,发给自己的数据帧一定能接收下来; 假设接收到的数据帧是一个广播数据帧,则在比较的时候,最后一项是匹配的,因为接收地址列表中肯定包含一个广播的MAC地址,这样就保证了任何广播数据报都会被正确接收; 假设上层软件想接收组播组G的数据,经过一番映射到数据链路层之后,数据链路层会在自己的接收数据列表中添加一项组播组G对应的MAC地址,假设为MAC_G,当计算机接收到一个数据帧,该数据帧的目的地址为MAC_G的时候,该数据帧会被接收并传递到上层,因为接收列表中有一项MAC_G记录。 组播转发表 在前面交换机的转发方式一节中讲到,交换机在转发组播数据包的时候,也是根据一个转发表来进行的,但跟单播转发表不同的是,该组播转发表对应的出口不是一个元素/端口,而是一组元素/端口,即一个出口列表。在转发数据的时候,交换机根据组播数据帧的目的组播地址查找组播转发表,如果在组播转发表中查不到相应的转发项,则把该组播数据帧当做广播数据帧处理,向所有端口上转发该数据帧(如果实现了VLAN,则仅仅向接收端口所属同一个VLAN的端口上转发);如果能查找到一个结果,则结果肯定是一个接口列表,于是,交换机把这个组播数据报复制成许多份,每份提交到一个出接口,从而完成数据的交换。 需要注意的是,这个组播转发项不像单播那样,是通过学习的方式获得的(在处理单播数据的时候,交换机每转发一个数据帧,会进行相应的学习过程,学习到一个单播转发项),而是通过一些二层的组播协议获得的,这些流行的组播协议有IGMP(Internet Group Management Protocol, 因特网组管理协议),GMRP(GARP Multicast Register Protocol,GARP组播注册协议,GARP- General Attribute Registration Protocol)等。下面部分详细解释每一种二层组播协议。 二层组播协议 上面我们提到,用于转发组播数据帧的组播 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |