IP组播简介

2024-04-17 02:20
文章标签 ip 简介 组播

本文主要是介绍IP组播简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定义

作为IP传输三种方式之一,IP组播通信指的是IP报文从一个源发出,被转发到一组特定的接收者。相较于传统的单播和广播,IP组播可以有效地节约网络带宽、降低网络负载,避免广播堵塞带来的诸如摄像头花屏,视频马赛克等问题,所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。

目的

传统的IP通信有两种方式:单播(Unicast)和广播(Broadcast)。

  • 对于单播通信,信息源为每个需要信息的主机都发送一份独立的报文。
  • 对于广播通信,信息源将信息发送给该网段中的所有主机,而不管其是否需要该信息。

如果要将数据从一台主机发送给多个主机而非所有主机,可以采用广播方式,也可以由源主机采用单播方式向网络中的多台目标主机发送多份数据,如图1所示。

图1 采用单播和广播方式进行点到多点传输数据示意图

  • 采用单播方式时,网络中传输的信息量与需要该信息的用户量成正比。当需要该信息的用户数量较大时,信息源需要将多份内容相同的信息发送给不同的用户,这对信息源以及网络带宽都将造成巨大的压力。因此,该传输方式不利于信息的批量发送,只适用于用户稀少的网络。
  • 采用广播方式时,不需要接收信息的主机也将收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网段中信息泛滥。因此,该传输方式不利于与特定对象进行数据交互,同时会浪费大量的带宽。

由上述可见,传统的单播和广播通信方式不能有效地解决单点发送、多点接收的问题。

组播(Multicast)可以很好的解决点到多点的数据传输,如图2所示,源只发送一份数据,网络中只有需要该数据的主机(目标主机HostA和HostC)可以接收该数据,其他主机(HostB)不能收到该数据。

图2 采用组播方式进行点到多点传输数据示意图

组播相对单播和广播有如下优势:

  • 相比单播,由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
  • 相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。

组播适用于任何“点到多点”的数据发布,主要包含以下几方面:

  • 多媒体、流媒体的应用。
  • 培训、联合作业场合的通信。
  • 数据仓库、金融应用(股票)。

IP组播技术在ISP提供的互联网信息服务中已经得到了应用。例如:在线直播、网络电视、远程教育、远程医疗、网络电台和实时视/音频会议等。

组播服务模型

组播服务模型的分类是针对接收者主机的,对组播源没有区别。组播源发出的组播数据中总是以组播源自己的IP地址为报文的源地址,组播组地址为目的地址。而接收者主机接收数据时可以对源进行选择,因此产生了ASM(Any-Source Multicast)和SSM(Source-Specific Multicast)两种服务模型。这两种服务模型使用不同的组播组地址范围。

ASM模型

ASM模型仅针对组地址提供组播分发。一个组播组地址作为一个网络服务的集合,任何源发布到该组地址的数据得到同样的服务。接收者主机加入组播组以后可以接收到任意源发送到该组的数据。

为了提高安全性,可以在路由器上配置针对组播源的过滤策略,允许或禁止来自某些组播源的报文通过。最终从接收者角度看,数据是经过筛选的。

ASM模型要求组地址必须在整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,它们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。

SSM模型

SSM模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时,可以指定只接收哪些源的数据。加入组播组以后,主机只会收到指定源发送到该组的数据。

SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞。

组播地址

为了使组播源和组播组成员进行通信,需要提供网络层组播,使用IP组播地址。同时,为了在本地物理网络上实现组播信息的正确传输,需要提供链路层组播,使用组播MAC地址。组播数据传输时,其目的地不是一个具体的接收者,而是一个成员不确定的组,所以需要一种技术将IP组播地址映射为组播MAC地址。

IPv4组播地址

IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用。IPv4地址一共32位,D类地址最高4位为1110,因此地址范围从224.0.0.0到239.255.255.255,具体分类及含义见表1。

表1 IPv4组播地址的范围及含义

地址范围

含义

224.0.0.0~224.0.0.255

永久组地址。IANA为路由协议预留的IP地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。常见的永久组地址表2所示。

224.0.1.0~231.255.255.255

233.0.0.0~238.255.255.255

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

232.0.0.0~232.255.255.255

缺省情况下的SSM组播地址,全网范围内有效。

239.0.0.0~239.255.255.255

本地管理组地址,仅在本地管理域内有效。在不同的管理域内重复使用相同的本地管理组地址不会导致冲突。

表2 常见的永久组地址列表

永久组地址

含义

224.0.0.0

不分配

224.0.0.1

网段内所有主机和路由器(等效于广播地址)

224.0.0.2

所有组播路由器

224.0.0.3

不分配

224.0.0.4

DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器

224.0.0.5

OSPF(Open Shortest Path First,开放最短路径优先)路由器

224.0.0.6

OSPF DR(Designated Router,指定路由器)

224.0.0.7

ST(Shared Tree,共享树)路由器

224.0.0.8

ST主机

224.0.0.9

RIP-2(Routing Information Protocol version 2,路由信息协议版本2)路由器

224.0.0.11

移动代理(Mobile-Agents)

224.0.0.12

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器/中继代理

224.0.0.13

所有PIM(Protocol Independent Multicast,协议无关组播)路由器

224.0.0.14

RSVP(Resource Reservation Protocol,资源预留协议)封装

224.0.0.15

所有CBT(Core-Based Tree,有核树)路由器

224.0.0.16

指定SBM(Subnetwork Bandwidth Management,子网带宽管理)

224.0.0.17

所有SBM

224.0.0.18

VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)

224.0.0.22

所有使能IGMPv3(Internet Group Management Protocol, Version 3,因特网组管理协议)的路由器

224.0.0.19 ~ 224.0.0.21

224.0.0.23 ~ 224.0.0.255

未指定

这篇关于IP组播简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910547

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.