IGMP(Internet组管理协议)

协议简介

Internet组管理协议(IGMP,Internet Group Management Protocol)属于TCP/IP标准之一,组播协议包含组成员管理协议和组播路由协议,组成员管理协议用于管理组成员的加入和离开,组播路由协议负责在路由之间建立组播树,IGMP属于组成员管理协议,运行于主机与主机直连的组播路由器之间,实现了以下两个功能

  1. 主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息
  2. 路由器通过IGMP周期性地查询局域网内的组播成员是否处于活动状态(即该网段是否仍有某个组播组成员),实现组成员关系的收集与维护
IGMP共有三个版本,即IGMP v1、v2 和 v3,目前通用的是v2,v3仍然是个草案。GMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了组成员快速离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。这里着重介绍IGMPv2协议的功能。

原理

IGMPv2通过查询器选举机制为所连网段选举唯一的查询器。
查询器周期性的发送普遍组查询消息进行成员关系查询;主机发送报告消息来应答查询。
当要加入组播组时,主机不必等待查询消息,主动发送报告消息。
当要离开组播组时,主机发送离开组消息;收到离开组消息后,查询器发送特定组查询消息来确定是否所有组成员都已离开。(此过程详见下一段)
通过上述IGMP机制,在组播路由器建立起一张表,其中包含路由器的各个端口以及在端口所对应的子网上都有哪些组的成员。
当路由器接收到某个组G的数据报文后,只向那些有G的成员的端口上转发数据报文。
至于数据报文在路由器之间如何转发则由路由协议决定,IGMP协议并不负责。

主机离开组播组

(1) 该主机向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送离开组(Leave Group)报文;

(2) 当查询器收到该报文后,向该主机所声明要离开的那个组播组发送特定组查询(Group-Specific Query)报文(目的地址字段和组地址字段均填充为所要查询的组播组地址);

(3) 如果该网段内还有该组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间(Max Response Time)内发送成员关系报告报文;

(4) 如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报文,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该网段内已无该组播组的成员,于是不再维护这个组播组的成员关系

报文

v2版本兼容V1版本,增加离开组的消息,成员查询的功能也扩展了,共有4种消息(v1只有两种,组成员查询和组成员报告)。

1、类型:

0x11——成员查询消息 

0x12——V1的成员报告消息

0x16——V2的成员报告消息

0x17——离开组的消息

2、最长响应时间:针对成员查询才有意义,主机多长时间必须响应查询,单位为0.1s ,默认值为10

3、校验和:校验包的完整性

4、组地址:当进行常规成员查询时为0;当进行特定组成员查询时为特定组的IP;当进行成员报告时为要报告的组播组地址。

参考

https://baike.baidu.com/item/%E7%BB%84%E6%92%AD #百度百科组播

https://baike.baidu.com/item/Internet%E7%BB%84%E7%AE%A1%E7%90%86%E5%8D%8F%E8%AE%AE/2991685?fromtitle=IGMP&fromid=610474&fr=aladdin #百度百科IGMP

https://baijiahao.baidu.com/s?id=1653039560944091489&wfr=spider&for=pc

posted @ 2020-05-08 14:40  ありふれた  阅读(1101)  评论(0)    收藏  举报