码迷,mamicode.com
首页 > 其他好文 > 详细

IGMP 因特网组管理协议

时间:2014-09-03 16:54:57      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:tcpip   多播   组播   计算机网络   igmp   


    IGMP(Internet Group Management Protocol)作为因特网组管理协议,用于多播。
    与ICMP一样, IGMP也被当作 IP 层的一部分,IGMP报文也通过IP数据报进行传输。
                    bubuko.com,布布扣
    IGMP 在TCP/IP中负责局域网IP多播组成员管理的协议。用来在多播路由器与其局域网中的主机建立、维护多播组成员关系(组播路由器之间的组成员信息建立、维护使用组播路由协议)。关于多播,请参考《TCP/IP详解、卷一》第十二章。
如图 R1 R2 R3路由所在局域网中均有主机加入多播组。假设网络中有该组一多播数据包传送,那么如何使得该多播数据包只发给R1、R2、R3,而不发给R4.这时,就需要IGMP协议了。
    bubuko.com,布布扣
        简单的说,IGMP实现了这样的功能,对于主机来说,它通知多播路由器,我在哪些多播组中。对多播路由器而言,IGMP使得多播路由器维护局域网中的主机都加入了哪些组。     

基本过程:

    主机:        保存自己加入的组播播组列表
    多播路由器:  保存每个接口连接的网段上是否存在某个组播组的组成员
       1)加入一个组:主机加入一个组,向多播路由器发送IGMP报文,声明成为某个多播组成员。本地多播路由器获取该报文后,就可以将这种成员关系发给其他多播路由器。
        2)动态维护多播组成员关系:多播路由器定时向本地主机发送查询报文,以判断某个多播组在本地主机中是否还有成员。
         
    在动态维护多播组成员关系时,多播路由器发送query报文,如果某个组在本地有多名成员,那么在第一个成员主机respond之后,其他成员主机不必再应答。

        ( 1 ) 在主机和多播路由器之间的所有通信都是使用 IP 多播。只要有可能,携 带 IGMP报文的数据报都用硬件多播来传送。因此在支持硬件多播的网络上,没 有 参 加 I P 多播的主机不会收到 IG M P 报文。
        ( 2 ) 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文 ( 虽然也允许对一个特定组发送询问报文)。默认的询问速率是每 125 秒 发 送 一 次 ( 通信量并不太大)。
        ( 3 ) 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。因此,网络上多个多播路由器并不会引起IGMP通信量的增大。
        ( 4 ) 在 IGMP 的query报文中有最长响应时间 N( 默 认 值 为 10秒 )。当收到query时,主机在0 到N之间随机选择发送响应所需经过的时延。因此,若一个主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
        ( 5 ) 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。这样就抑制了不必要的通信量。


IGMP目前有三个版本:IGMPv1、IGMPv2、IGMPv3

IGMPv1、IGMPv2、IGMPv3三者的对比:

  IGMPv1 IGMPv2   IGMPv3   
实现机制 基于查询与响应    
查询器 通过多播路由选择协议选举产生 自己有选举机制 自己有选举机制
组员加入     主机主动向要加入的多播组发送加入报告    
组员离开     不立即发送离开报文,只是在下次查询时不响应(即不发送响应报告) 主动发离开报文,查询器收到报文就开始进行特定组查询 主动发离开报文,查询器收到报文就开始进行特定组查询   
指定源、组查询 指定组 指定、组
指定源、组加入
       
       


IGMPv3 的指定组功能:

1、主机控制能力的增强
        IGMPv3 增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),使主机在加入某组播组G的同时,能够明确要求接收或拒绝来自某特定组播源S的组播信息。
    主机加入组播组时:
1)    若要求只接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为INCLUDE Sources(S1,S2,……);
2)    若拒绝接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为EXCLUDE Sources(S1,S2,……)。


bubuko.com,布布扣
2、查询和报告报文功能的增强
1)携带源地址的查询报文
    IGMPv3 不仅支持IGMPv1 的普遍组查询和IGMPv2 的特定组查询,而且还增加了对特定源组查询的支持:
§  普遍组查询报文中,既不携带组地址,也不携带源地址;
§  特定组查询报文中,携带组地址,但不携带源地址;
§ 特定源组查询报文中,既携带组地址,还携带一个或多个源地址。
2)包含多组记录的报告报文
    IGMPv3 报告报文的目的地址为224.0.0.22,可以携带一个或多个组记录。在每个组记录中,包含有组播组地址和组播源地址列表。其组记录类型分别为: IS_IN,IS_EX,TO_IN,TO_EX,ALLOW,BLOCK六种。
§ IS_IN:表示组播组与组播源列表之间的过滤模式为INCLUDE,即只接收从指定组播源列表发往该组播组的组播数据。
§ IS_EX:表示组播组与组播源列表之间的过滤模式为EXCLUDE,即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。
§ TO_IN:表示组播组与组播源列表之间的过滤模式由EXCLUDE 转变为INCLUDE。
§ TO_EX:表示组播组与组播源列表之间的过滤模式由INCLUDE 转变为EXCLUDE











  IGMPv1    
       
       
    IGMP(Internet Group Management Protocol)作为因特网组管理协议,用于多播。
    与ICMP一样, IGMP也被当作 IP 层的一部分,IGMP报文也通过IP数据报进行传输。
                    bubuko.com,布布扣
    IGMP 在TCP/IP中负责局域网IP多播组成员管理的协议。用来在多播路由器与其局域网中的主机建立、维护多播组成员关系(组播路由器之间的组成员信息建立、维护使用组播路由协议)。关于多播,请参考《TCP/IP详解、卷一》第十二章。
如图 R1 R2 R3路由所在局域网中均有主机加入多播组。假设网络中有该组一多播数据包传送,那么如何使得该多播数据包只发给R1、R2、R3,而不发给R4.这时,就需要IGMP协议了。
    bubuko.com,布布扣
        简单的说,IGMP实现了这样的功能,对于主机来说,它通知多播路由器,我在哪些多播组中。对多播路由器而言,IGMP使得多播路由器维护局域网中的主机都加入了哪些组。     

基本过程:

    主机:        保存自己加入的组播播组列表
    多播路由器:  保存每个接口连接的网段上是否存在某个组播组的组成员
       1)加入一个组:主机加入一个组,向多播路由器发送IGMP报文,声明成为某个多播组成员。本地多播路由器获取该报文后,就可以将这种成员关系发给其他多播路由器。
        2)动态维护多播组成员关系:多播路由器定时向本地主机发送查询报文,以判断某个多播组在本地主机中是否还有成员。
         
    在动态维护多播组成员关系时,多播路由器发送query报文,如果某个组在本地有多名成员,那么在第一个成员主机respond之后,其他成员主机不必再应答。

        ( 1 ) 在主机和多播路由器之间的所有通信都是使用 IP 多播。只要有可能,携 带 IGMP报文的数据报都用硬件多播来传送。因此在支持硬件多播的网络上,没 有 参 加 I P 多播的主机不会收到 IG M P 报文。
        ( 2 ) 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文 ( 虽然也允许对一个特定组发送询问报文)。默认的询问速率是每 125 秒 发 送 一 次 ( 通信量并不太大)。
        ( 3 ) 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。因此,网络上多个多播路由器并不会引起IGMP通信量的增大。
        ( 4 ) 在 IGMP 的query报文中有最长响应时间 N( 默 认 值 为 10秒 )。当收到query时,主机在0 到N之间随机选择发送响应所需经过的时延。因此,若一个主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
        ( 5 ) 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。这样就抑制了不必要的通信量。


IGMP目前有三个版本:IGMPv1、IGMPv2、IGMPv3

IGMPv1、IGMPv2、IGMPv3三者的对比:

  IGMPv1 IGMPv2   IGMPv3   
实现机制 基于查询与响应    
查询器 通过多播路由选择协议选举产生 自己有选举机制 自己有选举机制
组员加入     主机主动向要加入的多播组发送加入报告    
组员离开     不立即发送离开报文,只是在下次查询时不响应(即不发送响应报告) 主动发离开报文,查询器收到报文就开始进行特定组查询 主动发离开报文,查询器收到报文就开始进行特定组查询   
指定源、组查询 指定组 指定、组
指定源、组加入
       
       


IGMPv3 的指定组功能:

1、主机控制能力的增强
        IGMPv3 增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),使主机在加入某组播组G的同时,能够明确要求接收或拒绝来自某特定组播源S的组播信息。
    主机加入组播组时:
1)    若要求只接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为INCLUDE Sources(S1,S2,……);
2)    若拒绝接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为EXCLUDE Sources(S1,S2,……)。


bubuko.com,布布扣
2、查询和报告报文功能的增强
1)携带源地址的查询报文
    IGMPv3 不仅支持IGMPv1 的普遍组查询和IGMPv2 的特定组查询,而且还增加了对特定源组查询的支持:
§  普遍组查询报文中,既不携带组地址,也不携带源地址;
§  特定组查询报文中,携带组地址,但不携带源地址;
§ 特定源组查询报文中,既携带组地址,还携带一个或多个源地址。
2)包含多组记录的报告报文
    IGMPv3 报告报文的目的地址为224.0.0.22,可以携带一个或多个组记录。在每个组记录中,包含有组播组地址和组播源地址列表。其组记录类型分别为: IS_IN,IS_EX,TO_IN,TO_EX,ALLOW,BLOCK六种。
§ IS_IN:表示组播组与组播源列表之间的过滤模式为INCLUDE,即只接收从指定组播源列表发往该组播组的组播数据。
§ IS_EX:表示组播组与组播源列表之间的过滤模式为EXCLUDE,即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。
§ TO_IN:表示组播组与组播源列表之间的过滤模式由EXCLUDE 转变为INCLUDE。
§ TO_EX:表示组播组与组播源列表之间的过滤模式由INCLUDE 转变为EXCLUDE










IGMP 因特网组管理协议

标签:tcpip   多播   组播   计算机网络   igmp   

原文地址:http://blog.csdn.net/windeal3203/article/details/39028061

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!