组播基础-2-IGMP协议
文章目录
- IGMP
- IGMPv1
- IGMPv2
- IGMPv3
- IGMP总结
- IGMP Snooping
IGMP
运行于主机和路由器之间
因特网组管理协议,TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在接收者与其他直接相邻的组播路由器之间建立、维护组播组成员关系
- 负责组播成员管理,运行在主机和组播路由器之间
- 主机侧:通过IGMP向路由器通告组成员关系
- 路由器侧:通过IGMP协议维护组成员关系
- 所有IGMP版本都支持ASM模型 - IGMPv3可以直接应用于SSM模型,而 IGMPv1 和 IGMPv2 则需要 SSM-Mapping 技术的支持 - 运行 IGMP 高版本的路由器可以识别低版本的成员报告(向前兼容)
组播组管理协议工作机制:
- 主机加入或离开组播组
- 路由器维护组播组
- 查询器选举
- 成员报告抑制
IGMPv1
定义基本的组成员查询和报告过程
类型
- 成员关系查询 0x11
- 成员关系查询 0x12
组地址
- 当一个成员关系报告正被发送时,组地址字段包含组播地址
- 当用于成员关系查询时,本字段为0,并被主机忽略
路由器周期性发送成员关系查询,默认查询周期为 60s,
成员关系报告的发送可以被动发送也可主动发送
被动发送:主机收到成员关系查询消息后,发送成员关系报告
主动发送:主机主动发送成员关系报告工作机制
- 普遍组查询与响应
- 响应抑制机制(当发现已经有人向自己感兴趣的组发送过数据之后,本地这边就不会再次发送报告)
每个收到查询的主机会启动一个计时器,默认0——10秒随机值,超时后发送报告
静默离开
记时130秒,即组成员关系超时时间=IGMP普遍查询消息发送间隔 x 健壮系数 + 最大查询响应时间
查询器选举
查询器依靠组播路由协议PIM,PIM中选择的DR会充当IGMPv1里面的查询器
IGMPv2
IGMPv2为默认版本,在IGMPv1的基础上添加了查询器选举和离开组机制
类型
- 成员关系查询 0x11
常规查询:用于确定哪些组播组有效,该组播组是否还有成员在使用,常规查询地址全零表示
指定组查询:用于查询特定的组播组是否还有组成员,在一台设备发送离开报文后进行特定查询该组是否还有使用者两次- 版本2的成员关闭报告 0x16;版本1的成员关系报告 0x12
- 离开组信息 0x17
组地址
- 在成员查询消息中,发送一个常规查询时组地址设为0,当发送一个特定组查询时,则应设置为组的地址
- 在成员报告或离开组的消息中,组的地址保留了要报告或要离开的地址
IGMPv2增加了最大响应时间字段,以动态地调整主机对组查询报文的响应时间
工作机制
- 独立的查询器选举机制
- 存在多个组播源的时候IP地址小的获胜,成为查询者,进行普遍组查询
IGMPv3
成员可以指定接受或不接受某个组播源的报文
- 服务于 SSM 模型
- 增加了主机的控制能力,对组播源进行过滤
- 取消了成员报告抑制机制
- 过滤模式包含 Include 和 Exclude
工作机制
- 周期性地向 224.0.0.1 发送普通查询
- 接受端发送成员报告,指出希望加入或拒绝某些组播发送的数据
- 独立的查询器选举机制
- 存在多个组播源的时候IP地址小的获胜,成为查询者,进行普遍组查询
IGMPv3主机发送类型
组数和地址数为1
- Mode Is Include:接收从指定源列表发往该组播组的数据
- Mode Is Exclude:不接收源地址列表中包含的源发往该组的组播数据
- Change To Include Mode:表示组播组与源列表之间的对应方式由EXCLUDE转换到INCLUDE
- Change To Exclude Mode:表示组播组与源列表之间的对应方式由INCLUDE转换到EXCLUDE
- Allow New Source:现有基础上,还希望从某些组播源接收组播数据
- Block Old Sources:现有基础上,不再希望从某些组播源接收组播数据
特定源组查询
无离开报文,通过这种方式进行离开
- 针对某个源某个组进行特定组的查询,确保组还有成员在使用
IGMP总结
机制 IGMPv1 IGMPv2 IGMPv3 查询器选举 依靠其他协议 自己选举 自己选举 普遍组查询 支持 支持 支持 成员报告报文 支持 支持 支持 特定组查询报文 不支持 支持 支持 成员离开方式 静默离开 主动发送离开报文 未定义专门的离开报文,通过特定类型的报告报文传达 特定源、组查询报文 不支持 不支持 支持 指定组播源 不支持 不支持 支持 可识别协议报文 IGMPv1 IGMPv1 IGMPv2 IGMPv1 IGMPv2 IGMPv3 ASM模型 支持 支持 支持 SSM模型 需要IGMP Mapping 需要IGMP Mapping 支持
IGMP Snooping
组播数据在二层被泛洪
- 网络资源浪费
- 存在安全隐患
IGMP Snooping概述
- 解决组播报文在二层泛洪的问题
- 运行在数据链路层,是二层交换机上的组播约束机制,用于管理和控制组播组
- 通过监听 IGMP 报文,建立组播MAC地址表
端口角色
路由器端口:接受组播数据----上游接口
- 收到源地址不为 0.0.0.0 的 IGMP 普遍组查询报文或PIM Hello 报文的接口都将被叫做动态路由器端口
- 手工配置的路由器端口叫做静态路由器端口
成员端口:发送组播数据----下游接口
- 收到 IGMP Report 报文的接口,叫做动态成员端口
- 手动配置的成员叫做静态成员端口
工作原理
启用 IGMP Snooping 机制后,查询响应仅向路由器接口转发
模拟器环境会出现BUG,报告可以,但是普遍组查询和离开报文会被隔离,这种情况要想实现 IGMP 操作就需要在组管理设备上配置静态的 IGMP表项
相关文章:
组播基础-2-IGMP协议
文章目录 IGMPIGMPv1IGMPv2IGMPv3IGMP总结IGMP Snooping IGMP 运行于主机和路由器之间 因特网组管理协议,TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在接收者与其他直接相邻的组播路由器之间建立、维护组播组成员关系 负责组播成员管理…...
基于Springboot+Vue的视频点播系统设计与实现登录 (含源码数据库)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…...
执行力怎么培养?
执行力怎么培养? 并行:适合在初期养成习惯,不抱对结果的期望天才就是强迫症:适合中期修身:适合高级 并行:适合在初期养成习惯,不抱对结果的期望 在你开始做任何事情的时候,不要一开…...
Power apps:一次提交多项申请
1、添加一个Form,导入sharepoint列表,添加确认,继续,取消按钮 2、在页面的onvisible属性中添加 Set(applynumber,Last(付款申请表).申请编号1); #定义一个申请编号变量,每次申请,就将列表最后一个…...
Oracle数据库物理结构操作管理
实验步骤 (1)查询数据库初始化参数中参数名包含sga的参数的名称、值和描述信息。 SQL> select name,value,description from V$PARAMETER where name like %sga%; (2)设置sga_max_size的大小为1G SQL> alter system set sg…...
Python自然语言处理之spacy模块介绍、安装与常见操作案例
文章目录 spacy模块介绍安装spacy常见操作案例及代码1. 加载模型并处理文本2. 词性标注3. 命名实体识别4. 依存句法分析5. 可视化(在Jupyter Notebook中) spacy模块介绍 spacy是一个强大的Python库,用于自然语言处理(NLP…...
DSPy101
DSPy 介绍 DSPy(Declarative Self-improved Language Programs in Python) 是一个用于系统化和增强在流水线内使用语言模型的框架,它通过数据驱动和意图驱动的系统来优化大型语言模型(LLM)的使用。 DSPy 的核心是模块…...
网格交易策略:从原理、应用到实战Python回测
01 引言 随着金融市场的快速发展,量化交易成为投资者追求收益的一种重要手段。在众多的量化交易策略中,网格交易策略(Grid Trading Strategy)因其简单易用、风险控制灵活等优点而备受青睐。网格交易策略的核心思想是“低买高卖”&…...
软考论文《论大数据处理架构及其应用》精选试读
论文真题 模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型…...
fatfs API使用手册
配置 /*---------------------------------------------------------------------------/ / Configurations of FatFs Module /---------------------------------------------------------------------------*/#define FFCONF_DEF 80286 /* Revision ID *//*---------------…...
9.23作业
仿照string类,自己手动实现 My_string 代码如下 MyString.h #ifndef MYSTRING_H #define MYSTRING_H #include <iostream> #include <cstring>using namespace std;class My_string { private:char *ptr; //指向字符数组的指针int size; …...
Unity3D 房间去重叠化算法详解
前言 在Unity3D游戏开发中,经常需要生成和处理多个房间的场景,特别是在地牢生成、房屋布局或迷宫设计等应用中。为了确保生成的房间不会重叠,我们需要一种有效的去重叠化算法。以下将详细介绍该算法的原理和代码实现。 对惹,这里有…...
mybatis 配置文件完成增删改查(五) :单条件 动态sql查询,相当于switch
文章目录 单条件 动态sql查询写测试方法 疑问总结 单条件 动态sql查询 <select id"selectByConditionBySingle" resultMap"brandResultMap">.select *from tb_brandwhere<choose>/*相当于switch*/<when test"status ! null">…...
全球IP归属地查询-IP地址查询-IP城市查询-IP地址归属地-IP地址解析-IP位置查询-IP地址查询API接口
IP地址城市版查询接口 API是指能够根据IP地址查询其所在城市等地理位置信息的API接口。这类接口在网络安全、数据分析、广告投放等多个领域有广泛应用。以下是一些可用的IP地址城市版查询接口API及其简要介绍 1. 快证 IP归属地查询API 特点:支持IPv4 提供高精版、…...
Vue3+FastAPI中Token的刷新机制(含代码示例)
在Vue3和FastAPI的应用中,token刷新机制通常涉及以下几个步骤: 登录过程:用户登录时,后端FastAPI验证用户信息,验证通过后生成一个访问令牌(access token)和一个刷新令牌(refresh t…...
【GAN 图像生成】
理论知识学习: PART 1: 生成对抗网络GAN 深度学习模型,用于生成数据 对抗式训练,生成器v判别器 DCGAN>WGAN>StyleGAN技术不断进化 GAN在艺术创作。数据增强领域应用越来越广泛 应用: GAN在图像合成&#x…...
【自然语言处理】词嵌入模型
词嵌入(Word Embedding) 是一种将词汇表示为实数向量的技术,通常是低维度的连续向量。这些向量被设计为捕捉词汇之间的语义相似性,使得语义相似的词在嵌入空间中的距离也更近。词嵌入可以看作是将离散的语言符号(如单词…...
了解针对基座大语言模型(类似 ChatGPT 的架构,Decoder-only)的重头预训练和微调训练
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 随着自然语言处理(NLP)技术的飞速进步,基于 Transformer 架构的大语言模型在众多任务中取得了显著成就。特别是 Decoder-only 架构,如 GPT 系列模型&…...
cmake如何在编译时区分-std=c++17和-std=gnu++17?检查宏
如何在编译时区分-stdc17和-stdgnu17?检查宏?-腾讯云开发者社区-腾讯云 我正在使用__int128扩展的g。-stdc17的问题是,一些C库不具备对该扩展的全部支持(即std::make_unsigned<>失败)。当使用-stdgnu17时,它工作得很好。 我…...
速通数据结构与算法第七站 排序
系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 4 速通…...
用C++‘数1’这道题,带你彻底搞懂整数位分离的循环技巧(附避坑点)
用C‘数1’这道题,带你彻底搞懂整数位分离的循环技巧(附避坑点) 在编程学习的道路上,整数位分离是一个看似简单却暗藏玄机的基础操作。许多初学者在解决"统计数字中1的个数"这类问题时,往往能写出大致正确的…...
如何快速上手Unitree Go2 ROS2 SDK:模块化机器人开发完整指南
如何快速上手Unitree Go2 ROS2 SDK:模块化机器人开发完整指南 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk Unitree Go2 ROS2 SDK是为宇树科技GO2系列…...
FreeRTOS在RISC-V上的第一个main.c:从创建任务到理解Hook函数的完整流程
FreeRTOS在RISC-V上的第一个main.c:从创建任务到理解Hook函数的完整流程 当你在RISC-V平台上第一次打开main.c文件准备编写FreeRTOS应用时,可能会被那些看似神秘的函数和配置选项所困扰。这篇文章将带你从零开始,逐步构建一个完整的FreeRTOS应…...
HX711终极指南:如何用24位ADC打造专业级电子秤系统
HX711终极指南:如何用24位ADC打造专业级电子秤系统 【免费下载链接】HX711 An Arduino library to interface the Avia Semiconductor HX711 24-Bit Analog-to-Digital Converter (ADC) for Weight Scales. 项目地址: https://gitcode.com/gh_mirrors/hx/HX711 …...
3个理由告诉你:为什么这款轻量级内存管理工具Mem Reduct能让你的Windows电脑飞起来?
3个理由告诉你:为什么这款轻量级内存管理工具Mem Reduct能让你的Windows电脑飞起来? 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitc…...
Windows网络测速终极指南:iperf3免费工具完整教程
Windows网络测速终极指南:iperf3免费工具完整教程 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 还在为网络速度不稳定而烦恼吗&#x…...
3分钟快速解锁B站缓存视频:m4s转MP4的完整教程
3分钟快速解锁B站缓存视频:m4s转MP4的完整教程 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站下架的珍贵视频感到惋惜…...
117.YOLOv5/v8数学原理+CSPDarknet架构,CUDA117环境一键部署
摘要 YOLO(You Only Look Once)系列算法是目标检测领域最主流的实时检测框架,其核心思想是将目标检测任务转化为一个端到端的回归问题。 本文从数学原理出发,系统阐述YOLOv5/v8的架构演进与核心机制,并提供一个从数据准备、模型训练到ONNX部署的完整可运行案例。 文章所有…...
CoverM深度解析:如何高效配置PacBio HiFi宏基因组数据覆盖率分析的完整指南
CoverM深度解析:如何高效配置PacBio HiFi宏基因组数据覆盖率分析的完整指南 【免费下载链接】CoverM Read alignment statistics for metagenomics 项目地址: https://gitcode.com/gh_mirrors/co/CoverM CoverM作为一款专业的宏基因组读长覆盖率计算工具&…...
实战指南:如何用FanControl彻底解决显卡风扇异常与NvApiWrapper兼容性问题
实战指南:如何用FanControl彻底解决显卡风扇异常与NvApiWrapper兼容性问题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com…...
