前言

在IGMPv2中,成员离开报文目标地址应为224.0.0.2,也就是发往广播域中的所有路由器。但在实际使用中,我们会见到目标地址为组地址的报文,并且组播路由器也能正常接收并识别Leave信息。


RFC2236中的相关说明

在RFC2236中,我们可以明确找到对于IGMPv2协议中各消息目的地址的相关说明,位置位于第9小节。

说明整理如下:

Message destinations

This information is provided elsewhere in the document, but is summarized here for convenience.

Message TypeDestination Group
General QueryALL-SYSTEMS (224.0.0.1)
Group-Specific QueryThe group being queried
Membership ReportThe group being reported
Leave MessageALL-ROUTERS (224.0.0.2)

Note: in older (i.e., non-standard and now obsolete) versions of IGMPv2, hosts send Leave Messages to the group being left. A router SHOULD accept Leave Messages addressed to the group being left in the interests of backwards compatibility with such hosts.

In all cases, however, hosts MUST send to the ALL-ROUTERS address to be compliant with this specification.

根据官方的说明我个人的理解如下:

在RFC2236中是有明确规定,主机要发送离开消息时目的地址必须为224.0.0.2,但是在旧版的IGMPv2协议中发送给组地址的情况是被允许的。虽然这个旧版的IGMPv2协议在RFC2236被定义为“非标准且现已过时”,但是现阶段可能仍有不少的设备运行着旧版的IGMPv2协议。

而带有新标准和新规范的新版IGMPv2为了实现IGMP向下兼容的特性(即运行高版本IGMP的路由器可以识别低版本的成员报告,虽然这里的版本是指v1、v2、v3这样的大版本),保留了这样的识别能力,但其实目的地址为组地址确实是不规范的。