大家好,之前有小伙伴问我,如果组播组没有组成员,组播源会发送数据吗?所以,今天给大家讲讲组播的网络结构和工作原理,这个问题也就迎刃而解了。

一、组播的网络结构是怎样的?

首先,组播传输的特点是单点发送,多点接收。那么我们的组播网络的成员角色是有些,各自有什么分工和作用呢?我们简单参考下图解释:

组播组:用IP组播地址进行标识的一个集合。任何用户主机,加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。

组播源:组播信息的发送者称我们称为“组播源”。

组播组成员:所有加入某组播组的主机便成为该组播组的成员,如上图的PC1和PC3。

组播路由器:支持三层组播功能的路由器或交换机,如上图的各个路由器,提供组播路由功能,也能提供组播组成员的管理功能。

如果还是觉得抽象的话,我们再举个“栗子”,就比如我们在家打开电视机收看电视节目,电视台就相当于组播源,会有不同的影视节目(组播包)源源不断的进行发送,经过中间的广电设备(组播路由器)进行流量传送,而我们全国各地的观众则可以通过家里的电视机(组播组成员),加入到对应的频道,来接收同一个电视节目。

二、如果组播组没有组成员,组播源会发送数据吗?

在想知道这个问题之前,需要先简单了解下组播协议的工作原理。首先IP网络中常用的组播协议有IGMP(互联网组管理协议)和PIM(协议无关组播),我们先简单介绍下两个协议的作用。

1、IGMP协议

部署位置:组播路由器与用户主机之间,路由器配置在与主机相连的接口上;

作用:如果是在主机侧:用于实现组成员动态的加入与离开;如果是在路由器侧:实现了组成员关系的管理与维护,与上层组播路由协议实现信息交互。

2、PIM协议

类型:PIM-DM和PIM-SM模式;

部署位置:所有组播路由器上,配置在所有接口上;

作用:用于实现组播路由与转发,并可以动态的响应网络拓扑变化,维护组播路由表;

在组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组,通过IGMP就实现加组和离组,好比我们可以在任何时候选择打开电视机,收看某一个台的节目,也可以选择在任意一个时刻点切换节目,甚至关闭电视机,组播组成员可以广泛地分布在网络中的任何地方。

PIM协议就会在组播网络中负责组播路由与转发,并可以动态的响应网络拓扑变化,维护组播路由表;那么当组播成员离组的时候,组播网络是怎样进行动态响应的呢?这个需要看是IGMPv1/v2/v3的哪个版本了,我下面以V2作为代表简单解释下:在IGMPv2中当组成员需要离组的时候,会以组播的方式向组播网络中的所有路由器发送离组报文,告诉所有人:我要离开了!这个时候组播组内会有一个类似于队长的角色(查询器),向这个组播组中发送一个查询报文:这个组里面还有人吗?一秒钟发送一次,连发两次,如果有人响应,比如下图:PC3说,我还在呢!则组播路由器继续维护这个组播路由表,仍然向改组发送组播流量!

但是如果组播组里面所有成员都离开了,组播组中没有任何成员了,查询器在尽心询问的时候:这个组里面还有人吗?此时,肯定就不会收到任何回应,那么组播路由器就不会再维护组播路由表了,没有对应的组播路由,当然我们这个组播网络中就不会有组播流量的出现。

PS:由于组播这部分的技术细节是比较多的,本次回答只是针对该问题做了非常简单的呈现,如果有问题,欢迎关注个人首页后续相关专题技术分享吧。