单播 广播 组播_【技术解析】关于组播概念那些你需要知道的~
点击蓝字关注我
今天,小盟带大家继续学习一下组播知识~
一、IGMP Message
1.组成员一旦开启IGMP,会自动发送Membership Report消息到叶路由器
2.IGMPv2版本,组成员退出组会发送leave消息,IGMPv1不会
3.也就是说,IGMPv1版本只有Membership Report Message,没有Leave Message
4.对于叶路由器,如果运行IGMPv1版本,那么它是没有Specific消息的(特定组查询消息)
只有60s/次的周期性查询消息(即general Message-通用性查询消息)
5.叶路由器会周期性的每60s向组成员发送周期性查询消息,组成员收到以后,必须回应membership
Report消息
6.特定组查询消息只在V2版本中才会产生
7.当某一组成员向叶路由器发送了leave message以后,叶路由器会马上向下发送一个spcific message
查询这个组中是否还有组成员(整个广播域内发送),如果还有该组中还有组成员存在,那么其他组成员
将以membership report消息回复叶路由器;如果该组中不再存在任何组成员,那么叶路由器收到来自
组播的数据将不再往下推送
Host Report Message
1.该消息用于组成员向叶路由器报告自身需要加入的组地址
2.报头中的目的ip地址为自身想要加入的组地址,这样做是为了完成再本组内Report Message的Suppress(抑制)
因为路由器不关心这个组内有多少组成员,只关心有或者是没有,因此所有组成员只要有一个发起就好
3.那么其他组成员如何知道不需要发送Report Message呢,因为每一个组成员发送消息的目的ip为组播地址
4.Report Message产生的原因有两个:再组成员第一次加入该组时,或是在收到路由器发出的Query Message以后
需要产生响应
5.针对第一种可能,RFC2236建议在第一次加入该组时,每一个组成员都以10s为间隔发送1-2次membership Report
message,为了保证叶路由器可以收到该消息,这个时候就不考虑Suppress的问题
6.针对第二种情况,Report会周期性的回复,回复频率取决于路由器Query Message的查询频率
7.一旦有某一个组成员发送了Membership Report消息以后,其他组成员将不再发送
8.IGMPv2的Leave Message,当组成员离开时用于通告也路由器,发送该消息的目标ip地址位224.0.0.2
也就是发送到组内的所有路由器
二、组成员的Leave Message消息
为什么要发送到224.0.0.2?
1.因为某一单一组成员的离开不需要告诉组内的其他组成员,这样只有叶路由器可以收到
2..其次,会出现双网关(多叶路由器)的情况,那么为了能够将消息发送到所有的叶路由器的同时也要保证组内其它
组成员不收到该消息,所以将此消息发送到目标地址224.0.0.2
三、叶路由器的通用组查询消息,
General Query Message
为什么发送到224.0.0.1?
1.当存在多台叶路由器的时候,叶路由器发送通用组查询消息是发送到所有的设备,那么在这过程中
所有的组成员能收到,所有的叶路由器也能收到
2.当存在多个叶路由器的时候,会在多个叶路由器中选举出一个叶路由器发送特定组查询消息
该消息用于叶路由器查询该接口下的所有组成员的信息,无论组成员需要加入哪一个组(可能存在
多个不同的组)都需要做出响应,叶路由器每60s向下发送一次查询,可以通过命令ip igmp query-interval
【seconds】进行修改(接口下)
3.IP包头内目的地址设置位224.0.0.1,对应本广播域内的所有设备,包括叶路由器,这样做是为了在同一子网
有多台路由器时,选择查询者,而非查询者将停止发送所有查询消息
4.查询者的选择比较接口的ip地址,地址越小的成为查询者,如果120s(可以通过ip igmp querier-timeout【second】
修改)内非查询者都没有收到查询者的Query消息,那么宣告当前查询者失效,由非查询者接替原查询者的工作
周期性的向组成员发送通用查询组消息
5.消息中设置了组成员的最大响应时间为10s,要求组成员在收到该消息后,必须10s内响应,组成员 同时启用1-10s随机计时器,来完成响应
(第一次General Query消息中设置的最大响应时间是正常值得1/4)可以使用命令ip igmp query-max-response-time【seconds】来修改该参数
6.消息中把查询得组地址设置为0.0.0.0,用于对应所有组地址
四、Router Specific Query
1.该消息是针对组成员得Leave Message而产生的特定组查询消息
2.ip包头内目的地址为要查询的组地址,表示该消息只需要指定的组的组成员响应
3.要求组成员响应的最大等待时间为1s,但是为了防止组成员来不及响应,cisco路由器上会以1s为间隔,连续发送2次该查询消息
4.可以通过命令:
ip igmp last-member-quary-interval[m seconds]和ip igmp lasst-member-query-count【num】来修改
五、IGMPv1和IGMPv2的区别
1.IGMPv1没有定义Leave Message,因此最末跳路由器不会产生specific Query Message,并且在判断是否还有组成员时必须
要通过连续3次(180s)General Query得不到响应以后才能判定,所以IGMPv1中从最后一个组成员离开,到路由器停止转发数据的
延时比IGMPv2要更长。
2.IGMPv1的查询消息中没有设定最大响应时间,而是靠组成员自己来定义
3.IGMPv1不具备查询者选择功能,只能依靠组播路由协议选择的指定路由器(DR)来作为查询者
4.当同一子网内既存在IGMPv1,也存在IGMPv2时,按照向后兼容的原则工作
六、L2 Muiticast Frame Switching
组播数据转发对一台交换机的影响
1.以太交换机在L2转发数据时,依赖于本地的CAM表,也就是MAC地址表
2.交换机通过对收到的数据帧的源mac地址与接收端口相绑定的方式来完成自动学习,从而形成mac地址表
3.组播的组地址永远都是存在于目的地址字段,因此交换机是永远无法自动学习到组播的mac地址的
4.因此,当一个组播的数据经过交换机时,交换机会把这个数据当作未知单播数据帧再本广播域内Flooding
七、CGMP协议(Cisco Group Management Protocol)--cisco私有
1.运行在Router和Switch之间的一种协议
2.CGMP Message是由Router向Switch发起
3.组成员通过IGMP向路由器报告自身需要到达组地址224.X.X.X
4.IGMP在穿越交换机时,交换机无法识别(因为该消息在IP包头内)
5.但是交换机会将该主机的单播mac地址和自身接收到该数据的接口相绑定
6.路由器收到报告后,会通过CGMP向交换机 发起join消息,告诉交换机有一个单播MAC(组成员的mac)和组地址(组播地址的mac)要求加入
7.交换机收到该消息后,首先查询单播的mac地址表,确认该组成员单播mac地址是在该接口上,然后建立组播mac地址表,将组播mac地址和组成员连接
交换机的接口绑定,完成对组播mac地址的学习
八、IGMP Snooping
1.单独运行在Switch
2.要求该Switch必须是多层交换机
3.运行IGMP Snooping后,交换机会监听经过自己的所有IGMP的消息,并且自动判断哪些单播mac地址需要接收哪些组播Mac地址的流量
4.对应单播的mac地址表完成组播MAC地址表的建立
九、RGMP,和CGMP工作原理类似,
公有协议
十、GMRP【GARP(Genneral Attribute Registration Protocol Multicast)
Resgistration Protocol
1.运行在组成员(主机)和交换机之间的协议,要求组成员(主机)安装相对应的协议
十一、单播路由与组播路由的主要区别
1.单播路由关心数据包要去哪里(Destination)
2.组播路由关心数据包从哪里来(Source)
3.单播路由依靠路由协议对目的地址的检测来防止环路
4.组播路由无法对目的地址检测,因为组成员可能在任何一个节点
因此组播路由需要依靠对源地址的检测来防止环路的发生
1.对源地址的检测方法称之为RPF(Reverse Path Forwarding)
2.RPF针对的是所有组播路由协议,所以RPF是组播数据转发的依赖
show ip rpf 100.1.1.0--
查看rpf的源是怎么过来的?
配置-dense mode-推送模式
ip multicast-routing--开启组播路由功能
ip pim dense-mode-开启pim推送模式
ip igmp join-group +组播地址--PC加入某一个组
show ip igmp interface F0/0--查看接口IGMP协议运行状态
show ip mroute--查看组播路由表
Show ip pim neighbor-查看pim邻居
网络拓扑:
1.如图规划ip地址,SER设备网关地址为100.1.1.1,PC1设置GW网关地址为150.1.1.1
2.GW1和GW2上打开组播路由功能
3.进入接口下,启用pim协议,这里设置pim模式为推送模式(dense-mode)
4.GW1,GW2上运行底层协议,以获得单播路由(组播是基于单播的)
5.PC1进入接口,将接口加入到组播组224.1.2.3(组播地址自定义)中
6.测试实际效果
第一步:规划ip地址(步骤省略)
第二步:
第三步:
第四步:
第五步:
第六步:
1.PC1上开启debug,检测ping包
2.SER上测试:
3.PC1上查看debug情况:
扫码加入课堂
每晚七点半
腾讯课堂 精彩开启
为方便来自五湖四海的网络爱好者
共同讨(吹)论(牛)交(逗)流(趣)
热烈欢迎大家加入专属QQ群:
加入即可领取:
1、实用模拟器安装包
2、内部精选电子书籍
3、精品实用工程案例
群内资料定期上传更有讲师全天技术答疑
单播 广播 组播_【技术解析】关于组播概念那些你需要知道的~相关推荐
- 三元一次方程组步骤_《三元一次方程组及其解法》学习要点
1 / 2 7.3 三元一次方程组及其解法 学习要点 学习目标: 了解三元一次方程组的概念,理解解三元一次方程组的基本思路,会用代入法. 加减法解三元一次方程组,掌握三元一次方程组的解法及其步骤 . ...
- pc如何打开组策略_如何查看哪些组策略应用于您的PC和用户帐户
pc如何打开组策略 We have shown you a lot of tips and tricks over the years that involve modifying Local Gro ...
- NC | 中科院先进院戴磊组开发SEER-FISH成像技术解析微生物组空间结构
合成所科研进展 2023年3月17日,中国科学院深圳先进技术研究院合成微生物组学研究中心.深圳合成生物学创新研究院戴磊课题组在Nature子刊 Nature Communications上发表了基于成 ...
- 大数乘加运算然后取模 c++_技术解析 | FPGA运算单元可支持高算力浮点
随着机器学习(Machine Learning)领域越来越多地使用现场可编程门阵列(FPGA)来进行推理(inference)加速,而传统FPGA只支持定点运算的瓶颈越发凸显.Achronix为了解决 ...
- 单光感pid巡线_技术解析——单颜色传感器巡线中的PID控制器
1PID控制器是什么? 百度百科: 工业生产过程中,对于生产装置的温度.压力.流量.液位等工艺变量常常要求维持在一定的数值上,或按一定的规律变化,以满足生产工艺的要求.PID控制器是根据PID控制原理 ...
- 如何用python做一个游戏主播_做一个游戏主播有多难?
我想不到这回答会被很多人看见,起初只是看到问题,作为一个旁观者的角度回答的.我描述事情,这个人怎么样是你们来评论,每个人有不一样的看法,我不会回复的,不要私信我了,谢谢. 以下原回答 虎牙的一位主播 ...
- python怎么做游戏主播_做一个游戏主播需要什么条件?详细点。
展开全部 硬性条件: 1.设备: 你需要有一台配置足够好的电32313133353236313431303231363533e78988e69d8331333365663536脑.因为现在游戏对硬件的 ...
- java实验原理和图例_图例解析JDK,JRE,JVM概念及使用
本文向大家简单介绍一下JDK,JRE,JVM概念及用法,为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分.所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文 ...
- 简单html图片轮播_抖音图片轮播的视频怎么制作?小白1分钟就能学会,超简单...
案例视频: https://www.zhihu.com/video/1145378376775880704 我们经常在抖音里面能看到这类的视频,而且点赞还不少,就很多小伙伴问,这种视频应该怎么做? 做 ...
最新文章
- VS2010旗舰版无法安装
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
- 科技管理第一课 导论 课程笔记
- Spark _30_SparkStreaming算子操作Driver HA
- 操作篇 ARP协议欺诈
- 什么是闭包?闭包的优缺点?
- geoserver三维_集团公司自主研发三维GIS平台产品——GeniusWorld 2.0 C版本发布
- NMEA0183格式GPS数据详解
- java 偏向锁的作用_java--偏向锁
- python 阿里云短信接口_阿里云短信接口 (Python)
- 一般系统论--一些系统问题读书笔记
- 数据不符合正态分布怎么处理呢
- android mp4 画面裁剪,说说Android的视频裁剪(二)
- Android全面屏导航栏高度,Android10全面屏开启底部手势横条,弹窗留白问题
- HDU 5914 - Triangle
- 面向对象三大特性(多态)
- windows的局域网渗透
- iOS swift5 手动导入SnapKit(不用cocoapods)
- 微信双开还是微信定时炸弹?- 关于非越狱iOS上微信分身高危插件ImgNaix的分析...
- 塔科玛校区的计算机教育,华盛顿大学塔科马校区申请难度
热门文章
- Java connot reduce_Java8: Reduce方法
- c++正则表达式_Python正则表达式教程-常用文本处理技巧
- firefox 接受post 不完整_HTTP中GET与POST的区别,99 %的人都理解错了
- 一位嵌入式工程师,硬核单片机编程思想!
- 基于xilinx vivado的XADC IP设置使用详解
- pythonrequest得替代_Python爬虫通过替换http request header来欺骗浏览器实现登录功能...
- Python猫荐书系列之七:Python入门书籍有哪些?
- jedis远程连接linux报错
- Android开发学习之路-Git的极简教程?
- 后台如何通过Request取得多个含有相同name的控件的值?