组播IGMP协议报文介绍

news2025/1/25 4:27:14

1 IGMP协议

1.1 定义

IGMP(Internet Group Management Protocol)是因特网协议家族中的一个组播协议,它共有三个版本:v1、v2和v3。

IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组成员离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。

以下是这三个版本的主要区别:
‌IGMPv1‌:
主要基于查询和响应机制来完成对组播组成员的管理。
包括两种类型的报文:
普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
成员报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。
没有专门定义离开组播组的报文,当主机离开某组播组时,不会发送报告报文。
路由器在一段时间未收到某组播组的报告报文后,会删除该组播组对应的组播转发项。
在这里插入图片描述
字段说明:
在这里插入图片描述

‌IGMPv2‌:

兼容IGMPv1,并增加了离开组的消息。
与IGMPv1相比,IGMPv2的变化如下:
除了普遍组查询报文和成员报告报文之外,IGMPv2新增了两种报文:
成员离开报文(Leave):成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。
特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
IGMPv2对普遍组查询报文格式也做了改进,添加了最大响应时间(Max Response Time)字段。此字段取值可以通过命令配置,用于控制成员对于查询报文的响应速度。
在这里插入图片描述
报文字段:
在这里插入图片描述

‌IGMPv3‌:

主要是为了配合SSM(Source-Specific Multicast)模型发展起来的,提供了在报文中携带组播源信息的能力。
增加了特定源组查询报文和成员特定源报告报文,使主机可以对组播源进行选择。
增强了主机的控制能力,主机在加入某组播组时,能够明确要求接收或拒绝来自某特定组播源的组播信息。
查询和报告报文的功能也得到了增强,例如IGMPv3的报告报文可以携带多个组记录。
在这里插入图片描述
报文说明:
在这里插入图片描述

综上所述,IGMP的三个版本在报文类型、离开组机制、查询器选举以及组播源选择等方面存在显著差异。
在这里插入图片描述

1.2 兼容性

三个版本在演进过程中对协议报文的处理是向后兼容的,因此尽管各个版本的协议报文格式不同,但是运行IGMP高版本的路由器可以识别低版本的IGMP报文。
v2版本的组播设备可以正确处理v1主机的加入,v3版本的组播设备可以正确处理v1和v2版本的主机加入。当组播设备收到低版本的主机的IGMP加入报文后会自动降低组播组的兼容版本到该主机对应的版本,并工作在该版本上。

2 查看设备的IGMP版本

android设备通过adb shell可以查看设备默认版本:

cat /proc/net/igmp

cat /proc/sys/net/ipv4/conf/eth0/force_igmp_version:值为0 表示最新版本

cat /proc/sys/net/ipv4/conf/wlan0/force_igmp_version

在这里插入图片描述
从上图可以看到该设备默认是V3版本的IGMP组播force_igmp_version为0

设置组播版本:
在有权限的设备上,可以强制修改走有线eth0的组播版本为V2,则设置force_igmp_version为2即可:

 echo 2 > /proc/sys/net/ipv4/conf/eth0/force_igmp_version

修改后,通过命令查看eth0网卡的组播协议版本是否修改成功:
在这里插入图片描述

3 IGMP组播网络包

通过wirehark工具抓包,过滤igmp,可看的igmp报文的版本号。
在机顶盒等android终端设备也可以通过tcpdump抓包:
用电脑开热点,电视连电脑热点,或者保证能再同一个网络下:然后执行下面命令
1、adb shell tcpdump -v -w /sdcard/t.pcap
2、adb pull /sdcard/t.pcap D:\winscp(存储路径不能是根目录,至少有一级文件夹,文件夹名字必须英文)
3、用wireshark工具查看。

如下图所示,为V3版本。
在这里插入图片描述
修改为V2版本后,抓包IGMP报文为V2版本:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hedfs和hive数据迁移后校验脚本

先谈论校验方法,本人腾讯云大数据工程师。 1、hdfs的校验 这个通常就是distcp校验,hdfs通过distcp迁移到另一个集群,怎么校验你的对不对。 有人会说,默认会有校验CRC校验。我们关闭了,为什么关闭?全量迁…

性能优化之动态加载

在过去近三十年的职业生涯里,有几年专注于运行时环境的开发与实现。在runtime中,动态加载技术是其中的基石之一。动态加载技术是指在系统运行过程中,根据需要把程序和数据从外存或网络加载到内存中的过程。其中,lazy loading&…

数据从前端传到后端入库过程分析

数据从前端传到后端入库过程分析 概述 积累了一些项目经验,成长为一个老程序员了,自认为对各种业务和技术都能得心应手的应对了,殊不知很多时候我们借助了搜索引擎的能力,当然现在大家都是通过AI来武装自己。 今天要分析的话题是…

【线性代数】列主元法求矩阵的逆

列主元方法是一种用于求解矩阵逆的数值方法,特别适用于在计算机上实现。其基本思想是通过高斯消元法将矩阵转换为上三角矩阵,然后通过回代求解矩阵的逆。以下是列主元方法求解矩阵 A A A 的逆的步骤: [精确算法] 列主元高斯消元法 步骤 1&am…

LabVIEW太赫兹二维扫描成像系统

使用LabVIEW设计太赫兹二维扫描成像系统。通过LabVIEW平台开发,结合硬件如太赫兹源、平移台、锁相放大器等,实现了高效、精准的成像功能。系统采用蛇形扫描方式,通过动态调整扫描参数,达到优化成像质量的目的。 ​ 项目背景 在非…

Quartus:开发使用及 Tips 总结

Quartus是Altera(现已被Intel收购)推出的一款针对其FPGA产品的综合性开发环境,用于设计、仿真和调试数字电路。以下是使用Quartus的一些总结和技巧(Tips),帮助更高效地进行FPGA项目开发: 这里写目录标题 使用总结TIPS…

Android 自定义View时四个构造函数使用详解

该文章我们以自定义View继承TextView为例来讲解 创建自定义View命名MyTextView,并使其继承TextView 1、自定义View时第一个构造函数 // 第一个构造函数主要是在Java代码中声明一个MyTextView时所用 // 类似这种(MyTextView myTextViewnew MyTextView(this);) // 不…

C#PaddleOCRSharp使用

using PaddleOCRSharp;namespace PaddleOCRSharpDemo {internal class Program{static void Main(string[] args){//中英文模型V3模型OCRModelConfig config null;//OCR参数OCRParameter oCRParameter new OCRParameter();oCRParameter.cpu_math_library_num_threads 6;//预…

vscode配置C/C++环境(详细步骤教程)

本章教程,主要介绍如何在vscode中配置c/c++环境的具体步骤。 一、安装mingw64 链接:https://pan.baidu.com/s/1fwS-CwC7dgIYJTanaINOhA?pwd=rdks 提取码:rdks 下载之后,配置将mingw64添加到系统环境变量中。 二、安装vscode插件 需要在vscode插件商店,安装c/c++插件 三、配…

隐私保护+性能优化,RyTuneX 让你的电脑更快更安全

RyTuneX 是一款专为 Windows 10 和 11 用户量身打造的系统优化工具,采用先进的 WinUI 3 框架开发,以其现代化的设计风格和强大的功能集合脱颖而出。这款工具不仅界面简洁美观,还提供了多样化的系统优化选项,旨在帮助用户最大化设备…

JAVA:Spring WebClient 的应用指南

1、简述 随着微服务架构的普及,服务间的 HTTP 通信需求也越来越多。Spring 提供的 WebClient 是 RestTemplate 的替代方案,支持响应式编程,具有非阻塞的特点,非常适合处理高并发的 HTTP 请求。本文将介绍 WebClient 的基本用法及…

如何给自己的域名配置免费的HTTPS How to configure free HTTPS for your domain name

今天有小伙伴给我发私信,你的 https 到期啦 并且随手丢给我一个截图。 还真到期了。 javapub.net.cn 这个网站作为一个用爱发电的编程学习网站,用来存编程知识和面试题等,平时我都用业余时间来维护,并且还自费买了服务器和阿里云…

深度学习 Pytorch 动态计算图与梯度下降入门

在上节末尾我们发现autograd.grad函数可以灵活进行函数某一点的导数和偏导数的运算,但微分运算只是AutoGrad模块中的一小部分功能,本节将继续讲解这个模块的其他常用功能,并在此基础上介绍另一个常用优化算法:梯度下降算法。 imp…

gitlab使用多数据库

1. 说明 默认情况下,GitLab 使用一个单一的应用数据库,称为主数据库。为了扩展 GitLab,您可以将 GitLab 配置为使用多个应用数据库。 设置多个数据库后,GitLab 将使用第二个应用数据库用于 CI/CD 功能,称为 CI 数据库…

Docker网段和服务器ip冲突导致无法访问网络的解决方法

若宿主机所在网络的网段为172.[17-31].xx.xx,则会与Docker本身内部网络间出现冲突,此时需要重新配置Docker默认地址池 一:查看docker的默认网段 route 二:修改docker的默认网段 etc/docker/daemon.json文件增加修改网段信息 {…

HTML<img>标签

例子 如何插入图片&#xff1a; <img src"img_girl.jpg" alt"Girl in a jacket" width"500" height"600"> 下面有更多“自己尝试”的示例。 定义和用法 该<img>标签用于在 HTML 页面中嵌入图像。 从技术上讲&#x…

leetcode_3092. 最高频率的 ID

https://leetcode.cn/problems/most-frequent-ids/description/ 看到这个数据范围 最极端情况 如果nums全为一个数 并且数量取到最大 那么范围是10的10次方 需要longlong储存 这题主要运用了哈希表配合multiset实现 哈希表主要用作存储某个数的出现次数 mst则用于记录出现次…

01学习nodejs的准备工作

01学习nodejs的准备工作 1.回顾与思考1.1为什么JavaScript可以在浏览器中被执行1.2为什么JavaScript可以操作DOM和BOM&#xff1f;1.3浏览器中的JavaScript运行环境1.4JavaScript 能否做后端开发 2.Nodejs简介2.1什么是nodejs2.2 Node.js中的 JavaScript 运行环境2.3 Node.js可…

2024年度总结-CSDN

2024年CSDN年度总结 Author&#xff1a;OnceDay Date&#xff1a;2025年1月21日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 文章目录 2024年CSDN年度总结1. 整体回顾2…

2024年度技术总结——MCU与MEMS和TOF应用实践

引言 2024年对我来说是技术成长与突破的一年。在这一年里&#xff0c;我不仅在技术领域拓展了深度和广度&#xff0c;还通过与客户合作的实际项目&#xff0c;成功实现了从单一MCU到MCU、MEMS与TOF技术融合的跨越。这一过程中&#xff0c;我深刻认识到&#xff0c;技术的进步不…