【干货】IGMPv1协议闲聊

简介: 【干货】IGMPv1协议闲聊

1、它是干嘛的?

IGMP(Internet  Group Mangment Protocl)因特网组管理协议,开发该协议,主要是用于组播流接收主机和相邻组播路由器之间维护组播组成员关系的。


说白了,主机通过它来表达自己想加入哪个组播组。组播路由器通过它可以清楚了解连接主机子网内有哪些组播组成员。



2、什么时候才需要它? 部署场景?


当部署组播时候,有主机需要加入组播组时就需要它。



部署场景:







IGMP协议、原理介绍


1、协议发展:





2、协议具体介绍

   IGMP协议运行于主机和 与主机相邻的组播路由器(最后一跳路由器)之间。


   IGMP工作机制,龙哥就从两个维度来说把,就是主机路由器













3、IGMP工作机制






  聊IGMP工作机制前,我个人还是偏向先了解一下报文格式,如果有报文格式读透了,然后再去研究原理,就容易理解一些。





                                IGMPv1报文格式


版本:即=1‘

类型:0x11= ’成员关系查询报文;0x12=成员加入报告报文。

组播地址:

如果是成员关系查询报文,即等于0.0.0.0

如果是成员加入报告报文,即等于想要加入的组播地址。






  结合上述格式,龙哥再抓个包给大家看,就会更加深刻了。






红色部分,我们可知,IGMP是基于IP之上进行封装的,协议号为2

在这,大家是不是能想到ICMP,也是基于IP之上的,协议号为1。不过与ICMP不同的是,IGMP消息仅局限于本地数据链路,为啥呢?  看图说话,TTL=1。


4、IGMPv1成员加入






例如,PC1想加入239.1.1.1这个组播组,就会发送IGMPv1的成员报告报文,目的IP地址为想要加入的组。路由器收到后,就会了解到该网段有组播组239.1.1.1的成员,为其生成组播转发表项(*,239.1.1.1) , *表示任意组播源。


路由器没收到 成员报告 :







当PC1 发送 成员报告报文,表示想加入239.1.1.1时,成员报告报文如下:








从报文,我们一下就知道了:

IGMPv1的成员报告报文类型为:0x12

报文的目的IP为 所要加入组的组播IP地址。



5、IGMPv1 成员维护。


值得一提的是,IGMPv1 里没有查询器这个东西,是依赖组播协议PIM选择产生的。






下面,我们通过配一下PIM来看看是否就有查询器了?










这样,IGMP 查询器就产生了,就可以看到路由器周期发送查询报文。










路由器缺省每隔60s发送一次查询报文,向224.0.0.1发生查询报文:问问大家,这个组还有成员吗?

(224.0.0.1 代表组内所有主机系统)

该网段的所有主机都能收到这个查询报文,同时会启动一个延时定时器,值为0到10s之间,随机取一个。谁先到期,就由谁来发送响应报文。这样做的好处,避免重复的响应报文。






PC1先到期,然后就会发生响应报文。






其他PC也会收到PC1的响应报文,就会清除延时定时器,同时他们不会发响应报文的。


如果130s内没有响应路由器,路由器就将该组对应的转发表项删除了。


6、IGMPv1 成员离开。






IGMPv1 没有定义离开报文,所以PC离开时,不会发任何报文,路由器无法感知到,只能通过继续周期查询,如果查了3次还是没有人响应,则认为该组没有成员了。

相关文章
|
XML Java 数据格式
肝了30天总结,史上最全面透彻的Spring核心原理分析和27道高频面试题
在阅读面试题之前,小伙伴们可以先看看我之前发布的系列文章,Spring核心原理包括源码分析和用30个类手写。面试刷题固然很重要,但是知其然知其所以然更重要。
2041 4
肝了30天总结,史上最全面透彻的Spring核心原理分析和27道高频面试题
|
Kubernetes Linux iOS开发
使用kubectl连接远程Kubernetes(k8s)集群
在自己本机当中安装kubectl并远程连接Kubernetes(k8s)集群。覆盖了Windows、MacOS和Linux操作系统,步骤超详细,在后面还有关于MacOS和Linux命令自动补全
1574 1
使用kubectl连接远程Kubernetes(k8s)集群
|
弹性计算 监控 安全
阿里云服务器究竟买什么配置?(常见配置解读)
阿里云服务器究竟买什么配置?(常见配置解读)云服务器类型、CPU内存、操作系统、公网带宽、系统盘存储、网络带宽选择、安全配置、监控等
成功解决TypeError: ‘encoding’ is an invalid keyword argument for this function
成功解决TypeError: ‘encoding’ is an invalid keyword argument for this function
|
11月前
|
人工智能
歌词结构的艺术:写歌词的技巧和方法深度剖析,妙笔生词AI智能写歌词软件
歌词是音乐的灵魂伴侣,其结构蕴含独特艺术魅力。掌握歌词结构技巧是创作者成功的关键。开头需迅速吸引听众,主体部分通过叙事、抒情或对话形式展开,结尾则点睛收尾。创作时可借助《妙笔生词智能写歌词软件》,利用 AI 功能优化歌词,提供丰富模板和案例,助力灵感涌现,轻松掌握歌词结构艺术。
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
SCoRe: 通过强化学习教导大语言模型进行自我纠错
谷歌研究人员提出了一种名为自我纠错强化学习(SCoRe)的新方法,旨在使大型语言模型(LLMs)能够在无需外部反馈的情况下即时纠正自己的错误。SCoRe通过在线多轮强化学习训练模型,解决了传统自我纠错方法的局限性。实验结果显示,SCoRe在数学问题求解和代码生成任务上显著提升了模型的自我纠错能力,相较于基准模型和其他方法表现出色。此外,SCoRe还可与其他推理优化技术结合,进一步提升模型性能。尽管存在迭代次数限制和计算成本等局限性,SCoRe为未来研究提供了新的方向,有望推动AI系统的自主性和适应性发展。
567 3
|
存储 监控 NoSQL
Redis是如何保证高可用的?
通过这些机制,Redis可以在主节点故障或其他异常情况下保持高可用性,确保数据的可靠性和可用性。不过,为了实现高可用性,需要仔细规划和配置Redis集群,并确保监控和故障恢复机制的可靠性。
447 6
|
12月前
|
人工智能 分布式计算 大数据
AI Native平台,跨越AI应用从创新到生产的鸿沟
2024年是AI应用的元年,以大模型为中心的 AI Native 应用大爆发正在从理想变成现实。云计算带来的应用创新潮,经历了虚拟机时代和云原生时代,正在全面拥抱以大模型为核心的 AI Native 阶段,推动大数据与AI的工作流前所未有地紧密结合。领先大模型、高效的AI计算平台和统一的大数据平台是 AI Native 应用广泛落地背后不可获缺的要素。 9月20日,2024云栖大会上,阿里云副总裁、阿里云计算平台事业部负责人汪军华宣布大数据AI平台全面升级,为 AI Native 应用大爆发提供坚实的平台支撑。
|
Java 数据库连接 开发者
深入理解Spring Boot中的@Bean注解
【4月更文挑战第22天】在 Spring Boot 应用开发中,@Bean 注解是一种非常重要的方法,用于在配置类中声明单个 Bean,从而使 Spring 容器能够管理这些 Bean。本篇技术博客将详细解析 @Bean 注解的概念,并通过具体的实战示例展示如何有效地使用这一注解优化应用的配置和管理
1173 5
|
Linux Windows
如何检测cpu是否支持avx2
【4月更文挑战第16天】如何检测cpu是否支持avx2
8799 0