当前位置: 首页 > news >正文

IGMP——组播成员端网络协议

目录

一.IGMP基本概念

(1)组播转发困境

(2)感知组播成员方式

(3)IGMP版本

二.IGMP各版本的区别与联系

(1)IGMPV1

1.普遍组查询报文

2.成员关系报告报文

3.IGMPV1报文格式

4.IGMPv1工作机制

5.IGMPV1查询器选举机制

6.IGMPV1离组机制

(2)IGMPv2

1.添加离组机制

2.添加查询器选举机制

(3)IGMPV3

1.添加特定源组查询报文

2.无专门Leave报文

三.IGMP特性

(1)IGMP Snooping——嗅探

(2)IGMP SSM Mapping

(3)IGMP代理


一.IGMP基本概念

用于组播成员端网络,感知组播组ID,组播成员位置。

(1)组播转发困境

组播工作原理是将组播信息发给一组特定组播成员,组播源发出组播数据时并不在意接收者的位置,所以需要IGMP感知组播成员的位置

(2)感知组播成员方式

静态——当然可以静态绑定,但这样不方便大型组网

动态——IGMP感知

接收者与最后一跳路由器建立维护组播成员关系。

(3)IGMP版本

有v1 v2 v3 三个版本

维护IGMP路由表项(组播组)和IGMP组表项(入接口)

组表项(*,G),用户向组播组发送IGMP加入报文,包括组ID,不知道出接口,*表示未知组播源

路由表项(S,G),用户加入组播组,包括组播组和出接口,S表示源IP地址

二.IGMP各版本的区别与联系

已知IGMP可发现组播成员,是组播网络的构成的一部分,那么IGMP如何实现发现成员网络,或者说如何获取出接口与组播组信息呐?

(1)IGMPV1

IGMPv1包含两个报文——普遍组查询报文,成员关系报告报文

1.普遍组查询报文

查询器(路由器)向共享网络中所有路由器和主机发送的查询报文,感知组播组成员

2.成员关系报告报文

成员向查询器(router)发,申请加入组,响应普通组查询报文

(查询器是发送组播查询报文的路由器,只有一台,如果最后一跳路由器有两个就选出一个作为查询器)

3.IGMPV1报文格式

version ——版本

type ——报文类型

0x11—普通组查询报文

0x12——成员关系报告报文

group address —— 加入组播组地址

4.IGMPv1工作机制

成员关系报告报文工作机制

(1)启动随机定时器(0-10S之间),PC1,PC2的定时器时间为随机数

        假设PC1为4S,PC2为6S

(2).PC1先倒计时结束,PC1先发送成员关系报告报文,是组播报文,

(3)PC2可以收到组播报文(PC1的成员关系报告报文),PC2倒计时结束时,发现PC1已经发         了,开启成员关抑抑制报文,不再发成员关系报告报文

5.IGMPV1查询器选举机制

无选举机制,依靠PIM选举

6.IGMPV1离组机制

不主动离组,静默离开

(2)IGMPv2

是在IGMPV1基础上建立的,普遍组查询报文和成员关系报告报文与IGMPV1相同

1.添加离组机制

IGMPV1静默离开,离组时间130S很长,IGMPV2进行改进

IGMPv2 是主动离开。

特定组查询报文与Leave报文一起完成成员主动离开

超过4S没收到成员关系报告报文就认为超时

2.添加查询器选举机制

(3)IGMPV3

IGMPV2都没有组播源的信息,属于ASM,

IGMPV3添加组播源信息,支持SSM网络

1.添加特定源组查询报文

成员关系报告报文有组播源信息

可能同组用户有不同源,取消成员抑制报文

2.无专门Leave报文

成员关系报告报文添加include (接收某些源)exclude(拒接某些源)

三.IGMP特性

(1)IGMP Snooping——嗅探

成员端网络希望最后一跳路由器按组发送组播数据,但最后一跳路由器与主机之间会有交换机,

交换机依靠泛洪传输数据,这就与广播处理的问题一样了

我们就利用IGMP Snooping——嗅探来解决这个问题

二层交换机侦听查询器与成员之间的IGMP报文,学习到组播组与出接口关系,在二层(数据链路层按需转发)

端口角色

路由器端口——二层组播朝向三层组播转发设备

成员端口——组播接口映射关系

关注成员离开,成员报告报文,普通查询报文

(2)IGMP SSM Mapping

用于不支持IGMPV3的情况

v1 v2无组播源信息,无法构建SSM网络

静态方式绑定组播组和组播源

(3)IGMP代理

有些情况下,成员离组或加组并不会改变组播路由表项或组播组表项,查询器却会收到报文,会处理大量组成员情况

就有了IGMP Proxy 代理接收成员关系报告报文,Leave,不影响组播表项的就不发给查询器

接口角色

主机接口——代理的接口,面向查询器,

路由器接口——面向组成员

这个要记清楚,与他名字的意思相反

相关文章:

IGMP——组播成员端网络协议

目录 一.IGMP基本概念 (1)组播转发困境 (2)感知组播成员方式 (3)IGMP版本 二.IGMP各版本的区别与联系 (1)IGMPV1 1.普遍组查询报文 2.成员关系报告报文 3.IGMPV1报文格式 4…...

Java break细节(标签)

Java break细节(标签)continue也可以使用标签 break是用来跳出循环的。 当有多重循环时,可以配合标签来使用,决定跳出那一重循环。 尽量不要使用标签 1、不代标签时,默认跳出 break 所在的那重循环: 可见在 i 3 时&#xff0…...

远程户外监控组网方案,工业4G路由器ZR2000

户外监控无人值守4G工业路由器组网应用涉及工业自动化、数据传输和远程监控的重要领域。在户外没有光纤的情况下,想要让监控或传感器等设备联网,仅需一台4G工业路由器即可解决。以下是关于远程监控户外组网的详细分析与应用: 物联网应用场景 …...

K8S集群中Yaml文件详解

目录 一、Yaml概述 二、Yaml基本语法 三、Yaml数据结构 四、K8S资源清单描述方法 五、api资源版本标签 六、Yaml文件示例详解 1.deployment.yaml文件详解 2.Pod yaml文件详解 3.Service yaml文件详解 七、Yaml文件相关操作 1.试运行 2.生成yaml格式 3.生成json格式…...

git-将老项目的分支推送到新项目的新分支上

1.克隆新项目&#xff1a;首先&#xff0c;将新项目的仓库克隆到本地。使用以下命令将新项目克隆到本地&#xff1a; git clone <新项目的仓库地址> 2.进入新项目目录&#xff1a;进入新项目的目录&#xff0c;使用以下命令&#xff1a; cd <新项目目录> 3.添加旧项…...

Unity之如何使用Localization来实现文本+资源多语言

前言 使用Unity实现本地化&#xff08;Localization&#xff09;功能 在当今的游戏开发中&#xff0c;支持多语言已成为一项基本需求。Unity作为主流的游戏开发引擎&#xff0c;提供了强大的本地化工具&#xff0c;使开发者能够方便地为游戏添加多语言支持。本文将介绍如何在U…...

ESP32 实时人脸检测系统:ESP32 与上位机通信(microPython框架)

实时人脸检测系统&#xff1a;ESP32 与上位机通信 在这篇博客中&#xff0c;我将介绍如何使用 ESP32 摄像头捕获图像&#xff0c;并通过 UDP 协议将图像传输到上位机进行实时人脸检测。我们将使用 Python 编程语言和 OpenCV 库来实现上位机端的人脸检测功能。 硬件与软件准备…...

Paddle 0-d Tensor 使用指南

Paddle 0-d Tensor 使用指南 1. 0-d Tensor 的定义 在深度学习框架中&#xff0c;Tensor 是存储和操作数据的基本数据结构。一个 Tensor 可以有 0 到任意多的维度,每个维度对应一个 shape 值。而 0-d Tensor&#xff0c;顾名思义&#xff0c;就是一个无任何维度的 Tensor&…...

Collection(一)[集合体系]

说明&#xff1a;Collection代表单列集合&#xff0c;每个元素&#xff08;数据&#xff09;只包含一个值。 Collection集合体系&#xff1a; Collection<E> 接口 (一&#xff09;List<E> 接口 说明&#xff1a;添加的元素是有序、可重复、有索引。 1. ArrayLi…...

58. 最后一个单词的长度

Show me the code class Solution {func lengthOfLastWord(_ s: String) -> Int {s.trimmingCharacters(in: .whitespacesAndNewlines).components(separatedBy: CharacterSet.whitespaces).last?.count ?? 0} }注意点 // print: ["", "", "&…...

深入理解ECMAScript:JavaScript的规范与实践

引言 在当今的Web开发领域&#xff0c;JavaScript几乎无处不在。它不仅在客户端编程中占据主导地位&#xff0c;而且在服务器端&#xff08;Node.js&#xff09;和移动应用开发中也越来越受欢迎。然而&#xff0c;JavaScript的核心并非由单一的公司或组织控制&#xff0c;而是…...

【深度学习】Transformer梳理

零、前言 对于transformer&#xff0c;网上的教程使用记号、术语不一 。 最关键的一点&#xff0c;网上各种图的简化程度不一 &#xff08;画个图怎么能这么偷懒&#xff09; &#xff0c;所以我打算自己手画一次图。 看到的最和善&#xff08;但是不是那么靠谱&#xff0c;我…...

C语言 | Leetcode C语言题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; int** generate(int numRows, int* returnSize, int** returnColumnSizes) {int** ret malloc(sizeof(int*) * numRows);*returnSize numRows;*returnColumnSizes malloc(sizeof(int) * numRows);for (int i 0; i < numRows; i) {re…...

以太坊钱包

以太坊钱包是你通往以太坊系统的门户。它拥有你的密钥&#xff0c;并且可以代表你创建和广播交易。选择一个以太坊钱包可能很困难&#xff0c;因为有很多不同功能和设计选择。有些更适合初学者&#xff0c;有些更适合专家。即使你现在选择一个你喜欢的&#xff0c;你可能会决定…...

Vue 怎么定义插件以及使用这个插件

Vue.js插件是一种增强Vue功能的方式&#xff0c;它允许你向Vue中添加全局功能&#xff0c;比如全局方法、指令、过滤器、混入等 创建Vue插件 export default {install(Vue, options) {// 添加全局方法或属性Vue.myGlobalMethod function() {console.log(全局方法调用, optio…...

SQL2017附加从其他电脑复制过来的mdf数据后出现【只读】无法写入数据

1. 尝试给它所在的文件夹的属性中的“只读”去勾&#xff0c;无果。 2. 其他文章提示是文件的问题。 该错误为文件权限错误&#xff0c;找到该数据库的 数据库文件 和 日志文件&#xff0c;在安全中添加 Authenticated Users 用户的权限&#xff0c;并设置 “完全控制”...

Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…...

如何运行大模型

简介 要想了解一个模型的效果&#xff0c;对模型进行一些评测&#xff0c;或去评估是否能解决业务问题时&#xff0c;首要任务是如何将模型跑起来。目前有较多方式运行模型&#xff0c;提供client或者http能力。 名词解释 浮点数表示法 一个浮点数通常由三部分组成&#xf…...

基于FPGA实现LED的闪烁——HLS

基于FPGA实现LED的闪烁——HLS 引言&#xff1a; ​ 随着电子技术的飞速发展&#xff0c;硬件设计和开发的速度与效率成为了衡量一个项目成功与否的关键因素。在传统的硬件开发流程中&#xff0c;工程师通常需要使用VHDL或Verilog等硬件描述语言来编写底层的硬件逻辑&#xff0…...

平常心看待已发生的事

本篇主要记录自己在阅读此篇文章&#xff08;文章链接&#xff1a; 这才是扼杀员工积极性的真正原因&#xff08;管理者必读&#xff09; &#xff09;和这两天京东的东哥“凡是长期业绩不好&#xff0c;从来不拼搏的人&#xff0c;不是我的兄弟”观点后的一些想法。 自己在微…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...