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

news2024/11/17 23:34:37

二、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.coloradmin.cn/o/2075859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

★ OJ题 ★ 二叉树

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将和大家一起做一些二叉树的OJ题~ 目录 一 单值二叉树 二 相同的树 三 对称二叉树 四 二叉树的前序遍历 五 另一颗树的子树 六 二叉树遍历 一 单值二叉树 965. 单值二叉树 - 力扣&#xff08;LeetCode…

Android平台原生音视频编解码MediaCodec

MediaCodec介绍 MediaCodec是Android平台上的一个多媒体编解码器&#xff0c;它可以用于对音频和视频进行编解码。通过MediaCodec&#xff0c;开发者可以直接访问底层的编解码器&#xff0c;实现更高效的音视频处理。同时&#xff0c;MediaCodec也支持硬件加速&#xff0c;可以…

java中的Opencv:Opencv简介与开发环境部署

文章目录 1.Opencv简介Opencv的应用 2.Java使用OpenCV进行图像操作opencv安装java项目中集成Opencv 3.Opencv常用的API 1.Opencv简介 OpenCV &#xff08; Open Source Computer Vision Library &#xff09;是一个广泛应用于计算机视觉和图像处理领域的开源库。它提供了丰富的…

Android12上调试nxp的wifi模块支持5G频段的ap和sta同时共存

我们使用的是nxp的88W8987模块 在使用过程中发现,不能分享出5g的热点,通过log发现国家码没有正常设置,驱动那边加载相关数据库失败 通过与供应商和度娘等排查,需要下载regulatory.db,进行insmod加载才可以,rk默认没有处理,因为rk默认适配的博通的模块,自带了国家码相关…

SAP DYNP_VALUES_UPDATE/READ 更新/获取屏幕字段函数用法

【函数】Function DYNP_VALUES_READ, DYNP_VALUES_UPDATE 【作用】实时获取和更新屏幕上的最新值。 【场景】GUI选择屏幕&#xff0c;选择公司代码&#xff0c;过滤所属公司下的项目&#xff1b;选择项目过滤所属的分期。 REPORT zdynp_values_read MESSAGE-ID 00 NO STANDAR…

grbl下载、编译与修改

一、下载 官方基本grbl https://github.com/grbl/grbl官方优化后的grbl https://github.com/gnea/grbl官方适配mega2560的grbl https://github.com/gnea/grbl-Mega/ 二、编译 arduino最新 为了防止出现问题&#xff0c;将arduino更新到最新是必要的。压缩和加载库 压缩&…

文件上传不断流,下载不限速的企业网盘推荐——可道云teamOS

在信息爆炸的时代&#xff0c;企业文件的传输与管理成为了日常工作中不可或缺的一环。面对海量数据的传输需求&#xff0c;如何确保文件上传的流畅性、下载的高效性&#xff0c;同时又能兼顾文件管理的便捷性&#xff0c;成为了许多企业面临的难题。 今天&#xff0c;我要向大…

20240823 system()读取io口状态 popen()接收io操作的返回信息

读取工控机io system 与 popen io操作APIc system&#xff08;&#xff09;popenopen os.system()、os.popen()和subprocess的区别&#xff08;一&#xff09; 函数system 直接读文件最快&#xff01;[Linux] Ubuntu实机下控制GPIO io操作API 工控机的io口操作的函数 需要…

【机器学习】CNN在计算机视觉中的应用

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 CNN在计算机视觉中的应用1. 引言2. 图像分类3. 目标检测3.1 基于区域的目标检测…

总结拓展八:SAP常见的系统间接口方式

&#xff08;01&#xff09;-远程函数调用 所谓系统接口&#xff0c;实际上就是不同系统间的数据交换方式。 对于一个企业来说&#xff0c;肯定不是一个系统就能够支持所有业务的运转&#xff0c;几乎所有企业都会使用多个系统&#xff0c;比如较为常见的ERP/MES等。 当企业有多…

【STM32单片机_(HAL库)】3-4-4【中断EXTI】【智能排队控制系统】项目实现

3-4-2系统框图及硬件接线 3-4-3系统代码框架搭建 4.软件—tasks.c文件编写 排队控制系统状态机 tasks.c #include "tasks.h" #include "led.h" #include "beep.h" #include "exti.h" #include "lcd1602.h" #include &…

直流负载的必要性

直流负载在电力系统中扮演着至关重要的角色&#xff0c;它的必要性主要体现在以下几个方面&#xff1a; 1. 能源转换效率&#xff1a;在现代电力系统中&#xff0c;电能的生成、传输和使用过程中&#xff0c;需要经过多次能量形式的转换。在这个过程中&#xff0c;直流负载可以…

虚幻引擎UE5入坑记

前言 Unreal Engine 和Unity Engine作为目前主流的游戏引擎&#xff0c;各有优缺点。而我目前的工作还是以Unity开发为主&#xff0c;在使用Unity的过程中&#xff0c;总避免不了听到或看到过UE相关的东西&#xff0c;从开始的好奇到后面想要去学习它&#xff0c;但是&#xf…

数据结构之AVL树的 “奥秘“

二叉树查询性能分析&#xff1a; 插入和删除操作都必须先查找&#xff0c;查找效率代表了二叉搜索树中各个操作的性能 对有n个结点的二叉搜索树&#xff0c;若每个元素查找的概率相等&#xff0c;则二叉搜索在二叉搜索树树平均查找长度是结点的深度的函数&#xff0c;即结点越深…

继电器的工作原理及作用

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1.基本概念3.主要作用4.基本结构5.工作原理 前言 送给大学毕业后找不到奋斗方向的你&#xff08;每周不定时更新&…

联合贷款系统架构与流程解析

在联合贷款作为一种创新的融资模式&#xff0c;正逐渐受到越来越多金融机构和借款人的青睐。本文将分析联合贷款产品的优势&#xff0c;详细描述其流程&#xff0c;并结合实际案例展示联合贷款在实际应用中的场景。帮助读者增进对于联合贷款系统架构及其运作机制的了解。 一、…

600条最强 Linux 命令总结(非常详细)零基础入门到精通,收藏这一篇就够了

一、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -…

UE5 UMG UI编辑器工作流

创建UI控件 1.在内容菜单&#xff08;Content Browser&#xff09;面板&#xff0c;点击添加&#xff08;Add&#xff09;或者右键空白处&#xff0c;依次选择用户界面&#xff08;User Interface&#xff09;/ 控件蓝图&#xff08;Widget Blueprint&#xff09;。 2.在弹出…

领域驱动模型设计与微服务架构落地(四)之DDD分层架构设计

那么聊完领域模型之后,其实我们会发现,接下来,很多的程序员可能就会直接上代码,因为很多的程序员觉得这个你的战略设计跟我们落地的代码没有关系。哪怕你可能说得天花乱坠,可是做为底层的开发人员,我只关心手头上的功能有没有实现,实现完成之后有没有BUG。 那么我们该如…

全网最详细的自动化测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 软件测试作为软件生命周期中不可缺少的组成部分&#xff0c;对提高软件质量起着重要作用。随着软件测试的发展&#xff0c;自动化测试技术也得到了很大提高。 …