IGMP及抓包分析

IGMP

IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

到目前为止,IGMP 有三个版本: 1、IGMPv1(由RFC 1112 定义) 2、IGMPv2(由RFC 2236 定义) 3、IGMPv3(由RFC 3376定义)

一、IGMPv1

1.1报文格式

1、版本:

版本字段包含IGMP版本标识,因此设置为1。 2、类型:

成员关系查询 (0x11) 成员关系报告 (0x12) 3、校验和 4、组地址:

当一个成员关系报告正被发送时,组地址字段包含组播地址。 当用于成员关系查询时,本字段为0,并被主机忽略。 1.2组成员加入过程

当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。

IGMPv1 join包如下:

1.3查询与响应过程

路由器RTA(IGMP查询器)周期性地(默认60秒)向子网内所有主机(224.0.0.1代表子网内所有主机)发送成员关系查询信息。

所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。

组的其他成员监听到报告后抑制自己的成员关系报告发送。

1.4 抑制机制

当主机收到IGMP成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。

计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。 其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。 1.5 组成员离开过程

主机“默不作声”地离开组(不发送报告了)。 路由器发送成员关系查询信息。

路由器没有收到该组的IGMP报告,则再发送成员关系信息(3次查询周期过后)。 组播组超时,剪枝。

二、IGMPv2

2.1报文格式

1、类型

成员关系查询(0x11)

常规查询:用于确定哪些组播组是有活跃的,即该组是否还有成员在使用,常规查询地址由全零表示;

特定组查询:用于查询某具体组播组是否还有组成员。 版本2成员关系报告(0x16) 版本1成员关系报告(0x12) 离开组消息(0x17)

2、最大响应时间

以0.1秒为单位,默认值是100,即10秒。 3、校验和 4、组地址

在成员查询消息中,发送一个普遍查询报文时组地址域应设为0,当发送一个对特定组的查询报文时,则应设置组的地址。

在成员报告或离开组的消息中,组的地址域保留了要报告或要离开的地址。 2.2 组成员加入过程

当一个主机加入了一个组播组,则应该立即发送一个或多个版本2的成员关系报告给组播组。

IGMPv2的join包如下:

联系客服:779662525#qq.com(#替换为@)