IGMP协议简介
什么是IGMP?
IGMP 是互联网组管理协议(Internet Group Management Protocol)的简称。它是TCP/IP协议中负责IP 组播成员管理的协议,用于IP主机与其直接相邻的组播路由器之间建立和维护组播组成员关系。
到目前为止,IGMP有三个版本:IGMPv1版本、IGMPv2版本和IGMPv3版本。三个版本在演进过程中对协议报文的处理是向前兼容的,因此尽管各个版本的协议报文格式不同,运行IGMP高版本的路由器可以识别低版本的成员信息。
IGMPv1
IGMPv1定义主机只可以加入组播组,但没有定义离开成员组的信息,路由器基于成员组的超时机制发现离线的组成员。所以v1其主要基于查询和响应机制来完成对组播组成员的管理。
当一个网段内有多台组播路由器时,由于它们都能从主机那里收到IGMP 成员关系报文,因此只需要其中一台路由器发送IGMP查询就足够了。
IGMPv2
IGMPv2在版本v1上基础上增加了主机离开成员组的信息,允许迅速向路由报告组成员离开情况,也扩展成员查询的功能,共有4种消息:
1、类型:
0x11——成员查询消息
0x12——V1的成员报告消息
0x16——V2的成员报告消息
0x17——离开组的消息
2、最长响应时间:针对成员查询,主机多久时间必须响应查询,单位为0.1s ,默认值为10 。
3、校验包的完整性
4、组地址:当常规成员查询时为0;当特定组成员查询时为特定组的IP;成员报告要报告的组播组地址。
IGMPv3
IGMPv3在兼容v1 和v2 的基础上,进一步增强了主机的控制能力,支持特定组播源、组播组功能。可以携带多个组播源和组播组信息。v3增加了针对组播源的过滤模式,使主机在加入某个组播组的同时,能够明确要求其接收或拒绝某个特定组播源的组播信息报文。另外,为了将组播源的数据顺利转发到接收者,路由器之间需要运行组播路由协议PIM来建立转发路径
IGMP工作机制
1.接收者主机向所在的共享网络报告组成员关系。
2.处于同一网段的,IGMP功能的组播路由器选出一台作为查询器(查询器在不同的版本中有不同的选举机制),查询器向该共享网段发送组成员查询消息。
3.接收者接收到该查询消息后进行响应以报告组成员关系报文。
4. 同一网段组播路由器依据接收到的响应来刷新组成员的存在信息。如果超时无响应,组播路由器则判定网段中没有该组播组的成员,从而取消该组播数据的转发。
总结:
在所有参与组播传输的接收者必须启用IGMP协议。主机可以在任意时间、任意位置、成员总数不受限制地加入或退出组播组。支持组播的路由器不需要保存所有主机成员关系,它只是通过IGMP协议了解及连接网段上是否存在某个组播组的接收者,即组成员。而各主机只需要保存自己加入了哪些组播组。