首页 技术 正文
技术 2022年11月14日
0 收藏 692 点赞 3,652 浏览 2390 个字

前言

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

还有,此文全部组播均为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地址上的结果。

 组播基本概念、IGMP、IGMP监听学习笔记组播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则是要查询的组播组地址。

 组播基本概念、IGMP、IGMP监听学习笔记查询报文抓包

二、报告报文

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

 组播基本概念、IGMP、IGMP监听学习笔记报告报文抓包

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

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

 组播基本概念、IGMP、IGMP监听学习笔记离开报文抓包


交换机处理组播的方式

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报告报文,都会学习,不管有没有事先查询)。如下图所示:

 组播基本概念、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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903