IGMP网际组管理协议
————IP多播
IGMP v1: 定义了主机只可以加入组播组,但没有定义离开成员组的信息,路由器基于成员组的超时机制发现离线的组成员。
报文格式:
版本:版本为1。 类型:1—多播路由器发出的查询报文;2—主机发出的报告报文。 未用:保留为以后使用。
检验和:检验和的计算和ICMP协议相同。 地址:查询报文为0;报告报文为32为组地址。
IGMP v2:在版本1 上基础上增加了主机离开成员组的信息,允许迅速向路由协议报告组成员离开情况。
IGMPv3 :在兼容和继承IGMPv1 和IGMPv2 的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。
(一)IGMP 报告和查询
多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况。使用规则如下:
1) 当第一个进程加入一个组时,主机就发送一个IGMP报告。如果一个主机的多个进程加入同一组,只发送一个IGMP报告。这个报告被发送到进程加入组所在的同一接口上。
2) 进程离开一个组时,主机不发送IGMP报告,即便是组中的最后一个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的IGMP查询中就不再发送报告报文。IGMP v1不发送,IGMP v2发送。
3) 多播路由器定时发送IGMP查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接口发送一个IGMP查询。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此IGMP查询报文中的组地址被设置为0.
4) 主机通过发送IGMP报告来响应一个IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报告。
使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组。
当路由器收到要转发的多播数据报时,它只将该数据报转发到(使用相应的多播链路层地址)还拥有属于那个组主机的接口。
(路由器关心的是,只要这个接口上还有多播组的主机,就向此接口转发)。
特点:
IGMP报告并不保证被可靠接收(因为使用的是IP交付),下一个报告随机选择时间发送;
当一个主机收到查询后,经过一定的时间间隔才发送报