zoukankan      html  css  js  c++  java
  • 组播基本概念、IGMP、IGMP监听学习笔记

    前言

    一直对组播这个概念迷迷糊糊,特别是交换机处理组播的方式,非常想搞懂但是懒癌发作。这几天终于耐心地看了下有关组播的资料,大致了解了一下同一广播域内组播的相关知识。组播占了计算机网络的一大部分,特别是组播路由这一块,知识点、名词非常多,要完全掌握并不是一件容易的事情。下面跟大家分享一下我的学习经验,如有错误请提出,谢谢。

    还有,此文全部组播均为IPv4环境下的组播,IPv6的组播跟IPv4完全不同,请注意区分。


    为什么需要组播

    简单来说,就是因为在一些诸如视频点播的应用时,单播对主机的压力太大、而广播又对网络链路的压力太大。所以……


    组播IP地址

    • 224.0.0.0~239.255.255.255 所有组播地址
    • 224.0.0.0~224.0.0.255 有特殊用途的组播地址(不能被路由)
    • 224.0.0.1 同一网段所有主机
    • 224.0.0.2 同一网段所有组播路由器
    • 224.0.1.0~238.255.255.255 公网组播地址
    • 239.0.0.0~239.255.255.255 私网组播地址

    摘自:维基百科


    组播IP地址和MAC地址的关系

    组播MAC地址的高24bit位是以01-00-5E开头,低23bit为组播IP地址的低23bit。
    由于IP组播地址的高4bit是1110,标识了组播组,而低28bit中只有23bit被映像到组播MAC地址上,这样IP组播地址中就会有5bit没有使用,从而出现了32个IP组播地址映像到同一MAC地址上的结果。

     
    组播IP、MAC映射

    IGMP简介

    网路群组管理协议Internet Group Management Protocol或简写IGMP)是用于管理网路协议多播组成员的一种通信协议。IP主机和相邻的路由器利用IGMP来创建多播组的组成员。像ICMP用于单播连接一样,IGMP也是IP多播说明的一个完整部分。 IGMP为互联网协议的一种,属于开放系统链接(OSI) 模块的第三层协议,IP主机用它将主机的多点发送成员人数报告给临近的多点发送路由器。

    摘自:维基百科

    IGMP目前有三个版本,目前用的最多的是IGMPv2。IGMPv1主要基于查询和响应机制来完成对组播组成员的管理;IGMPv2增加了查询器选举机制和离开组机制;IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。


    IGMPv2报文分类和详解

    一、查询报文

    该报文由组播路由器发出。可细分为通用查询报文和特定组查询报文。组播路由器定时发出通用查询报文(下图的组播路由器每125s发送一次)。通用查询报文的目标IP为224.0.0.1(所有主机),IGMP报头内的组播IP为0.0.0.0。用来查询该网段有哪些组播组的成员。特定组查询报文的目标IP则是要查询的组播组地址。

     
    查询报文抓包

    二、报告报文

    该报文由主机发出。可对组播路由器发出的查询报文进行回应,同时主机在主动加入特定组的时候,也会主动发送该报文报告。报告报文的目标IP和IGMP报头内的组播IP均为主机加入的组播组地址(注意!这里虽说是回应路由器的,但是数据包的目标IP不是路由器)。

     
    报告报文抓包

    三、离开报文(仅限IGMPv2和v3)

    该报文由主机发出。当主机离开组播组时发送此报文,向组播路由器报告离开了特定的组播组。离开报文的目标IP为224.0.0.2(所有组播路由器),IGMP报头内的组播IP为特定离开组的IP。

     
    离开报文抓包

    交换机处理组播的方式

    1、一切没有开启或不支持IGMP监听功能的交换机,组播数据包都以广播的形式在广播域内泛洪。
    2、开启IGMP监听功能的交换机的每个VLAN会维护一个组播地址表。当收到组播数据包时,如果表中含有该数据包组播IP的条目,则按照表中的组播IP向对应的端口进行转发,否则以广播的形式在广播域内泛洪。


    交换机的组播地址表样式

    包类型组播IP所在端口
    IGMP 224.0.0.251 1
    IGMP 224.0.0.251 2, 3, 4

    交换机组播地址表的学习和维护(IGMP监听过程)

    (假设当前只有一个VLAN)
    1、当组播路由器发出IGMP通用查询报文然后收到主机回应的IGMP报告报文时,交换机会把收到回应的端口和对应的组播地址学习到组播地址表中(其实只要是IGMP报告报文,都会学习,不管有没有事先查询)。如下图所示:

     
    图解

    2、当主机发出IGMP离开报文时,组播路由器会发送IGMP特定组查询报文。如果该端口在一定时间内得不到回应,则删除条目对应的端口;如果得到回应则不删除。当开启端口快速离开功能时,一旦该端口收到离开报文,交换机将立即删除条目对应的端口。
    3、和MAC地址表一样,自动学习到的条目都有老化时间。若在一定时间内没有收到对应组播地址某个端口上的IGMP报告报文,条目上相应的端口会自动删除。当所有端口都被删除时,条目则自动删除。
    4、组播地址表的学习和维护全靠IGMP监听(不考虑CGMP)。
    5、如果网络中没有组播路由器,也就没有IGMP查询报文,组播地址表的建立将会变得十分困难(思科2960可以配置定期发送IGMP查询报文)。
    6、除非把交换机配置成IGMP查询器,否则交换机不会发送任何IGMP报文,只会静静地监听。


    思科交换机的简单设置

    1、全局开启IGMP监听(默认已开启)

    switch(config)# ip igmp snooping
    

    执行完上述命令之后所有VLAN都会开启IGMP监听。
    2、为某个VLAN开启快速离开功能(可选)

    switch(config)# vlan <VLAN ID>
    
    switch(config-vlan)# ip igmp snooping fast-leave
    


    作者:余泽楠
    链接:https://www.jianshu.com/p/52f6fc87271a
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    vue中使用router全局守卫实现页面拦截
    Java入门之Maven创建Web项目
    Java入门之Maven安装并集成IDE
    Java入门之IDE配置Tomcat
    Java入门之Tomcat运行
    Java入门之Tomcat安装及环境变量配置
    Java入门之IDE集成开发环境安装及配置
    Java入门之JDK安装及环境变量配置
    查看SQL Server中的锁表及解锁
    DES加密解密
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/8431145.html
Copyright © 2011-2022 走看看