前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Internet组管理协议IGMP

Internet组管理协议IGMP

作者头像
十二惊惶
发布2024-02-28 20:49:47
960
发布2024-02-28 20:49:47
举报

Internet组管理协议IGMP

[TOC]

代码语言:javascript
复制
# 掌握IGMP协议的报文格式
# 掌握IGMP协议的工作原理
# 理解多播组地址到以太网地址的映射

单播与多播与广播:

单播(unicast): 单个源站与单个目的站之间的通信叫作单播,IP数据报中的源IP地址和目的IP地址分别代表了源站和目的站。

绝大多数的网络应用程序是单播

多播/组播(multicast): 一个源站和多个目的站之间的通信叫作多播。

  • IP数据报中的源地址是单播地址,目的地址是组地址(D类地址)
  • 路由器收到组播数据包后,可从它的多个接口转发出去 目前,组播机制没有被广泛支持,主要的组播路由机制有距离向量多播路由协议(DVMRP)和协议无关组播(PIM) .

广播(broadcast):广播源站和目的站是一对多的,源站只有一个,但所有其它主机都是目的站Internet不支持广播,因为这会产生非常大的通信量

组播:

优点:采用组播技术后,即使用户数量成倍增长,主干网带宽不需要随之增加。从而解决了宽带应用对带宽和服务质量的要求问题

组播比多个单播具有更小的分组时延

组播地址范围:

  1. IANA(国际因特网地址分配委员会)把D类地址空间用于IP组播地址
  2. IP组播地址的范围是:224.0.0.0~239.255.255.255
  3. 常用的组播地址
    • 224.0.0.1 在本子网上的所有参加多播的主机和路由器
    • 224.0.0.2 在本子网上的所有参加多播的路由器
    • 224.0.0.5 用来给一个网段中所有的OSPF路由器发送OSPF路由信息
    • 224.0.0.9 RIPv2组地址
    • 224.0.0.11 供DHCP服务器和中继代理使用
动态的组成员

多播组中的成员是动态的。一个进程可请求其主机参加某个特定组,或在任意时间退出该组

使用硬件进行多播

当数据报传送到以太网时,以太网利用硬件进行多播,交付给属于该组成员的主机

多播组地址到以太网地址的转换

多播以太网地址的前25位是0000000100000000010111100这意味着与IP多播相对应的以太网地址范围从01005E000000到01005E7FFFFF。然后将多播IP地址的低23位映射到以太网地址中的低23位。

由于D类地址的组标识字段长为28bit,将低23位复制到多播MAC地址中,有5bit未使用,所以映射是多对一的

32个多播IP地址映射到一个以太网多播地址。既然地址映射不是惟一的,那么设备驱动程序或lP层就必须对数据报进行过滤。因为网卡可能接收到主机不想接收的多播数据帧。另外,如果网卡不提供足够的多播数据帧过滤功能,设备驱动程序就必须接收所有多播数据帧,然后对它们进行过滤。

IGMP协议简介:

IGMP ( lnternet Group Management Protocol)协议,IGMP位于网络层。

IGMP协议运行于主机和主机直接相连的路由器之间,是IP主机用来报告多播组成员身份的协议

利用IGMP协议,一方面可以使主机通知本地路由器希望加入并接收某个特定多播组的信息;另一方面,路由器可以周期性地查询局域网内某个已知组的成员是否处于活动状态。 IGMP使用预留的组播地址224.0.0.1与本地路由器通信。

IGMP报文格式:

IGMP协议目前有三个版本IGMP、IGMPv2和IGMPv3。

其中IGMPv2有3种报文类型:

查询报文:路由器查询多播组中是否有活跃成员,分为一般查询和特定查询 成员关系报告报文:加入多播组或响应查询报文。 退出报告报文:离开多播组。

IGMPv2报文格式:
  1. 类型:定义了IGMP报文类型
  1. 响应时间:规定查询必须在多长时间内回答,以十分之一秒为单位。默认值为10秒。在查询报文中,这个值不为0,在其它报文中此字段值为0
  2. 检验和:对整个IGMP报文进行检验,算法同IP数据报
  3. 组地址:在一般查询报文中值为0。在特殊的查询报文、成员关系报告报文以及退出报文中值为相应的多播组地址
IGMP的封装

IGMP报文被封装在IP数据报中,IP层有3个字段需要注意:

  • 协议类型:值为2,高层协议类型为2的IP数据包,其数据部分要交给IGMP协议处理。
  • 生存时间:值为1,保证了这个报文不离开这个局域网。因为IGMP的作用范围是局域网,IGMP报文不能够发送到局域网以外的地方。
  • 目的IP地址:为D类组播地址。

多播组成员的加入和退出:

加入一个组

每个主机维护一张成员关系表,成员关系表是**<进程名,组名>表项的集合。当一个进程P要加入一个新组MG时,就向主机发出申请,主机就在成员关系表中增加<P, MG>**表项。

  • 如果MG在表中不存在,主机就发送成员关系报告报文
  • 如果MG在表中已经存在,那就不必发送成员关系报告报文,因为主机已经是MG这个组的成员了

路由器也维护一个多播地址表,给出了连接到每一个接口的成员关系。如果对于这些接口中的一个组有兴趣时,路由器就发送成员关系报告报文,以记录连接在它的接口上的所有的多播组。 IGMP协议要求把成员关系报告报文在很短的时间内发送两次。这样,如果第一个报文丢失或受到损伤,那么第二个报文可以代替它。

退出一个组
  1. 当主机发现在一个群组MG中已经没有进程时,就发送退出报告报文,多播路由器收到该报告。当路由器发现在一个特定组中已经没有连接在它的接口上感兴趣的网络,它就发送退出这个组的报告。
  2. 多播路由器收到退出报告报文时,并不立即删除这个群组MG,而是发送针对MG的查询报文,因为这个退出群组报告仅仅是从一个站点发送来的,可能还有其他站点仍然需要这个群组。
  3. 若在指定时间内没有收到站点对该群组的成员关系报告,就意味着在本网络上没有这个群组MG的成员,删除这个群组。
监视组成员关系

  • 当仅有一台主机留在一个组中时,如果这台主机离开了这个组而没有发送退出报告报文,那么多播路由器将永远收不到退出报告报文,它认为这个组一直存在这个成员。

多播路由器负责监视局域网上的所有主机或路由器,多播路由器周期性地发送一般查询报文,在这个报文中,组地址被置为0.0.0.0

路由器期望着在它的组表中的每一个组的回答,甚至新的组也可以回答。查询报文的最大响应时间是10秒。当主机路由器收到一般查询报文时,如果它对一个组感兴趣,就发送成员关系报告报文。

延迟响应

IGMP使用延迟响应策略,避免不必要的通信量。当主机或路由器收到查询报文时,它不是立即响应,而是延迟响应

主机或路由器使用一个随机数产生计时器,它的截止时间是1~10秒。截止时间可以使用1秒或更短的步长。

表中的每一个组都设置计时器。每个主机或路由器在发送成员关系报告报文之前都要等待它的计时器到时。在这段等待时间中,如果在同一组中的其它主机或路由器的计时器先到了截止时间,那么这个主机或路由器就发送成员关系报告报文。因为这个报文是广播发送的,等待的主机或路由器都能收到这个报文,并知道没有必要对这个组发送重复的报文;因此,等待的主机或路由器就取消发送成员关系报告。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Internet组管理协议IGMP
    • 单播与多播与广播:
      • 组播:
      • 多播组地址到以太网地址的转换
    • IGMP协议简介:
      • IGMP报文格式:
        • IGMPv2报文格式:
        • IGMP的封装
      • 多播组成员的加入和退出:
        • 加入一个组
        • 退出一个组
        • 监视组成员关系
        • 延迟响应
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档