学习笔记——IP组播——IP组播基本概述

二、IP组播基本概述

IP组播技术有效地解决了单播和广播在点到多点应用中的问题。组播源只发送一份数据,数据在网络节点间被复制、分发(PIM),且只发送给需要该信息的接收者。

1、前言

网络中存在各种各样的业务,流量模型看一般可以将业务分为两类

1)点到点业务:比如FTP,WEB业务,

特点不同的用户有不同的需求,比如用户A需要下载资料A,用户B需要下载资料B。

此类业务一般由单播承载,服务器对于不同用户发送不同的点到点数据流

2)点到多点业务:比如IPTV,视频会议等,

特点用户对于业务有相同的需求,比如用户A,B,C,D都需要收看视频X,此类业务可以使用单播,组播,广播承载使用单播或广播承载点到多点业务时存在一定问题

组播技术能够较好的解决单播或广播,在承载点到多点业务时存在的问题

2、点到多点业务的困境

点到多点业务可以由单播,组播,广播进行承载,现网中也有各种各样的实现方式。但使用单播或者广播承载点到多点业务时存在一些固有的问题。

单播承载点到多点业务(IPTV场景)            

广播承载点到多点业务(IPTV场景)

             

在单播通信中每一个数据包都有确切的目的IP地址;(上左图)

对于同一份数据,如果存在多个接收者,Server需发送与接收者数目相同的单播数据包;当接收者增加到成百上干时,将极大加重Server创建相同数据和发送多份相同拷贝后所产生的消耗,网络中的设备性能及链路带宽都会面临一定程度的浪费;

单播方式较适合用户稀少的网络,当用户量较大时很难保证网络传输质量

广播数据包被限制在广播域中;(上右图)

一旦有设备发送广播数据,则广播域内所有设备都会收到这个数据包,并且不得不耗费资源去处理,大量的广播数据包将消耗网络的带宽及设备资源;

广播方式只适合共享网段,且信息安全性和有偿服务得不到保障

使用组播承载点到多点业务

组播方式下,单一的信息流沿组播分发树被同时发送给一组用户,相同的组播数据流在每一条链路上最多仅有一份。

相比单播和广播,使用组播的好处如下:

相比单播,用户的增加不会导致信息源负载的加重,不会导致网络资源消耗的显著增加。

相比广播,不会造成网络资源的浪费,并能提高信息传输的安全性,而且组播可以实现跨网段的传输。

3、组播介绍

(1)组播定义

是指接收者的数量和位置,在源端主机不知道的情况下,仅由源发出一份组播报文,向目标组播IP地址发送数据的过程。

组播方式解决了单播情况下,数据的重复拷贝及带宽的重复占用,也解决了广播方式下带宽资源的浪费。

IP组播技术实现了IP网络中点到多点的高效数据传送,能够有效的节约网络带宽、降低网络负载,在实时数据传送、多媒体会议、数据拷贝、游戏和仿真等诸多方面都有广泛的应用。

(2)组播特点

1、组播实现点到多点的高效数据传输。(通常基于UDP)

2、提高效率优化性能:组播可以有效节约带宽、降低网络负载。(按需发送,不会和广播一样只会泛洪,减少了对链路带宽的浪费)

3、分布式应用:组播广泛应用于IPTV、实时数据传送和多媒体会议等。(常用于直播,视频会议,电视网络等处)

4、组播报文

(1)组播数据报文结构

组播数据报文的结构与单播报文类似,但组播数据报文的目的MAC地址与目的IP地址与单播报文有很大差异

组播目的IP地址:目的IP地址为组播IP地址,地址范围:224.0.0.0 - 239.255.255.255

组播目的MAC地址:目的MAC地址为组播MAC地址,组播MAC地址由组播IP地址映射而来。

5、组播地址

        为了使组播源和组播组成员进行通信,需要提供网络层组播,使用IP组播地址。同时,为了在本地物理网络上实现组播信息的正确传输,需要提供链路层组播,使用组播MAC地址。

(1) 组播IP地址

组播IP地址:一个组播IP地址就是一个IP地址,并不是表示具体的某台主机。而表示一组主机的集合,主机声明加入某组播组,即声明自己需要接收目的地址为该组播地址的数据。

IP组播常见模型分为ASM模型和SSM模型

组播地址:

组播MAC地址:01-00-5E-XX-XX-XX

组播地址的范围:224.0.0.0-239.255.255.255(D类地址空间,第一个字节的高四位1110)

本地协议预留组播地址:224.0.0.0-224.0.1.255 (永久组地址)地址224.0.0.0保留不做分配,其他地址供路由协议使用。

本地管理组地址:239.0.0.0-239.255.255.255 仅仅在特定的本地范围内有效

用户组播地址:224.0.2.0-238.255.255.255 (临时组地址),全网范围有效。

公用组播地址:224.0.1.0-224.0.1.255  可以用于INternet;

(2)组播IP地址分类

永久组地址:IANA为路由协议预留的组播地址,用于标识一组特定的网络设备(也称保留组播组)。永久组地址保持不变,组成员的数量可以是任意的,甚至可以为零。

临时组地址:为用户组播组临时分配的IP地址,组成员的数量一旦为零,即取消。

IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用,地址范围为224.0.0.0-239.255.255.255。

D类地址范围

含义

224.0.0.0-224.0.0.255

为路由协议预留的永久组地址。用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发

该类组播地址只能在本地链路工作,IANA将这些地址保留用于特殊用途。几个典型的例子:

224.0.0.0 //保留不做分配        224.0.0.1  //所有组播主机

224.0.0.2  //所有组播路由器     224.0.0.9  //RIPV2路由器

224.0.0.5 //OSPF路由器组播地址  224.0.0.6  //OSPF DR组播地址

该范围内的地址属于局部范畴,不论生存时间字段(TTL)值是多少,都不会被路由器转发(只能在一个广播传递),当起开了这个协议的设备就会接受对应的永久广播地址,否则不会接收,所以也是做到了精确的接收。

224.0.1.0~231.255.255.255

233.0.0.0~238.255.255.255

ASM(Any-Source)临时组地址。这种类型的组播地址全局有效。

IANA还做了进一步的范围细化,其中两类值得关注的地址范围:

SSM组地址及GLOP组地址。

232.0.0.0-232.255.255.255

SSM(Source-Specific-Multicast)临时组地址。缺省情况下的SSM组播地址,全网范围内有效。

    总的来说SSM地址的范围比ASM要小很多,第二和第三这两种地址的服务是通过相应机构监督完成的。

239.0.0.0-239.255.255.255

(Any-Source)本地管理组播地址,仅在特定的本地管理域内有效。

本地管理组播地址属于私有地址,在不同的管理域内使用相同的本地管理组播地址不会导致冲突。(可以定义为ASM服务或者SSM服务)

1)IPv4组播地址

IPv4地址空间分为五类,即A类、B类、C类、D类和E类。在IPv4地址空间中,D类地址被用于组播(224.0.0.0-239.255.255.255),且仅能作为组播报文的目的地址使用不能作为源地址使用

高4bit固定为1110。使用D类地址(224.0.0.0-239.255.255.255),又分为永久组地址临时组地址(见下表)。

永久组播组(224.0.0.X)

说明

224.0.0.1

所有设备(主机与路由器)的地址

224.0.0.2

所有路由器的地址

224.0.0.4

DVMRP路由器

224.0.0.5

所有OSPF路由器

224.0.0.6

OSPF指定路由器

224.0.0.9

Rip-2路由器

224.0.0.9

EIGP路由器

224.0.0.13

PIM路由器

一个组播地址就表示一个点到多点的数据流。比如IPTV数据流,语音会议数据流。

IPv4组播报文的源地址字段为IPv4单播地址,可使用A、B或C类地址,不能是D类、E类地址。

在网络层上,加入同一组播组的所有用户主机能够识别同一个IPv4组播组地址。一旦网络中某用户加入该组播组,则此用户就能接收以该组地址为目的地址的IP组播报文。

大多数情况下,同一个组播网络里不同的业务(比如:IPTV、语音会议)就需要使用不同的组播IP地址。

临时组播组

说明

224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255

ASM/SFM 组播地址,全网范围内有效

232.0.0.0~232.255.255.255

SSM 组播地址,全网范围内有效

239.0.0.0~239.255.255.255

本地管理组播地址,仅在特定的本地范围内有效。

2)IPv6组播地址

FF00:0000:0000:0000:0000:0000:0000:0000 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

IPv6地址长度是128位,组播地址的定义如下图所示。

高8bit固定为FF,标识此地址为组播地址。即IPv6组播地址总是以FF开头。

往后4bit为flag,用来标识组播地址的状态。(高3位取0做保留,最低位为0时表永久组播地址,为1时表非永久组播地址),其含义如下:

取值

含义

0

表示是IANA指定的常用组播地址,也叫保留组地址

1

表示是ASM范围的组播地址

2

表示是ASM范围的组播地址

3

表示是SSM范围的组播地址

其他

未分配

再往后4bit为scope标识组播组的应用范围(见下表)。

取值

含义

0、3、F

保留

1

节点(或接口)本地范围(node/interface-local scope)

2

链路本地范围(link-local scope)

4

管理本地范围(admin-local scope)

5

站点本地范围(site-local scope)

8

机构本地范围(organization-local scope)

E

全球范围(global scope)

其他

未分配

Group ID(112位):组播组标识号。与Flags字段和Scope字段结合指定的范围内唯一标识组播组。

(3)组播MAC地址

以太网传输IPV4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPV4组播MAC地址。

IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,例如,组播组地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。

IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是有32个IPv4组播地址映射到同一MAC地址上。

例如IP地址为224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。网络管理员在分配地址时必须考虑这种情况。

IETF认为同一个局域网中两个或多个组地址生成相同的MAC地址的几率非常低,不会造成太大的影响。

组播MAC地址标识了一组设备,这种MAC地址第1个字节的最低比特位为1,例如0100-5e00-00ab。一个组播MAC地址所标识的一组设备有着共同的特点,那就是它们都加入了相同的组播组,这些设备将会侦听目的MAC地址为该组播MAC地址的数据帧。只有单播MAC地址才能够被分配给一个以太网接口,组播或广播MAC地址是不能被分配给任何一个以太网接口的,换句话说,这两种类型的MAC地址不能作为数据帧的源MAC地址,而只能作为目的MAC地址。

对于组播MAC地址,例如STP协议的BPDU载荷便是被直接封装在以太网数据帧中的,并且数据帧的目的MAC地址为0180-c200-0000,这就是一个组播MAC地址,类似这样的例子还有很多,这些组播MAC地址并不与组播IP地址存在关联。

除此之外,还有一类组播MAC地址是我们需要格外关注的,那就是与组播IP地址存在映射关系的组播MAC地址。

1)组播MAC地址与单播MAC地址的区别

就以太网而言,IP组播帧都使用以0x0100.5Exxxxxx的24位前缀开始的MAC层地址。

1)组播IP与MAC的映射

组播IP地址和MAC地址的映射,需要组播IP地址与组播MAC地址的自动映射。

组播MAC地址的高24bit为0x01005e,MAC地址的低23bit为组播IP地址的低23bit。

1.组播MAC第一个8位组的最后一位为1

2.单播MAC第一个8位组的最后一位为0

3.组播IP地址有5位被丢弃,因此组播IP与MAC的对应关系是32:1。

MAC地址的低23bit为组播IP地址的低23bit。

映射导致的问题

组播IP地址映射成组播MAC地址时,会导致32个组播IP地址对应一个组播MAC的问题。

由于IP组播地址的前4bit是1110,代表组播标识,而后28bit中只有23bit被映射到MAC地址,这样IP地址中就有5bit信息丢失,直接的结果是出现了32个组播IP地址映射到同一组播MAC地址上。

IETF认为同一个局域网中两个或多个组地址生成相同的MAC地址的几率非常低,不会造成太大的影响。

存在当第3层IP地址映射成第2层MAC地址时导致32:1的地址不明确问题。

2)IPv4组播MAC地址

以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。组播MAC地址标识了一组设备,这种MAC地址第一个字节的最低比特位为1。

IANA规定,IPv4组播MAC地址的高24位为0x01005e第25位为0,低23位为IPv4组播地址的低23位,映射关系如图5所示。例如:组播组IP地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。

注意:IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是由32个IPv4组播地址映射到同一个MAC地址上。例如:224.0.1.1、224.128.1.1,225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。网络管理员在分配地址时必须考虑这个情况。

组播MAC地址与单播MAC地址的区别:

IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位固定为0。

组播数据帧的传输目的不再是一个具体的接收者,而是一个成员不确定的组,所以使用的是组播MAC地址。IANA规定,组播MAC地址的高24bit为0x01005e,第25bit固定为0。

组播MAC地址用于在链路层标识属于同一组播组的接收者。

以太网传输单播数据帧的时候,目的MAC地址使用的是接收者的MAC地址或者下一跳路由器的MAC地址。这个MAC地址通过ARP获取。对于组播数据帧也需要有一个可预知的MAC地址。

2)IPv6组播MAC地址

IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。(下图示)是IPv6组播地址FF01::1111:1的MAC地址映射举例。

IPv6地址高8位固定;128-8-32=88,有2^88个IPv6组播MAC地址重复


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410050.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EasyCVR视频汇聚平台革新播放体验:WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新,视频监控已经广泛应用于社会各个领域,成为现代安全管理的重要组成部分。在视频监控领域,视频编码技术的选择尤为重要,它不仅关系到视频的质量,还直接影响到视频的传输效率和兼…

企业参与制定行业标准的主要途径有哪些?需要具备哪些条件?

在当今竞争激烈的商业环境中,参与制定行业标准已成为企业提升竞争力、塑造行业地位的重要战略举措。然而,并非所有企业都有能力和资格参与这一重要的活动。要想在行业标准制定的舞台上发挥积极作用,企业需要具备一系列关键条件。 企业参与制…

mapstruct和lombok同时使用时,转换实体类时数据丢失

全局搜一下maps,找到你进行转换的方法 可以看到新建了TswCaseInfoPlus后直接返回了,说明TswCaseInfoPlus没有set方法,或者说编译后lombok没生效 在pom文件中,编译打包插件中将lombok,mapstruct,lombok-map…

3ds Max - 导出顶点色模型

很久之前的笔记,整理归档; 在3ds Max中,给模型添加VetexPaint修改器后,可以给模型(顶点色通道R\G\B默认值为255\255\255)刷不同颜色的顶点色(默认为黑色,即让RGB通道都为0&#xff0…

PY信号和槽

知不足而奋进 望远山而前行 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 在使用PyQt进行图形用户界面(GU…

jenkins发送html邮件配置步骤与注意事项?

jenkins发送html邮件如何实现?Jenkins的配置方法? 通过jenkins发送html邮件,开发团队可以及时获取构建状态的详细报告,从而快速响应问题,提高工作效率。AokSend将详细介绍jenkins发送html邮件的配置步骤与注意事项&am…

【实现100个unity特效之28】皮毛shader着色器 实现可以用动的毛茸茸毛绒绒效果

效果 文章目录 效果一、内置渲染管线下载支持几只着色器Basic 基本Attributes 属性Force 力Rim Color 轮辋颜色 二、URP下载几只毛发着色器实现的示例Shell 壳Fin 翅片Fur Polygon 毛发多边形Compare 比较Move 移动 完结 一、内置渲染管线 缺点是仅支持内置渲染管线。且无法毛…

各个版本jdk新特性

jdk8新特性 方法引用:方法引用允许直接通过方法的名称来引用已经存在的方法,简化了函数式接口的实现。默认方法(Default Methods):默认方法允许在接口中定义具有默认实现的方法,以便接口的实现类可以继承该…

Linux基础知识(一、什么是Linux)

一、Linux之父——林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds) Linux操作系统最初是在1991年10月份由芬兰赫尔辛基大学的在校生Linus Torvalds所发布,最初被发布的LINUX0.02版本因其高质量的代码与开放源代码,迅速引起了一大批黑客的加…

STL中的stack与queue

前言: stack与queue是STL中的容器适配器,而不是容器。何为适配器?给手机充电的充电器就是一种适配器,将高电压变成低电压。适配器是用来做转化的,不用来直接管理数据,而是在其他容器的基础上去封装转换。 …

【Cadence23】Cadence HDL原理图如何将两个不同的全局网络连接

【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办? 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…

Linux驱动开发基础(中断)

所学来自百问网 目录 1. 嵌入式中断系统 2. 中断处理流程 3. 异常向量表 4. Linux系统对中断的处理 4.1 ARM 处理器程序运行的过程 4.2 保护现场 5. Linux 系统对中断处理的演进 5.1 硬件中断和软件中断 5.2 中断拆分(上半部和下半部) 5.2.1 tasklet 5.2.2 工作队列…

Autofac容器

IoC:注册、注入(解析)、生命周期 Autofac的基本使用 基本使用 需要在NuGet包安装Autofac---建议7.1.0版本 注册: 默认注册: // 容器的初始化 ContainerBuilder builder new ContainerBuilder(); // 注册需要解析…

K8S部署MySQL5.7的主从服务

mysql-slave-0是master mysql-slave-1是slave 当mysql写的时候,找headless service中的 mysql-slave-0.mysql57-slave-headless;当mysql读的时候,找clusterip service中的mysql57-slave-read读,实现读写分离。 statefulset维护两个…

Linux操作系统常见面试题

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 分享常见的操作系统…

原创~尚未发表!基于改进秃鹰算法的多区域微网经济优化调度程序代码!

前言 随着光伏、风电等分布式电源的发展,配电网的供电模式得以改变,解决了传统火力发电带来的能源匮乏及环境污染问题,但其发电的随机性及波动性对配电网的稳定运行造成一定影响。以多个微电网组成的微电网群可有效消纳分布式电源&#xff0…

Anthropic公开Claude AI系统提示词

🦉 AI新闻 🚀 Anthropic公开Claude AI系统提示词 摘要:Anthropic公司近日公开了Claude AI模型的系统提示词,旨在提高AI模型对人类指令的理解。系统提示词设定了对话背景和行为规则,通常是为了防止模型出现不良行为。…

Python数据分析利器之groupby和pivot_table使用详解

概要 在数据分析的过程中,数据聚合与数据透视是两项非常重要的操作。Python的Pandas库提供了强大的工具——groupby和pivot_table,帮助我们高效地进行数据聚合和透视分析。本文将详细介绍如何使用这两个功能,并结合示例代码展示它们的实际应用,帮助更好地掌握数据分析的技…

PTA团体程序设计天梯赛

这次题目出得比前几次简单很多,但有几道题占用的时间太多,导致后面几题仓促写完,未能全部正确,还是得多练 目录 L1-2 九牛一毛 L1-3 小孩子才做选择,大人全都要 L1-5 试试手气 L1-6 打PTA L1-8 随机输一次 L2-…

C++ 类和对象 3

构造函数扩展 构造函数体内的赋值:构造函数一般是用于类对象的初始化的,但严谨来说并不是成员变量的初始化,内置类型的初始化是在生成的同时赋值而且仅有一次,但是在构造函数体内是能对成员变量进行多次赋值的。所以在函数体内的…