设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1874|回复: 1
收起左侧

[分享] IGMPv3报文格式

[复制链接]
 成长值: 62830
发表于 2017-11-15 16:36:41 | 显示全部楼层 |阅读模式
网络协议报文格式大全
http://bbs.hh010.com/thread-531884-1-1.html



IGMPv3报文格式
报文格式
IGMPv3包含查询报文和报告报文两种不同格式的报文。
图1 IGMPv3查询报文格式

                               
登录/注册后可看大图



字段长度描述
Type8比特成员关系查询 Type = 0x11。
Max Resp Code8比特设备接收到查询消息后发出响应报文的最大延迟时间,超过该时间没有发出响应报文,则查询设备认为此次查询超时,单位是1/10秒。
Checksum16比特IGMP消息的校验和。传送报文时,必须计算校验和并填入该字段中;接收报文时,必须在处理报文之前检验校验和,以判断IGMP消息在传输过程中是否发生了错误。
Group Address32比特对于普遍组查询消息,该字段置0。对于特定组查询消息、特定组/源查询消息,该字段为设置为欲查询的组播组的地址。
Resv4比特保留字段,发送报文时置0;接收到报文时,对该字段不做任何处理。
S1比特该比特位置1时,所有收到此查询消息的其他路由器不启动定时器刷新过程,但是此查询消息并不抑制查询器选举过程和路由器的主机侧处理过程。
QRV3比特查询者的健壮变量,如果不为0,QRV中包含中一个被查询者使用的[健壮变量]的值,如果查询者的健壮变量的值超过7,即QRV字段的最大值,那么QRV被设成0。路由器取最近收到的查询中的QRV值作为它们自己的健壮性变量的值,除非最近收到的QRV是0,在这种情况下,接收者使用缺省的健壮性变量值,或者是一个静态配置的值。
QQIC8比特查询器的查询间隔,单位是秒。非查询器收到查询报文时,如果发现该字段非0,则将自己的查询间隔参数调整为该字段的值。
Number of Sources (N)16比特消息中包含的组播源的数量。对于普遍组查询报文和特定组查询报文,该字段为0;对于特定组/源地址查询报文,该字段非0。此参数的大小受到所在网络MTU大小的限制。
Source Address 32比特组播源地址,其数量受到Number of Sources字段值大小的限制。

查询消息有三种类型的变体:
  • 1、“普通查询”由多播路由器发出,用于获知邻接接口(即查询所传输的网络中所相连的接口)的完整的多播接收状态。在一个普通查询中,组地址字段和源数量(N)字段都为0。
  • 2、“指定组查询”由一台多播路由器发出,用于获知邻接接口中跟某一个IP地址相关的多播接收状态。在指定组查询中,“组地址”字段含有需要查询的那个组地址,源数量(N)字段为0。
  • 3、“指定组和源查询”由一台多播路由器发出,用于获知邻接接口是否需要接收来自指定的这些源的,发往指定组的多播数据报。在一个指定组和源的查询中,组地址字段含有要查询的多播地址,源地址字段含有相关的源地址。

图2 成员报告消息的格式

                               
登录/注册后可看大图

成员报告消息是主机向组播路由器发送的报告消息,用报告加入某组播组并只接收由指定组播源发往该组的数据。
封装该消息的IP报文头的目的地址字段为224.0.0.22,本地网段上的所有IGMPv3路由器都能识别并接收。
图3 Group Record字段格式

                               
登录/注册后可看大图



字段长度描述
Type8比特
Type = 0x22成员关系报告
Reserved8比特保留字段,在发送的时候是以0填充,在接收的时候是不作任何处理的。
Checksum16比特校验和是对整个IGMP消息以16位为一段进行取反求和。为了计算校验和,校验和字段首先必须被置0。当收到一个数据,在处理之前,必须先对校验和进行验证。
Reserved16比特T保留字段,在发送的时候是以0填充,在接收的时候是不作任何处理的。
Number of Group Records (M)16比特该字段表示该报告报文中包含有几个组记录。
Group Record变长
一个主机可能需要点播多个组播地址的组播业务,每个记录包含了对应于其中一个组播地址的源地址列表等信息,它受到Number_of_Group_Records的大小的影响。
每一个组记录字段是一整块数据,其含有的信息是关于发送者在报告发送接口上的某一个多播组的成员关系。
Record Type8比特Group Record消息的类型。
  • MODE_IS_INCLUDE:接收源地址列表包含的源发往该组的组播数据。如果指定源地址列表为空,该消息为无效消息。
  • MODE_IS_EXCLUDE:不接收源地址列表包含的源发往该组的组播数据。
  • CHANGE_TO_INCLUDE_MODE:过滤模式由EXCLUDE转换到INCLUDE,接收源地址列表包含的新组播源发往该组播组的数据。如果指定源地址列表为空,主机离开组播组。
  • CHANGE_TO_EXCLUDE_MODE:过滤模式由INCLUDE转换到EXCLUDE,拒绝源地址列表中新组播源发往该组的组播数据。
  • ALLOW_NEW_SOURCES:表示在现有的基础上,需要接收源地址列表包含的源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则向现有源列表中添加这些组播源;如果当前对应关系为EXCLUDE,则从现有阻塞源列表中删除这些组播源。
  • BLOCK_OLD_SOURCES:表示在现有的基础上,不再接收从源地址列表包含的源组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则从现有源列表中删除这些组播源;如果当前对应关系为EXCLUDE,则向现有源列表中添加这些组播源。
Aux Data Len8比特辅助数据长度含有在组记录中的辅助数据的实际长度,其单位是32bit字。它有可能是0,这就表示辅助数据不存在。
Number of Sources (N)16比特源数量(N)字段标明在组记录中存在多少源地址。
Multicast Address32比特多播地址字段标明该组记录从属的多播IP地址。
Source Address 32比特源地址字段是一个数组,含有n个单播地址。n就是该记录的源数量(N)字段的值。
Additional Data变长附加数据。如果收到的报告中的IP首部的数据报长度字段标明在最后一个组记录后面有附加的数据存在。IGMPv3的实现必须在计算和验证校验和的时候包含这些附加数据,但是同时必须忽略这些附加数据。当发送一个报告时,一个IGMPv3的实现在最后一个组记录后面不能包含附加数据。


报文示例图4 IGMPv3 Membership Report (CHANGE_TO_INCLUDE_MODE)

                               
登录/注册后可看大图

图5 IGMPv3 Membership Report (CHANGE_TO_EXCLUDE_MODE)

                               
登录/注册后可看大图

图6 IGMPv3 Membership Report (BLOCK_OLD_SOURCES)

                               
登录/注册后可看大图

图7 IGMPv3 Membership Report (ALLOW_NEW_SOURCES)

                               
登录/注册后可看大图

图8 IGMPv3 Membership Query (General)

                               
登录/注册后可看大图

图9 IGMPv3 Membership Query (Special)

                               
登录/注册后可看大图


参考标准
标准描述
RFC 3376Internet Group Management Protocol, Version 3


您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-12-26 15:28 , Processed in 0.054992 second(s), 12 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表