IGMP:因特网组管理协议,手机TCP/IP协议族中负责IP组播成员管理的协议,它用来在接受者和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

接受者与路由器需要交换哪些信息呢

1.接受者需要声明自己要接受哪个组的数据

2.路由器需要了解哪些组播组存在接受者

组成员管理-IGMP:因特网组管理协议

IGMP协议运行在主机与组播路由器之间

作用:

主机侧:通过IGMP协议向路由器通告组成员关系

路由器侧:通过IGMP协议维护组成员关系

IGMPv1的工作机制:

IGMP协议_第1张图片

IGMPv1版本支持两种报文:

普遍组查询报文(General Query):路由器会周期性的向224.0.0.1这个地址发送查询报文,默认周期时间为60S

成员关系报告报文(Membership Report):用于主机加入某个组播组

如果所示,普遍组查询和响应过程如下:

①RTA发送普遍组的查询报文

②网段内的所有主机都收到该查询报文,clintA和clintC是属于G1组的,所以他们就启动定时器Timer-G1,clintB属于G2组,所以启动timer-G2。定时器的范围是0-10s,定时器先超时的主机发送该组的成员关系

③本来当RTA发送一个查询报文的时候,同一个网段内的所有主机都需要给RTA发送一个消息确认,这样就造成了网段内的大量流量,所以,当clintC收到clintA发送的成员关系报文之后,则停止定时器,不在发送针对G1的成员关系报文,这样就减少了协议流量,这就是抑制机制

IGMPv1成员加入:

如果有clintD加入这个组,为了快速接受组播数据,clintD会主动发送IGMP成员关系报文,标识希望加入这个组,RTA收到以后,就会向该网段转发数据

组成员的离开:

静默离开:不打任何招呼就走了,非常讨厌啊

组成员离开的话,RTA不会收到组成员关系报文,之后会在130s之后会删除这个组播

查询器选举:

依赖于组播路由协议

选举规则:

优先级以大为优

若相同,IP地址以大为优


IGMPv2:

改进了组成员离开

ClintB向本网段内的所有组播路由器(亩的地址为224.0.0.2)发送针对组G2离开的消息,然后查询器收到了离开的报文,会发送针对这个G2的特定组的查询报文,同时启动组成员关系定时器,每隔1s发送一次,一共发送2次,速度还是很快的,比V1版本强太多了。如果G2组没有成员了,那么路由器就删除了这个组播,如果这个组播还有主机,那么就接着向该网段转发数据

改进了查询器选举

独立的查询器选举机制

所有的IGMPv2版本的路由器在初始状态都认为自己是查询器,然后他们向本网段内的路由器和主机发送普遍组查询报文,然后另一个路由器收到这个查询报文之后,会将报文中的IP地址和自己的IP地址进行比较,哪个IP地址小就成为查询器,也就是winer。

IGMPv3版本:

这个版本很简单啦,简单的来说,就是哪些我想接受,哪些我不想接受,把不想接受的过滤掉,留下我想接受的,简单吧。

各个版本的差异:

IGMP协议_第2张图片