linux 查看igmp类型,Linux IGMP 学习笔记 之一 IGMP协议格式

linux 查看igmp类型,Linux IGMP 学习笔记 之一 IGMP协议格式一、IGMP定义及分类IGMP:INTERNET组管理协议,与广播最大的不同是,IGMP允许每一个网络设备决定是否参与到一个特定的多播群组中。IGMP的ip地址,组播ip地址的范围为224.0.0.0-239.255.255.255。其中224.0.0.1代表子网上的所有计算机,224.0.0.2代表子网上一、IGMP定义及分类IGMP:INTERNET组管理协议,与广播最大的不同是,IGMP…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、IGMP定义及分类 IGMP:INTERNET组管理协议,与广播最大的不同是,IGMP允许每一个网络设备决定是否参与到一个特定的多播群组中。 IGMP的ip地址,组播ip地址的范围为224.0.0.0-239.255.255.255。其中224.0.0.1代表子网上的所有计算机,224.0.0.2代表子网上

一、IGMP定义及分类

IGMP:INTERNET组管理协议,与广播最大的不同是,IGMP允许每一个网络设备决定是否参与到一个特定的多播群组中。

IGMP的ip地址,组播ip地址的范围为224.0.0.0-239.255.255.255。其中224.0.0.1代表子网上的所有计算机,224.0.0.2代表子网上的所有路由器。另外,多播ip地址只可作为目的地址,而且不能生成关于多播地址的差错报文。在上几节分析icmp协议时,代码在接收icmp echo request包后,只有允许对多播地址的请求包的回复时才会对多播地址进行回复,linux中默认是不回复多播echo请求的,只有用户强制配置回复后,才会对多播echo请求进行回复。

IGMP的mac地址为01-00-5e-xx-xx-xx,其中后23bits是ip地址的低23bits。从这也说明了只要知道一个多播ip地址,即可换算出其mac地址,不需要通过arp请求获取mac地址。

在具体实现功能时,又分为IGMP SNOOPING与IGMP PROXY两种。

对于IGMP SNOOPING这是在二层实现组播数据限制的一个功能。对于一个路由器或者2层switch,当lan层的一个端口发送一个IGMP report报文加入一个组播组后,如果没有开启IGMP SNOOPING,则数据会flood到所有lan側端口,这样会增加网络负载。如果开启了IGMP SNOOPING,路由器或者2层switch就会分析IGMP报文,为端口和IGMP组播组地址建立映射关系,这样下行的组播流数据就只会转发到加入组播组的端口,而不会flood到所有桥端口。

对于IGMP PROXY,主要是拦截lan側pc发送的igmp报文,其在wan側作为客户端相应上行路由的查询操作,而在lan側则作为服务端定期发送查询报文。

当lan側加入的组播组在IGMP PROXY设备上没有相应的组播路由时,才会给上层发送组播加入报文,当lan側加入的组播组在IGMP PROXY设备上已经存在时,则无需再将加入报文转发出去。这样不仅能够达到有效抑制二层组播泛滥的问题,且能更有效的获取和控制用户信息,降低网络负载。

二、IGMP的格式

IGMP V1

a)成员关系查询

Version

Type

Un used

CheckSum

Multicast ip address

Version:1

Type:0x11

Multicast ipaddress:设置为0,因为其只支持通用查询

b)成员关系报告

Version

Type

Un used

CheckSum

Multicast ip address

Version:1

Type:0x12

Multicast ip address:要加入的组播组地址

在IGMP V1中,没有专门定义离开组播组的报文,所以组播组路由器是基于超时的机制来发现没有成员的组播组的。

IGMPV2

a)成员关系查询

TYPE(0x11)

Max Resp Time

CheckSum

Multicast ip address

MaxResp Time:最大回复时间,对于成员关系查询报文,需要设置该时间,组播组成员收到成员关系查询后,会根据该值来确定回复时间。

有两种成员关系查询报文:通用成员关系查询与特定组成员关系查询。

对于通用成员关系查询,需要将Multicastip address设置为0;对于特定组成员关系查询,需要将Multicast ip address值设置为要查询的组播组地址。

其中ip头部中的目的地址为224.0.0.1或者要查询的组播组地址

b)成员关系报告

TYPE(0x16)

Max Resp Time

CheckSum

Multicast ip address

MaxResp Time:最大回复时间,此处设置为0。

需要将Multicastip address值设置为加入的组播组地址。

c)离开组消息

TYPE(0x17)

Max Resp Time

CheckSum

Multicast ip address

MaxResp Time:最大回复时间,此处设置为0。

需要将Multicastip address值设置为离开的组播组地址。其中ip头中的目的地址设置为224.0.0.2或者要离开的组播组地址

查询器机制:共享网段上组播路由器的选举机制:同一网段上有多个路由器时,具有最新ip地址的组播路由器充当查询器。

IGMP V3

其在继承了v1、v2的基础上,增加了以下功能:

1)  支持源过滤

2)  查询报文中的最大查询响应时间增加

3)  增加了对特定源组的查询

a)      成员关系查询

TYPE(0x11)

RESP CODE

CheckSum

Multicast ip address

RES

S

QRV

QQIC

源地址数

源地址1

源地址2

源地址3

RESP CODE:最大响应时间

Multicast ip address:群组地址

RES:保留

S:禁止路由器处理位

QRV:发送方发送该报文的次数(QRV-1次)

QQIC:查询报文发送间隔时间

源地址数:记录源地址的数量,用于增加的特定源组查询

b)成员关系报告

TYPE(0x22)

保留

CheckSum

保留

保留

群组记录数

群组1

群组2

群组3

群组的格式如下:

记录类型

0

源地址数

多播地址

源地址1

源地址2

源地址3

。。。

源地址3

记录类型:

1MODE_IS_INCLUDE

2        MODE_IS_EXCLUDE

3        CHANGE_TO_INCLUDE_MODE

4        CHANGE_TO_EXCLUDE_MODE

5        ALLOW_NEW_SOURCE

6        BLOCK_OLD_SOURCE

其ip头部中的目的地址为224.0.0.22

至此完成IGMP协议格式的分析,明天开始分析LINUX IGMP SNOOPING实现

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193955.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • django验证码登录_实名认证验证库中无此信息

    django验证码登录_实名认证验证库中无此信息djoser是什么?作用:Django认证系统的REST实现。djoser库提供了一组DjangoRestFramework视图,用于处理注册、登录、注销、密码重置和帐户激活等基本操作。它适用于

    2022年7月31日
    2
  • azkaban配置依赖_azkaban安装

    azkaban配置依赖_azkaban安装1.下载Azkaban1.1登陆Azkaban的官网:https://azkaban.github.io/点击Downloads,如图示:1.2点击之后,在跳转的页面中选择Releases,进入页面选择相应的版本下载,这里选择的版本是3.70.0版本,点击“Sourcecode(tar.gz)”下载。1.3选择自己要下载的源码,下载2.环境准备2.1在安装之前要安装jdk,…

    2025年7月7日
    0
  • matlab矩阵求逆矩阵非方阵_matlab验证逆矩阵出问题

    matlab矩阵求逆矩阵非方阵_matlab验证逆矩阵出问题matlab矩阵求逆矩阵因为所以该矩阵可逆,根据,其中得到计算矩阵A每个元素的代数余子式:所以可得:matlab计算如下:>>A1=[122;21-2;2-2

    2022年8月3日
    3
  • linux goland2022.01.13激活码【2021免费激活】

    (linux goland2022.01.13激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0VOERWDQ5R-eyJsa…

    2022年3月31日
    207
  • Java中Scanner类的使用方法(小白专属)

    Java中Scanner类的使用方法(小白专属)一、Scanner类简介Java5新引入了java.util.Scanner类,主要用于扫描用户从控制台输入文本的程序。即当用户需要输入数据时,调用java.util包中的Scanner类,Scanner类能获取用户所输入的数据。二、如何使用Scanner类?(按步骤)先导入java.util.Scanner包;创建Scanner类的对象(基本语法)创建一个变量用于接收输入的数据,通过调用Scanner类的对象scanner来调用Scanner类中的next方法(控制台将等待

    2022年7月7日
    21
  • python interpolate.interp1d_索引错误scipy.interpolate.interp1d「建议收藏」

    python interpolate.interp1d_索引错误scipy.interpolate.interp1d「建议收藏」我试图得到一个三次样条函数scipy.interpolate.interp1d功能。我试图让documentationpage上的示例正常工作,但每当我运行它时,都会出现以下错误:plt.plot(x,y,’o’,xnew,f(xnew),’-‘,xnew,f2(xnew),’–‘)File”/Library/Python/2.7/site-packages/scipy-0.12.0…

    2022年6月4日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号