Internet 组管理协议称为IGMP协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。IGMP协议共有三个版本,即IGMPv1、v2 和v3。
组播的可靠性IP 组播使用用户数据报UDP 协议,然而UDP 是尽最大能力投递的一种协议。因此,IP 组播应用势必会遇到数据包丢失和乱序问题。为此,对于IGMP 不同类型的应用必须在确认方式( 肯定确认ACK 和否定确认NACK),集中确认与分布确认、重传机制、流量控制、拥塞控制等方面综合考虑,提出解决方案。迄今为止,尽管在广域网环境中已经存在许多可靠组播协议,包括可靠组播协议RMP(ReliableMulticast Protocol),可扩可靠组播SRM(Scalable Reliable Multicast),和可靠组播传输协议RMTP(ReliableMulticast Transport Protocol)。组播的可靠性研究仍然是重点研究课题之一。
组播安全性是只有注册的主机才能够向组发送数据和接收组播数据。然而IP 组播很难保证这一点。首先,IP 组播使用UDP,网络中任何主机都可以向某个组播地址发送UDP 包;其次,Internet缺少对于网络层的访问控制,组成员可以随时加入和退出组播组,使得组播安全性问题仍然是一个技术难点。IGMP 组播协议是IPv4 环境下重要的协议。IGMPv1 实现简单,但是主机离开多播组延迟过大,选择查询路由器需要依赖具体的组播路由协议;IGMPv2缺少对主机进程加入多播组的定义,制约了其应用范围。IGMPv3 主要改进是支持源特定组播。大部分的网络设备和主机操作系统协议栈都支持IGMPv1 和IGMPv2,但为适应复杂的网络需求,必须大力推进IGMPv3 协议的用应用。Windows XP 已经支持IGMPv3 ,UNIX 操作系统也可以与IGMP v1/ v2 版本向后兼容,组播技术有着广阔的发展前景。
IGMP的组成员查询利用报文中类型字段0x11来标识。IGMP的组成员查询包含了两种子类型:一般组成员查询(General Query)和特定组成员查询(Group-Specific Query)。子类型利用报文中的组播组地址(Group Address)字段来区分:组地址段等于0,表示一般组成员查询;组地址地段不等于0,则表示特定组成员查询,用于查询本地网络中的每个指定组播组的成员,其中组播组的地址由组地址(Group Address)字段来指定被查询的组播组。在IGMPv1中只支持一般组成员查询,IGMPv2支持特定组成员查询。
IGMP约定,本地路由器利用一般组成员查询方式来周期性地向本网络内的所有主机发送IGMP组成员查询报文;本地网络中的主机在接收到IGMP查询报文时,将会对该报文作出相应,返回一个组成员报告报文,通知路由器本主机所在的组播组的地址。
正常情况下,IGMP采用一般组播组成员查询来轮询本地网络中的组成员信息。这种查询并非针对某一个组播组,而是针对本地网络中所有组进行查询。在某些特定环境中,路由器也需要查询在本地网络中是否存在某个特定组播组的成员。这时可使用特定组成员查询。