IGMPv2 对IGMPv1 所做的改进主要有以下几个方面:
查询器选举机制
IGMPv1 中,当某共享网段上存在多个组播路由器时,查询器的选择由组播路由协议决定。 IGMPv2 中使用独立的查询器选举机制,规定该网段上IP 地址最小的组播路由器为查询器。
离开组机制
在IGMPv1 中,主机悄然离开组播组,不会向任何组播路由器发出任何通知。这时组播路由器只能依靠普遍组查询消息响应超时来获知组播组成员的离开。在IGMPv2 中,当某主机决定离开组播组G1 时,它会向该网段以组播方式发送IGMP Leave 报文。该报文的目的地址为224.0.0.2,表示该网段上的所有路由器,报文中携带组播组G1 的地址。随后,为了明确网段中是否还包含组播组G1 的其它成员主机,查询器会向网络中发送指定次数的特定组查询消息。
对指定组的查询
在IGMPv1 中,由组播路由器发起的普遍组查询面向该网段下的所有组播组。在IGMPv2 中,增加了针对特定组的查询。IGMP 查询器在收到主机发送的离开组播组G1 的Leave 报文时,将向该网段中发送针对G1 的查询报文。该报文的目的地址为组播组G1 的地址,只有属于该组播组的主机才会进行响应,从而发送携带组播组G1 地址信息的Report 报告。IGMPv2 和IGMPv1 版本的响应消息(即Report 报告)和查询消息具有相同的报文结构,报文中仅携带组地址信息。特定组查询报文也称为最后成员查询报文。IGMP 查询器在收到主机发送的IGMPLeave 报文后,发送指定组查询报文的次数由健壮系数来确定。
最大响应时间
IGMPv2 中设置了最大响应时间,以限制查询器等待主机响应组查询报文(即发送report 报文)的最长时间。