IGMP:因特网组管理协议,手机TCP/IP协议族中负责IP组播成员管理的协议,它用来在接受者和与其直接相邻的组播路由器之间创建、维护组播组成员关系。ide
接受者与路由器须要交换哪些信息呢spa
1.接受者须要声明本身要接受哪一个组的数据blog
2.路由器须要了解哪些组播组存在接受者ip
组成员管理-IGMP:因特网组管理协议路由
IGMP协议运行在主机与组播路由器之间get
做用:it
主机侧:经过IGMP协议向路由器通告组成员关系io
路由器侧:经过IGMP协议维护组成员关系class
IGMPv1的工做机制:cli
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版本:
这个版本很简单啦,简单的来讲,就是哪些我想接受,哪些我不想接受,把不想接受的过滤掉,留下我想接受的,简单吧。
各个版本的差别: