第二十一篇:你知道直播,小区视频点播等是怎么实现的吗?(组播协议)

news2024/11/26 8:49:44

你知道直播,小区视频点播等是怎么实现的吗其实现就是运用了组播

信息从信息源发送给组播成员肯定不能全网无选择的传播那不是组播那就是广播了路由器不支持广播却支持组播为了让信息更快的到达组播成员需要建立组播路由和组播成员管理

1、组播协议由两部分协议组成

1)组成员管理协议;IGMP协议

用于管理组播组成员的加入和离开;以及组员查询。

IGMP协议⼯作在主机(组播成员)和最后⼀跳路由之间,如上图中的蓝⾊部分。

2)组播路由协议;PIM协议

运行在三层在组播设备之间,用于建立和维护组播路由表,并正确高效的转发组播报文。

其工作在组播发送端与最后⼀跳路由器之间做信息路由

2、组成员管理协议IGMP协议

1)Internet 组管理协议,英文全称:Internet Group Management Protocol,简称IGMP协议。该协议是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。
2)IGMP提供了在转发组播数据包到目的地最后阶段所需的信息,实现如下双向的功能:

⑴ 主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息。

⑵ 路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所 连网段组成员关系的收集与维护。

3)IGMP ⼯作机制

IGMP共有三个版本,即IGMP v1、v2 和 v3。

接下来,以 IGMPv2 作为例⼦,说说路由器常规查询组播成员和加入/离开组播组这两个功能的⼯作机制。

(1)主机加入/离开组播

加入很简单只需要向组播路由器发送一个加入的加入报文即可这里主要讲组播成员的离开

离开组播组的情况⼀,⽹段中仍有该组播组:

(2)主机 1 要离开组 224.1.1.1,发送 IGMPv2 离组报⽂,报⽂的⽬的地址是 224.0.0.2(表示发向⽹段内的所有路由器)

(3)路由器 收到该报⽂后,以 1 秒为间隔连续发送 IGMP 特定组查询报⽂(共计发送 2 个),以便确认该⽹络是否还有 224.1.1.1 组的其他成员。

(4)主机 3 仍然是组 224.1.1.1 的成员,因此它⽴即响应这个特定组查询。路由器知道该⽹络中仍然存在该组播组的成员,于是继续向该⽹络转发 224.1.1.1 的组播数据包。

离开组播组的情况⼆,⽹段中没有该组播组:

(5)主机 1 要离开组播组 224.1.1.1,发送 IGMP 离组报⽂。

(6)路由器收到该报⽂后,以 1 秒为间隔连续发送 IGMP 特定组查询报⽂(共计发送 2 个)。此时在该⽹段内,组 224.1.1.1 已经没有其他成员了,因此没有主机响应这个查询。

(7)⼀定时间后,路由器认为该⽹段中已经没有 224.1.1.1 组播组成员了,将不会再向这个⽹段转发该组播地址的数据包。

(8)路由器组播成员查询

(9)路由器会周期性发送⽬的地址为 224.0.0.1 (表示同⼀⽹段内所有主机和路由器) IGMP 常规查询报⽂

(10)主机1 和 主机 3 收到这个查询,随后会启动「报告延迟计时器」,计时器的时间是随机的,通常是 0~10 秒,计时器超时后主机就会发送 IGMP 成员关系报告报⽂(源 IP 地址为⾃⼰主机的 IP 地址,⽬的 IP 地址为组播地址)。如果在定时器超时之前,收到同⼀个组内的其他主机发送的成员关系报告报⽂,则⾃⼰不再发 送,这样可以减少⽹络中多余的 IGMP 报⽂数

(11)路由器收到主机的成员关系报⽂后,就会在 IGMP 路由表中加⼊该组播组,后续⽹络中⼀旦该组播地址的数据到达路由器,它会把数据包转发出去。

3、组播路由协议PIM协议

组播路由协议的主要任务就是构造组播的分布树,使组播分组能够传送到相应的组播组成员。根据对网络中的组播成员的分布和使用的不同,组播路由协议分为两类:密集模式路由协议(DM)和稀疏模式路由协议(SM)。

(1) 密集模式组播(PIM-DM)

  密集模式组播路由协议适用于小型网络。它假设网络中的每个子网都存在至少一个对组播组感兴趣的接收站点。因此,组播数据包被扩散到网络中的所有点。与此伴随着相关资源(带宽和路由器的CPU等)的消耗。为了减少这些宝贵网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分支进行剪枝操作,只保留包含接收站点的分支。为了使剪掉的分支中有组播数据转发需求的接收站点可以接收组播数据流,剪掉的分支可以周期性地恢复成转发状态。为了减少等待剪枝分支恢复转发状态的延时时间,密集模式组播路由协议使用嫁接机制主动加入组播分布树。这种周期性的扩散和剪枝现象是密集模式协议的特征。 一般说来,密集模式下数据包的转发路径是“有源树”——以“源”为根、组员为枝叶的一棵树。

  密集模式下的典型路由协议是密集模式下的协议无关组播(Protocol-Independent Multicast-Dense Mode,PIM-DM)、距离向量组播路由协议(Distance Vector Multicast Routing Protocol,DVMRP)。

(2) 稀疏模式组播(PIM-SM)

  稀疏模式默认所有机器都不需要收组播包,只有明确指定需要的才转发。接收站点为接收到特定组的数据流,必须向该组对应的“汇聚点”发送加入消息,加入消息所经过的路径就变成了共享树的分支。发送组播时,组播报文发送到汇聚点,再沿以汇聚点为根的组员为枝叶的“共享树”转发。为避免共享树的分支由于不被更新而被删除,稀疏模式组播路由协议通过向分支周期性地发送加入消息来维护组播分布树。

  发送端如果想要给特定的地址发送数据,首先要在汇聚点进行注册,之后把数据发向汇聚点。当数据到达了汇聚点后,组播数据包被复制并沿着分发树路径把数据传给对其感兴趣的接收者。复制仅仅发生在分发树的分支处,这个过程能自动重复直到数据包最终到达目的地。

  稀疏模式下的典型路由协议是稀疏模式下的协议无关组播。

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

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

相关文章

Kylin系统根分区扩容步骤

问题背景 工作中,有时候Linux操作系统的根分区空间不足,我们需要将已安装的系统根分区进行扩容。那么该如何进行操作呢?我以VMware虚拟机上的Kylin系统为例,进行了详细的实验操作。具体详情请见下面的文章。 虚拟机扩容硬盘 首…

【高等代数笔记】线性空间(二十四下半部分-二十六)

3.23 子空间的运算 【推论1】 dim ⁡ ( V 1 V 2 ) dim ⁡ V 1 dim ⁡ V 2 ⇔ V 1 ∩ V 2 0 \dim(\textbf{V}_1\textbf{V}_2 )\dim\textbf{V}_1\dim\textbf{V}_2\Leftrightarrow\textbf{V}_1\cap\textbf{V}_2\textbf{0} dim(V1​V2​)dimV1​dimV2​⇔V1​∩V2​0 3.24 子…

Redis 高可用方案

Redis 高可用性(High Availability)是指在 Redis 系统中实现持续的可用性,即使在发生硬件故障或其他意外情况下,系统仍能保持运行。 1 常用方案 为了实现 Redis 的高可用性,以下是几种常用方案: 1.1 使用…

学习threejs,THREE.MeshBasicMaterial网格材质、THREE.MeshLambertMaterial漫反射材质

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshBasicMaterial网…

Spring Boot课程答疑:技术难题一网打尽

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

Nuxt.js 应用中的 kit:compatibility 事件钩子详解

title: Nuxt.js 应用中的 kit:compatibility 事件钩子详解 date: 2024/10/11 updated: 2024/10/11 author: cmdragon excerpt: kit:compatibility 是处理浏览器兼容性问题的有效工具。正如本篇文章中所述,合理地利用这一钩子可以提升用户体验,并确保应用在不同环境中都能…

回南天,即使没有除湿机,也能除湿

前几天收到网友私信,询问烘干机干衣吹热风,这个比较好理解,热气吹到衣服上加速水分蒸发。但空调除湿为什么不吹热风了,而吹冷风呢?以及除湿机的原理等的问题。 因为我在南京总是觉得干,加湿器24小时不停&a…

嵌入式面试——FreeRTOS篇(八) Tickless低功耗

本篇为:FreeRTOS Tickless 低功耗模式篇 一、低功耗模式简介 1、低功耗介绍 答: 很多应用场合对于功耗的要求很严格,比如可穿戴低功耗产品、物联网低功耗产品等;一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的…

【射频通信电子线路基础第八讲】射频小信号放大器

一、射频放大器 不失真放大射频信号 主要要求:最佳增益、噪声系数、功率、带宽——设计统筹考虑 能量转换器 有源器件(晶体管)是核心 二、射频放大器的位置 三、射频放大器的分类 1、导通角与基于工作点 2、基于信号大小 小信号模式&a…

海报设计用什么软件?一分钟掌握创意海报设计技巧

回想当初,什么都不懂的小编,随便在网上搜教程想自学海报设计,面对满屏的天花乱坠辅导班广告,打起了退堂鼓。 现在已经摸透了怎么完成海报制作设计的小编,准备来给同样想要学习海报设计的新手,分享能够在一…

Cherno游戏引擎笔记(73~90)

------- scene viewport ---------- 》》》》做了两件事:设置视口和设置相机比例 》》》》为什么要设置 m_ViewportSize 为 glm::vec2 而不是 ImVec2 ? 因为后面需要进行 ! 运算,而 ImVec2 没有这个运算符的定义,只有 glm::vec2 有这个运算…

Python JSON 操作中的四个高效小窍门

JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在各种应用场景中扮演着重要角色。Python 中处理 JSON 数据非常便捷,主要通过内置的 json 模块来实现。本文将详细介绍如何使用 Python 进行 JSON 数据的操作&…

python list, tuple dict,set的区别 以及**kwargs 的基本用法

在python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景? 定义: list:链表,有序的项目, 通过索引进行查找,使用方括号”[]”; tuple:元组,元组将多样的对象集合到一起,不能修改,通过索引进行查找, 使用括号”()”; dict:字典,字典是一组键(key)和值(value…

MacOS编译和安装Poco库的方法

1.从官网git下载最新的poco源代码 在/usr/local路径下创建Poco文件夹,克隆Poco源代码 sudo git clone -b poco-1.13.3-release https://github.com/pocoproject/poco.git2.等了一会后,报错啦!!! error: RPC failed…

耳机座接口会被TYPE-C取代吗?

耳机座接口,即传统的3.5mm耳机插孔,一直以来都是音频设备的标准配置。然而,随着科技的发展和用户需求的变化,TYPE-C接口逐渐崭露头角,成为许多设备的主流选择。这一趋势引发了一个重要问题:耳机座接口会被T…

前缀和算法——优选算法

个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 一、什么是前缀和? 前缀和是指从数组的起始位置到某一位置(或矩阵的某个区域)的所有元素的和。这种算法通过预处理数组或矩阵,…

[Git] 演示回退命令reset的三种模式soft、hard、mixed详解

前言 目录 git reset soft hard mixed git reset --soft commitId git reset --hard commitId git reset --mixed commitId git reset soft 移动本地库HEAD指针 hard 移动本地库HEAD指针 重置暂存区 重置工作区 mixed 移动本地库HEAD指针重置暂存区 执行reset命令后…

秒杀|基于springBoot的秒杀系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目) 摘要 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及…

游戏行业八大趋势解说(上)

今天,来看看游戏行业八大趋势~ 1. 跨平台发行 2. 单人游戏规模缩小 3. 移动应用生态系统开放 4. 社区管理、抢先体验成为主流 5. 免费游戏的时间占有率显著提高 6. 新AAA游戏面临挑战 7. 生成式AI的影响未完全显现 8. 新世代成为主流,用户生成内…