IP组播2_IGMP协议

IGMP是一种管理多播组的协议,允许主机和路由器注册多播组。IGMP有三个版本:v1仅支持加入,v2增加了离开功能和查询报文,v3则支持源地址过滤和更复杂的组管理。各版本通过首部字段和工作流程的不同进行区分,v3提供了更精细的多播流量控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. IGMP简介

2.IGMPv1协议

2.1IGMPv1首部

2.2 IGMPv1工作原理

2.3 IGMPv1报文

3.IGMPv2协议

3.1 IGMPv2首部

3.2 IGMPv2工作原理

3.3 IGMPv2报文

4.IGMPv3协议

4.1 IGMPv3首部

4.1.1 IGMPv3查询报文首部

4.1.2 IGMPv3报告报文首部

4.2 IGMPv3工作原理

4.3 IGMPv3报文

5.IGMP不同版本对比


1. IGMP简介

IGMP(Internet组管理协议)是一种用于管理多播组的协议,它允许主机和路由器在网络中注册加入或离开多播组,并帮助路由器确定哪些主机应该接收特定的多播流。IGMP是在IP协议的基础上工作的,它使用IP协议中的一些字段来实现多播组的管理。IGMP主要用于局域网的多播传输。

IGMP协议有三个版本:IGMPv1、IGMPv2和IGMPv3。

IGMPv1是最早的IGMP协议版本,它只支持主机加入多播组,而不支持离开多播组。IGMPv1报文中只有一个操作类型字段,用于指示主机加入多播组。

IGMPv2是在IGMPv1的基础上进行了改进,它支持主机加入和离开多播组。IGMPv2报文中增加了一个操作类型字段,用于指示主机离开多播组。此外,IGMPv2还引入了组播组查询报文(IGMP Query Message),用于路由器查询网络中的主机是否仍然对某个多播组感兴趣。

IGMPv3是最新的IGMP协议版本,它在IGMPv2的基础上进一步提升了多播组管理的能力。IGMPv3支持源地址过滤和组地址过滤,可以让主机只接收特定源地址或特定组地址的多播流。此外,IGMPv3还引入了多播组和源地址查询报文(IGMPv3 Query Message),用于在网络中查询特定多播组或源地址的成员信息。

IGMP以太网帧格式

图 1 IGMP以太网帧

IGMP协议数据IP子协议,IP子协议号位2。

2.IGMPv1协议

2.1IGMPv1首部

图 2 IGMPv1首部格式

IGMP版本:4比特,固定1,说明IGMP所用版本。  

IGMP类型:4比特

0x1:表示普遍组查询报文 。                         

0x2:表示成员报告报文 。   

未使用: 1字节,发送时设置位0,接收时忽略。

校验和:2字节,校验和数据覆盖首部和数据部分,校验和计算方法可以参考我的其他文章。

UDP校验和原理

IP校验和原理

组播地址:4字节,查询报文该字段为0,报告报文该字段为加入的组播组地址。

2.2 IGMPv1工作原理

 图 3 IGMPv1工作原理

  • 组成员加入

主机通过IGMPv1报告报文报告组播路由器加入组播组,组播路由器收到报告报文后,会生成对应的组播路由表项。组播源向该组播组发送数据时,组播路由器会查询组播路由表项,将数据转发至主机所在网段。

  • 组成员离开

IGMPv1没有定义离开报文,只能通过查询报文确认主机是否离开组播组,组播路由器发送查询报文至该网段,已离开组播组的主机将不会响应报告报文,如果该网段存在未离开组播组的主机,该主机将会响应报告报文至组播路由器,组播路由器收到报告报文后,不会删除组播路由表项。当该网段所有组播成员都离开组播组,组播路由器将删除组播路由表项。

2.3 IGMPv1报文

IGMPv1查询报文

 图 4 IGMPv1查询报文

IGMPv1报告报文

 图 5 IGMPv1报告报文

3.IGMPv2协议

3.1 IGMPv2首部

 图 6 IGMPv2首部格式

类型:1字节,报文类型,有以下几种类型

0x11:表示查询报文,包括普遍组查询报文和特定组查询报文。

0x12:表示IGMPv1成员报告报文。

0x16:表示IGMPv2成员报告报文。

0x17:表示成员离开报文。

最大响应时间:1字节,指定发送方等待响应的最大时间,单位为 1/10 秒。

校验和:2字节,校验和数据覆盖首部和数据部分。

组播地址:4字节,组播组地址

  • 普遍查询报文为0。
  • 特定组查询报文为查询组播组地址。
  • 成员加入和离开报文为加入和离开组播组地址。

3.2 IGMPv2工作原理

图 6 IGMPv2工作原理

  •  组成员加入

主机通过IGMPv2报告报文报告组播路由器加入组播组,组播路由器收到报告报文后,会生成对应的组播路由表项,组播源向该组播组发送数据时,组播路由器会查询组播路由表项,将数据转发至主机所在网段,组播成员就能收到组播数据。

  • 组成员离开

IGMPv2定义了离开报文,如果组播成员需要离开组播组,会发送IGMPv2离开报文至组播路由器,组播路由器收到离开报文后,会定时的发送查询报文至组成员所在网段,如果该网段内已经没有组成员,组播路由器将不会再收到报告报文,组播路由器将删除组播路由表项。该网段内还有其他组成员,组播路由器将收到其他组成员的报告报文,组播路由器维持原来状态。

3.3 IGMPv2报文

IGMPv2查询报文

图 7 IGMPv2查询报文

IGMPv2报告报文

图 8 IGMPv2报告报文

IGMPv2离开报文

图 9 IGMPv2离开报文

4.IGMPv3协议

4.1 IGMPv3首部

4.1.1 IGMPv3查询报文首部

图 10 IGMPv3查询报文首部

 类型:1字节,0x11:表示查询报文。

最大响应时间:1字节,指定发送方等待响应的最大时间,单位为 1/10 秒。

校验和:2字节,校验和数据覆盖首部和数据部分。

组播地址:4字节,组播组地址

  • 普遍查询报文为0。
  • 特定组查询报文为查询组播组地址。

保留字段:4比特,发送报文该字段为0。

标志位(S):1比特,表示是否启用抑制机制。

标志位(QRV): 3比特,表示查询器的健壮性。

查询间隔(QQIC):1字节,查询间隔时间,单位为秒。

组播源数量:1字节,主播源地址数量。

 源地址列表:由多个源地址组成,一个源地址4字节。

4.1.2 IGMPv3报告报文首部

图 11 IGMPv3报告报文首部

类型:1字节,0x22:报告报文。

保留:1字节,发送报文该字段为0,接收报文忽略。

校验和:2字节,校验和数据覆盖首部和数据部分。

保留:2字节,发送报文该字段为0,接收报文忽略。

组记录个数:2字节,报文中包含组记录数量。

组记录列表:包含一些列组记录。

组记录格式:

组记录类型:1字节,组记有以下几种类型

  • 当前状态报告,有两种模式:MODE_IS_INCLUDE,MODE_IS_EXCLUDE。
  • 过滤模式改变报告,有两种模式:CHANGE_TO_INCLUDE_MODE,CHANGE_TO_EXCLUDE_MODE。
  • 源列表改变报告,有两种模式:ALLOW_NEW_SOURCES,BLOCK_OLD_SOURCES。

辅助数据长度:1字节,该字段为0。

源地址数量:2字节,本记录中包含源地址数量。

组播组地址:4字节,组播组地址。

组播源地址列表:每个组播源地址4字节。

辅助数据:IGMPv3报文中不存在辅助数据 。

4.2 IGMPv3工作原理

图 12 IGMPv3工作原理

  •  组成员加入

IGMPv3加入组播组流程和IGMPv2类似,IGMPv3加入组播组同样时采用IGMPv3报告报文。IGMPv3报告报文既能指定想要加入的组播组,也能指定想要接收的组播源,这样IGMPv3就能很好的支持指定源组播(SSM)。IGMPv3报告报文可以携带多个组播组信息,可以减少报文数据量。

  • 组成员离开

IGMPv3离开组播组流程和IGMPv2类似,IGMPv3没有定义专门的离开报文,离开报文通过报告报文来实现,通过设置记录类型(Record Type)来离开组播组。

  • 组成员查询

IGMPv3查询报文包含普遍组查询报文和特定组查询报文。普通组查询报文和IGMPv2类似,特定组查询通过报文中的携带组播源地址来完成,用于查询组成员是否愿意接收特定组播源数据。

4.3 IGMPv3报文

IGMPv3查询报文

 图 13 IGMPv3查询报文

IGMPv3报告报文

 图 14 IGMPv3报告报文

5.IGMP不同版本对比

 图 15 IGMP不同版本对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网心球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值