首页 > 其他分享 >计算机网络-IGMPv3的工作原理

计算机网络-IGMPv3的工作原理

时间:2024-07-18 13:27:07浏览次数:9  
标签:IGMPv3 组播源 组播 报文 查询 计算机网络 原理 成员

一、SSM模型带来的挑战

出于安全考虑,组播组成员可以只选择接收从特定组播源发来的组播数据。组成员需要告知组播网络,接收来自哪些特定组播源的组播流量。

IGMPv1与IGMPv2的报文中均无法携带组播源的信息,因此无法配合SSM使用(可使用SSM Mapping功能解决这个问题)。

SSM模型带来的挑战 回顾我们学习过的IGMPv1和IGMPv2,组播组成员通过成员关系报告在组播网络中告诉查询器自己要加入组G1,查询器生成对应的IGMP表项,但是在一个组播网络中是可以有多个组播源的,V1和V2无法指定在一个组播网络中指定接收特定组播源的报文数据。

IGMPv3主要是为了配合SSM(Source-Specific Multicast)模型发展起来的,提供了在报文中携带组播源信息的能力,即主机可以对组播源进行选择。

SSM模型的组播地址范围:232.0.0.0~232.255.255.255。SSM Mapping功能将在IGMP特性章节介绍。

二、IGMPv3工作原理

2.1 IGMPv3简介

IGMPv3大部分工作机制与IGMPv2类似:

  • 查询器选举机制一致:IP地址小的为查询器。
  • 使用普遍组查询报文查询组成员加组信息。
  • 使用特定组查询报文查询特定组播的成员存活情况。

IGMPv3需要支持上报组播源信息,与IGMPv2相比IGMPv3的变化如下:

  • IGMPv3查询报文除了包含普遍组查询报文和特定组查询报文,还新增了 特定源组查询报文(Group-and-Source-Specific Query)。
  • IGMPv3成员关系报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。
  • 由于同个组播组的不同成员可能希望接收来自不同源的组播,因此IGMPv3无需成员关系报告报文抑制机制。
  • IGMPv3 没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。

2.2 IGMPv3报文

IGMPv3报文有查询报文成员关系报告报文

IGMPv3的查询报文共有三类:

  • 普遍组查询报文(General Query)。该报文作用与IGMPv1,IGMPv2中的普遍组查询报文作用一致。
  • 特定组查询报文(Group-Specific Query) 。该报文作用与IGMPv2中的特定组查询报文作用一致。
  • 特定源组查询报文(Group-and-Source-Specific Query)。该报文用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
IGMPv3查询报文格式
IGMPv3查询报文格式

IGMPv3查询报文重要字段说明:

  • Type:报文类型,取值为0x11。
  • Max Response Code:最大响应时间。成员主机在收到IGMP查询器发送的普遍组查询报文后,需要在最大响应时间内做出回应。
  • Group Address:组播组地址。在普遍组查询报文中,该字段设为0;在特定组查询报文和特定源组查询报文中,该字段为要查询的组播组地址。
  • Number of Sources:报文中包含的组播源的数量。对于普遍组查询报文和特定组查询报文,该字段为0;对于特定源组查询报文,该字段非0。此参数的大小受到所在网络MTU大小的限制。
  • Source Address:组播源地址,其数量受到Number of Sources字段值大小的限制。

IGMPv3成员关系报告报文:

IGMPv3成员关系报告报文除了通告组成员的加组信息外,还能通告组成员希望接收的组播源信息。通告组播源主要有两种模式:

  • INCLUDE:希望接收来自特定组播源的组播流量
  • EXCLUDE:希望过滤来自特定组播源的组播流量

成员关系报告报文中的组播组信息和组播源信息的关系会记录在组记录(Group Record)字段,发送给IGMP查询器。IGMPv3成员关系报告报文的目的地址为224.0.0.22,报文格式如下:

IGMPv3成员关系报告报文
IGMPv3成员关系报告报文

在IGMPv3中一个成员关系报告报文可以携带多个组播组信息,而之前的版本一个成员关系报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。

IGMPv3成员关系报告报文重要字段说明:

  • Type:报文类型,取值为0x22。
  • Number of Group Records:报文中包含的组记录的数量。
  • Group Record:组记录。

Group Record重要字段说明:

  • Record Type
  • Number of Sources:本记录中包含的源地址数量。
  • Multicast Address:组播组地址。
  • Sources Address:组播源地址。

2.3 IGMPv3加组机制

IGMPv3组成员加组机制与IGMPv2类似,但有以下不同:

  • IGMPv3的成员关系报告报文能够携带组播源信息。
  • IGMPv3成员关系报告报文没有成员关系报告报文抑制机制。

IGMPv3组成员加组流程如下:

1、查询器发送普遍组查询报文。

IGMP查询器发送普遍组查询报文
IGMP查询器发送普遍组查询报文

2、组播组成员回复成员关系报告报文,发往224.0.0.22,这样查询器接能够知道哪个组播组成员需要加入的组播组以及特定的组播源服务器,形成IGMP表项。

组播组成员发送成员关系报告
组播组成员发送成员关系报告

2.4 IGMPv3组成员离组机制

IGMPv3没有专门的成员离开报文,成员离开需要借助组成员关系报告实现。

IGMP查询器在收到改变源组对应关系的成员关系报告后,会发送特定源组查询报文,确认是否还有组成员存在。

IGMPv3组成员离组
IGMPv3组成员离组
  1. 组成员发送改变源组关系的成员关系报告
  2. IGMP查询器收到特定的成员关系报告
  3. IGMP查询器返回特定源组查询报文,询问是否还有成员接收特定源组的组播流量
  4. 如果特定源组还有成员会发送关系报告报文则保留IGMP表项,如果没有成员则定时器过期删除IGMP表项

总结:IGMPv3的特点是主机可以对组播源进行选择。IGMPv3报文有查询报文成员关系报告报文。IGMPv3没有专门的成员离开报文,成员关系报告报文组播目的地址224.0.0.22。

IGMP各版本差异:

机制IGMPv1IGMPv2IGMPv3
查询器选举依靠其他协议自己选举自己选举
成员离开方式静默离开主动离开主动离开
特定组查询不支持支持支持
指定源、组不支持不支持支持
版本兼容性IGMPv1IGMPv1、IGMPv2

如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子 不喜欢热闹的孩子

本文由 mdnice 多平台发布

标签:IGMPv3,组播源,组播,报文,查询,计算机网络,原理,成员
From: https://blog.csdn.net/weixin_43483442/article/details/140513667

相关文章

  • 优化原理 (1)高斯牛顿 线性
        /**Gauss-Newtoniterationmethod*author:Davidwang*date:2020.08.24*/#include<iostream>#include<chrono>#include<opencv2/opencv.hpp>#include<Eigen/Core>#include<Eigen/Dense>usingnamespacestd;u......
  • 优化原理 (1)高斯牛顿 线性
          增量方程   #include<iostream>#include<Eigen/Core>#include<Eigen/Dense>#include<Eigen/Geometry>#include"sophus/se3.hpp"#include"sophus/so3.hpp"intmain(void){//优化变量为李代数se(3)的平移向......
  • 浏览器缓存:强缓存与协商缓存实现原理有哪些?
    1、强缓存:设置缓存时间的,那么在这个时间内浏览器向服务器发送请求更新数据,但是服务器会让其从缓存中获取数据。可参考:彻底弄懂强缓存与协商缓存-简书2、协商缓存每次都会向浏览器询问,那么是怎么询问的呢?cache-control:no-cache,每次请求都回询问服务端,那么是如何询问?当浏......
  • SpringBoot 跨域请求处理全攻略:从原理到实践
    文章目录SpringBoot如何处理跨域请求?你能说出几种方法?跨域请求概述跨域解决方案1.使用@CrossOrigin注解2.使用WebMvcConfigurer配置类3.使用过滤器(Filter)4.使用SpringSecurity处理CORS5.使用SpringCloudGateway处理CORS补充1.预检请求(PreflightRequests)2.其......
  • 在Linux中,DDOS攻击的原理是什么?
    在Linux环境中,DDoS攻击(DistributedDenialofService,分布式拒绝服务攻击)的原理是通过控制多个计算机或设备(通常被称为“僵尸网络”或“僵尸军团”)向目标服务器或网络设备发送大量请求,以消耗目标系统的资源,导致其无法正常处理合法的请求,从而使服务不可用或系统崩溃。以下是DDoS攻......
  • 在Linux中,tcp三次握⼿的过程及原理?
    在Linux中,TCP(传输控制协议)的三次握手是建立可靠连接的重要过程。这一机制确保了客户端和服务器之间能够安全、有序地交换数据。下面将详细阐述TCP三次握手的过程及原理:一、TCP三次握手的过程TCP三次握手过程涉及客户端(通常称为“主动打开方”)和服务器(通常称为“被动打开方”)之间......
  • 万字总结LightGBM原理、核心参数以及调优思路(上篇)
    万字总结LightGBM原理、核心参数以及调优思路(上篇)在机器学习领域,LightGBM凭借其卓越的速度和准确性,迅速成为众多数据科学家和算法工程师的首选算法之一。作为一款基于梯度提升框架的高效机器学习工具,LightGBM在处理大规模数据集时表现出色,尤其适用于需要快速模型训练和预测......
  • linux进程——父子进程层面的PID,fork的原理与理解
        前言:本篇内容主要讲解进程中系统调用fork和父子进程的概念与原理,想要系统学习linux进程的友友们只管看本篇文章是不行的。还要学习一些linux进程的周边知识以及linux进程其他方面的知识,博主的linux专栏中已经加入了这些文章方便友友们进行学习。感兴趣或者想要......
  • 【计算机网络中的TCP/IP】TCP/IP协议中的tcp与udp
    目录简单介绍一些TCP/IP协议TCP/IP协议的组成TCP/IP协议中tcp与udp的区别1.简单介绍一下TCP/IP协议         TCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指......
  • 膜片钳的基本概念—电压钳原理详解
    什么是电压钳  在膜片钳技术出现之前,其实就存在电压钳技术,他的原理是通过向细胞内注射变化的电流,抵消离子通道开放时所产生的离子流,从而将细胞膜电位固定在某一数值,即钳制电压,记录电流。通俗点就是,将细胞上的电压保持为一个我们设定的电压值,同时记录跨膜电流。  作用主要是......