IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> IGMP协议原理与配置 -> 正文阅读

[网络协议]IGMP协议原理与配置

IGMP协议:因特网组管理协议
(在路由器与客户端间,不属于组播路由协议;组播路由协议:应用与路由器之间,传播路由,维护组播路由表)

作用:是TCP/IP协议族中负责IP组播成员管理的协议,用来在接收者和与其直接相邻的组播路由器之间建立、维护组播组成员关系

接收端如何接收组播数据:
接收者与路由器间需要交换哪些信息?
接收者需声明自己要接收哪个组的数据
路由器需了解哪些组播组存在接收者

  人工静态配置这些信息,有哪些问题?
       1. 实时性差。
        2. 灵活性差。
        3.工作量大、易出错。

实现高效转发、灵活加组的网络,该如何部署?

组成员管理 - IGMP:IGMP协议运行于主机与组播路由器之间,建立、维护组播组成员关系

  IGMP协议的作用:
               主机侧:通过IGMP协议向路由器通告组成员关系
               路由器侧:通过IGMP协议维护组成员关系

       所有报文TTL值默认为1

   IGMP协议的版本:
          1.IGMPv1:
               工作机制:
                       1.普遍组查询与响应:周期60
                       2.响应抑制机制:组成员收到普遍组查询报文后启动本地所属组定时器(0-10s随机值,单位为1s,最大响应时间默认10s),到时后发送成员关系报告,同组内成员监听到有成员发送了成员关系报告,停止组定时器,且不再发送针对本组的成员报告报文
                           作用:可以减少网段上的协议流量(重复的成员关系报告)

                报文:
                      1.普遍组查询报文:是组播路由器周期性(60s)向局域网内所有主机以组播的形式发送查询报文,本地网段所有路由器和主机都能识别并接收;任何组播组成员都回应成员关系报告,查询报文中的组地址字段为0.0.0.0,代表所有查询的任意组,收到该报文的主机把自己所属组发送成员关系报告给组播路由器
                       2.成员关系报告报文:包含所属组的所有成员信息(只能携带一个组的组播组信息)
                             分两种:
                                    1.主机主动发给组播路由器,用于主动申请加入某个组播组的报文
                                     2.是收到IGMP的普遍组查询报文后,被动响应请求,而告知组播路由器所属组的报文,目的组地址字段是D类非224.0.0.X

                 IGMPv1成员加入:
                                1.主机主动申请加组:为了快速接收组播数据,不等待普遍组查询报文,主动发送成员关系报告
                                2.被动:收到IGMP的普遍组查询报文后,被动响应请求(等待0-60s)

                  IGMPv1问题:
                       1.组成员离开:静默离开;因此会导致组播路由器不知道组成员离开,会继续向下转发该组的组播数据,造成设备带宽浪费。
                                      解决办法:用普遍组查询报文,每60s发送一次,查询所有的组是否还存在成员,普遍组查询130s(60*2+10)没有收到响应,则路由器认为该组不存在组播成员,删除对应的组播转发项。(IGMPv1中没有专门定义离开组的消息)
                        2.查询器选举:依赖于组播路由协议
                               查询器是负责发送普遍组查询报文,如果出现多个组播路由器,那么谁发送普遍组查询报文?
         IGMPv1无查询选举机制,需要借助组播路由协议,就是依赖于上层协议PIM协助选举查询器
            
          2.IGMPv2(最常用):
                 报文:
                     1. 查询报文:
                              普遍组查询报文:查询地址是0.0.0.0
                              特定组查询报文:被查询的组播地址,查询该组是否还有其他组成员s,目的IP:224.0.0.1
                      2.成员报告:成员关系报文(与V1一样),组地址为要加入的组播组地址(只能携带一个组的组播组信息)
                      3.离开报文:成员离开报文(V1不存在),组地址为主机要离开的组播地址

                IGMPv2对IGMPv1的改进:
                      1. 组成员离开 :
                               1.组成员主动向查询器发送离开消息(该组最后一个组成员离开发送)
                                2.查询器向该组地址发送特定组查询,缺省间隔1s,发送2次(健壮系数)
                                3.若发送2次特定组查询之后仍没有收到成员报告,则认为该组播组不存在组播成员
                        2.查询器选举:独立的查询器选举机制
                                  选举:所有IGMPv2路由器在初始状态时都认为自己是查询器,向本地网段内的所有主机和路由器发送普遍组查询报文。其他路由器在收到该报文后,将报文的源IP地址与自己的接口地址作比较。IP地址最小的路由器将成为查询器,其他路由器成为非查询器
                                 IGMP的查询器和非查询器都会处理IGMP组加入信息,但是只有查询器负责发送查询报文。IGMP非查询器不处理IGMPv2离开报文 
                             非查询器:所有非查询器上都会启动一个定时器。若在该定时器超时前收到了来自查询器的查询报文,则重置该定时器;否则就认为原查询器失效并发起新的查询器选举

                  IGMPv1和IGMPv2报文比较:

        IGMPv1报文:
               版本:包含IGMP版本标识,因此设置为1。
               类型:普遍组查询 (0x11),成员关系报告 (0x12)。
               组地址:普遍组查询报文中,组地址为0;成员关系报告报文中,组地址为成员想要加入的组播组的地址。

IGMPv2报文:IGMPv2报文与IGMPv1报文略有不同,它取消了版本字段,增加了最大响应时间字段。
类型:相比于IGMPv1,IGMPv2新增了两种报文:
特定组查询报(0x11):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
成员离开报文(0x17):成员离开组播组时主动向路由器发送的报文,用于宣告自己离开了某个组播组。
最大响应时间:表示主机响应查询返回报告的最大时间。
对于普遍组查询,最大响应时间默认为10秒。
对于特定组查询,最大响应时间默认为1秒。
组地址:
普遍组查询报文中,组地址设置为0。
特定组查询报文中,组地址为需要查询的组地址。
在成员报告或离开组的消息中,组地址为需要报告或离开的组地址
3.IGMPv3:应用SSM的新需求:指定组播源,提供了在报文中携带指定组播源信息的能力
SSM模型中的新需求:只接收特定源发送的组播数据
工作机制:
接收端发送成员报告,指出希望加入或拒绝某些组播源发送的数据
报文:
查询报文:
普遍组查询报文:查询地址是0.0.0.0
特定组查询报文:被查询的组播地址,查询该组是否还有其他组成员
特定源组查询报文:查询该组成员是否愿意接收特定源发送的数据
成员报告报文:
成员关系报告:不仅包含了主机想要加入的主播组,还包含了主机想要接收来自哪个组播源的组播数据(可以携带多个组播组信息)
IGMPv3没有专门定义成员离开报文,成员离开报文是通过特定类型的报告报文来传达

IGMP各版本间的差异

二层中组播数据转发的问题:
组播数据在二层被泛洪 :
IGMP报文是封装在IP报文内,属于三层协议报文,而二层设备不处理报文的三层信息,所以主机加组的过程二层设备并不知道,而且通过对数据链路层数据帧的源MAC地址的学习也学不到组播MAC地址(数据帧的源MAC地址不会是组播MAC地址),所有当二层设备在接收到一个目的MAC地址为组播MAC地址的数据帧时,在MAC地址表中就不会找到对应的表项。那么它就会采用广播方式发送组播报文

造成:网络资源浪费
存在安全隐患
解决:IGMP Snooping机制
IGMP Snooping工作原理:
使能IGMP Snooping机制后,查询响应仅向路由器接口转发

IGMP Snooping可以实现组播数据帧在数据链路层的转发和控制:
实现原理:使能IGMP Snooping功能后,二层设备通过侦听主机和路由器之间交互的IGMP报文建立和维护二层组播转发表,从而管理和控制组播数据帧在数据链路层按需转发。(通过分析报文中携带的信息:报文类型、组播组地址、接收报文的接口等),

IGMP Snooping建立和维护二层组播转发表的过程:
1.查询器周期性的发送普遍组查询,该报文被扩散到交换机的所有端口,包括与交换机CPU相连的内部接口0。交换机CPU收到查询报文后,判断1号接口为连接路由器的接口
2.Client B希望加入组播组224.1.2.3,因此以组播方式发送一个IGMP成员报告报文,报告中具有目的MAC地0x0100.5e01.0203。该报文将被发往路由器的接口以及交换机CPU相连的内部接口0;当CPU收到Client B的IGMP报告时,CPU利用IGMP报告中的信息将该接口加入二层组播转发表中,此时表项包括Client B的接口号,连接路由器的接口号和连接交换机内部CPU的接口号
3.形成此转发表项的结果是使后面任何目的地址为0x0100.5e01.0203的组播帧都被控制在端口0、1和3,而且不向交换机其他端口扩散

 加入组:主机主动发一个IGMP报告,交换机CPU收到此报告,它在转发表项上为该主机MAC地址增加一个端口
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:47:40  更:2021-10-25 12:48:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/1 21:19:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码