跳到主要内容

2. Introduction (简介)

2. 简介 (Introduction)

互联网组管理协议 (Internet Group Management Protocol, IGMP) 被 IP 主机用于向任何直接相邻的组播路由器报告其组播组成员资格。本备忘录仅描述主机和路由器之间使用 IGMP 来确定组成员资格的情况。作为组播组成员的路由器应该既作为主机又作为路由器运行, 甚至可以响应自己的查询。IGMP 也可以在路由器之间使用, 但此类使用在此处未指定。

与 ICMP 一样, IGMP 是 IP 的组成部分。希望接收 IP 组播的所有主机都需要实现它。IGMP 消息封装在 IP 数据报中, IP 协议号为 2。本文档中描述的所有 IGMP 消息都以 IP TTL 1 发送, 并在其 IP 头部中包含 IP 路由器警报选项 [RFC 2113]。与主机相关的所有 IGMP 消息具有以下格式:

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Max Resp Time | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Group Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2.1. 类型 (Type)

与主机-路由器交互相关的 IGMP 消息有三种类型:

0x11 = 成员资格查询 (Membership Query)

成员资格查询消息有两种子类型:

  • 通用查询 (General Query), 用于了解连接网络上哪些组有成员。
  • 组特定查询 (Group-Specific Query), 用于了解连接网络上特定组是否有任何成员。

这两种消息通过组地址区分, 如第 1.4 节所述。成员资格查询消息简称为"查询"消息。

0x16 = 第 2 版成员资格报告 (Version 2 Membership Report)

0x17 = 离开组 (Leave Group)

还有一种额外的消息类型, 用于与 IGMPv1 向后兼容:

0x12 = 第 1 版成员资格报告 (Version 1 Membership Report)

本文档将成员资格报告简称为"报告"。当未指定版本时, 该声明同样适用于两个版本。

无法识别的消息类型应被静默忽略。新消息类型可能被较新版本的 IGMP、组播路由协议或其他用途使用。

2.2. 最大响应时间 (Max Response Time)

最大响应时间字段仅在成员资格查询消息中有意义, 以 1/10 秒为单位指定发送响应报告之前允许的最大时间。在所有其他消息中, 发送方将其设置为零, 接收方忽略它。

2.3. 校验和 (Checksum)

校验和是整个 IGMP 消息 (整个 IP 载荷) 的反码和的 16 位反码。计算校验和时, 校验和字段设置为零。发送数据包时, 必须 (MUST) 计算校验和并将其插入此字段。接收数据包时, 在处理数据包之前必须 (MUST) 验证校验和。

2.4. 组地址 (Group Address)

在成员资格查询消息中, 发送通用查询时组地址字段设置为零, 发送组特定查询时设置为被查询的组地址。

在成员资格报告或离开组消息中, 组地址字段保存正在报告或离开的组的 IP 组播组地址。

2.5. 其他字段 (Other fields)

注意, IGMP 消息可能长于 8 个八位字节, 特别是未来向后兼容的 IGMP 版本。只要类型是可识别的, IGMPv2 实现在处理数据包时必须 (MUST) 忽略前 8 个八位字节之后的任何内容。但是, IGMP 校验和始终在整个 IP 载荷上计算, 而不仅仅是前 8 个八位字节。