IGMPv1,v2,v3的原理报文形式 - 图文 下载本文

图2-8 IGMPv1响应抑制机制

4) 组成员离开

图2-9 IGMPv1组成员离开

1.2 IGMPv2协议

1.2.1 IGMPv2的工作原理

IGMPv1的主要缺点是离开延迟过大和选择查询路由器需要依赖组播路由协议进行。针对这些缺点,IGMPv2做了相关的改进。在IGMPv2中,增加了离开组的报文格式,当主机想要离开某个组播组时,不必等待路由器发出查询报文,而是可以直接向路由器发送成员关系报告报文,这样可以有效地缩短离开延迟。另外在IGMPv2中,还明确了查询路由器的选举机制。除此之外,IGMPv2的工作原理与IGMPv1基本一致

1.2.2 IGMPv2的报文格式

IGMPv2的报文格式如图2-10所示:

图2-10 IGMPv2报文格式

它在IGMPvl的基础上,进行了两处改动:一个是将v1的版本字段和类型字段进行了合并;另一个是增加了最大响应时间字段 (MaxResponseTime)。其主要内容如下: (1)类型字段,在兼容IGMPv1的基础上,IGMPv2中新增了两种报文类型。

·0xll:成员关系查询。与IGMPv1不同,IGMPv2的查询分为两种类型:①通用查询 (GeneralQuery),组地址字段置为全0,对所有的组进行组成员查询;②特定组查询 (GrouPpecificQuery),针对特定组进行组成员查询,组地址字段置为特定组的地址。 ·0x12:IGMPv1成员关系报告(为了向后兼容IGMPv1)。 ·0x16:IGMPv2成员关系报告。 ·0xl7:离开组。

(2)最大响应时间字段,只有在成员关系查询报文中有效,主机必须在最大响应时间到达之前发出成员关系报告报文。通过该值,路由器可以调节组成员的离开延迟。 (3)校验和字段,与IGMPv1中的一样。

(4)组地址地段,与IGMPv1中的基本一样,当采用特定组查询时,该字段存放要查询的组播组的地址。

IGMPv2报文在网络中传输完整的报文格式如图2-11:

图2-11 在网络中传输的IGMPv2报文格式

1.2.3 IGMPv2工作过程

查询一响应过程与IGMPv1基本相同,但是有两点改进:①增加了特定组查询,特定组查询的目的是为了让路由器知道一个特定组在子网内是否还有组成员,以便判断是否还需要转发该组的数据报文;②IGMPv2的成员关系报告的类型代码不一样。

IGMPv2的组成员加入与 IGMPv1中的完全一样。IGMPv2离开过程与IGMPv1相比有了较大的改进。主机离开一个组时,需要显式地发送一个离开报文给路由器。其过程如下:要离开的主机发送一个离开报文给子网上所有路由器(目的地址224.0.0.2)。查询路由器接收到离开报文后,会立即发送一个特定组查询到子网上。如果子网上还有该组的成员,则会发回一个响应报文;如果子网上己经没有该组的成员,则没有主机回应,于是路由器就知道己经没有该组成员了,就停止转发该组的数据。

在IGMPv1中,选择查询路由器依赖于组播路由协议。而在IGMPv2中,明确了选择查询路由器的机制。其过程如下:开始时,子网上的每个路由器都假定自己就是查询路由器,发送一个通用查询报文给所有主机(目的地址224.0.0.1)。每个路由器都可以接收到来自其他路由器的报文,然后进行IP地址的比较,具有最低IP地址的路由器就成为查询路由器;非查询路由器启动一个计时器,无论何时接收到来自当选的查询路由器的通用查询报文,就将计时器复位。如果计时器超时,就认为当选的查询路由器发生故障,转向开始重新选择。计时器的取值一般为查询间隔的2倍 图解工作过程如下: 1)组成员加入

图2-12 IGMPv2组成员加入

2)查询与响应

图2-13 IGMPv2组成员查询与响应

3)查询器选举

图2-14 IGMPv2查询路由器选择