今天简单的写一下组播的实现过程,主要是给0基础同学阅读。本文力图用最简单的语言描绘组播的大致实现过程。

一、背景

计算机网络中存在三种形式的报文——单播、广播和组播。顾名思义,单播就是发往指定的目的地址,广播就是发放广播域内所有的目的地址,而组播,介于单播和广播之间,发往一些特定的目的地址。
什么时候会用到组播呢?
一般有以下两种场景
1、特定的路由协议。比如OSPF发现邻居就是使用组播报文
2、直播、视频会议。比如一个视频流量要发往几个特定的目的,那么可以使用组播
为什么要使用组播呢?
使用单播和广播的确可以解决组播的功能,但是会造成一些问题。
1、如果用单播替代组播。假设一个组播源要向10个目的地址发送数据,那么如果使用单播,该组播源要将同一份数据发送10遍,极大的造成了网络带宽资源的浪费。
2、如果用广播代替组播。其中一个问题是广播没法跨越广播域发送,另一个问题是广播会将组播流量发给所有的设备,即造成了资源的浪费,也存在一定的安全性问题。

二、组播干了什么?

组播就是发往网络中特定目的地址的数据包。
假设一个网络中拓扑如下所示:

假设MCS1要实现将组播流量发往PC1和PC2,那么组播流量在图中传递如图所示:
由MCS1发出的组播流量发给R1,由于R1下游两个路由器都有该组播流量的目的地址,因此R1将该数据包复制成2份分别发给R2和R3,但是对于R2来说,由于其相邻路由器R5没有组播流量的接收者,因此R2不会向R1一样给R5发送流量。
我们把发送组播的设备叫做组播源,接受组播的设备叫做组播接收者。

三、组播不能干什么

组播依托于UDP协议,进行数据通信。组播流量只能从组播源到组播接受者,组播接收者并不能知道组播源是谁(现在v3的IGMP组播协议也支持组播接收者选择组播源),组播源其实也并不知道组播接收者都有哪些,分别在哪。

四、组播是怎么干的?

上述过程时如何实现的呢?大致描述如下:
我们在学习IP地址的时候,知道有种D类的IP地址是组播IP地址,组播的实现就依托于这类IP地址。
首先,对于组播源来说,他会确定一个组播IP地址,它发送的所有组播流量目的IP地址就是这个组播IP地址。因此,组播源只干这一个事情,它其实并不知道组播接收者都有哪些,分别在哪。
**其次,对于组播接收者来说,**它能接收组播的前提是知道组播源所发送组播的组播IP地址。它也只干了一个事情,就是向上游路由器报告,我要接收目的地址是这个组播IP地址的流量。
**最后,对于路由器来说,**它们可能是组播实现非常重要的一环,它负责从组播源到组播接收者之间的组播流量转发工作。对于与组播接受者直接相连的路由器而言,它负责接收接收者的消息,并将其传递给其他路由器,其他路由器也会将这个消息一级一级的传递出去,最终形成的效果就是整个组播网络大概能够知道组播接收者的位置。这样,当组播流量到来的时候,路由器就知道收到的组播流量应该从哪一个端口发送出去,这个端口要不要发送组播流量等。最终,组播的实现完成了一棵“树”的构建,我们把这棵树叫做组播分发树,树的根节点是组播源,叶子节点是组播接收者。这样,组播流量就实现从组播源到组播接收者之间的传递了。
关于组播,大致就先讲到这里了,相信您已经对组播有了基本的认识。如果您还想进一步了解关于组播的内容,可以看另一篇文章浅议PIM(一文看懂PIM)。该文章对路由器组播功能的实现——PIM协议进行了讲解。

附录——组播IP地址简介

在学习IP地址分类的时候,我们都知道,IP地址可以分为5类,其中D类IP地址专门用于组播。
D类IP地址范围是224.0.0.1-239.255.255.255
该地址又可以继续细分:
224.0.0.1-224.0.0.255是各知名协议的组播地址,比如OSPF协议的组播地址是224.0.0.5和224.0.0.6。
224.0.1.0-238.255.255.255是全局有效的组播地址,即类似于公网IP地址。但是要注意,其中232.0.0.1-232.255.255.255是专门用于SSM协议的。
239.0.0.1-239.255.255.255是本地有效的组播地址,即类似于私网IP地址。当在企业内部部署组播时,可以配置上述IP地址。
原创不易,转载请说明出处,原文链接:https://blog.csdn.net/weixin_40228200/article/details/118267321

浅议组播(一文看懂组播)相关推荐

  1. 浅议BGP(一文看懂BGP)

    今天主要介绍一下BGP的相关基础知识,文章浅显易懂,适合对BGP完全没有了解的同学. 一.先导知识 为了更好的介绍BGP,下面先对几个概念进行简单的介绍: 1.AS AS.即Autonomous Sy ...

  2. WiFi 芯片原厂、模组厂 一文看懂IOT WiFi选择

      一:国内常用WiFi原厂 瑞昱 RTL8710.乐鑫 ESP8266.德州仪器 TI cc3200.紫光展锐RDA5981.新干线NL6621.联发科 MT7681.高通 QCA4004. 博通B ...

  3. 「最有用」的特殊大数据:一文看懂文本信息系统的概念框架及功能

    导读:作为一种特殊的大数据,文本数据泛指各种以自然语言形式存在的数据. 目前,我们正处在一个以大数据与人工智能技术为核心的新的工业革命时代,其主要特征是大量各种可利用的数据可以视为一种特殊的生产资料, ...

  4. 一文看懂计算机视觉-CV(基本原理+2大挑战+8大任务+4个应用)

    2020-03-06 20:00:00 计算机视觉(Computer Vision)是人工智能领域的一个重要分支.它的目的是:看懂图片里的内容. 本文将介绍计算机视觉的基本概念.实现原理.8 个任务和 ...

  5. angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作

    好文推荐,转自CSDN,原作星辰StarDust,感觉写的比自己清晰-大江狗荐语. 序列 序列是具有索引和切片能力的集合. 列表.元组和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力 ...

  6. 项目管理标杆和先驱——华为管理体系(PMP),一文看懂!

    项目管理标杆和先驱--华为管理体系(PMP),一文看懂! 要说案例和模板,行业里的项目管理标杆和先驱必看华为! 一起来学习借鉴华为如何进行流程管理. 1.流程管理核心:流程要反映业务 流程要反映业务的 ...

  7. 《SOC芯片研究框架》深度科普,发展趋势、技术特点、产业链一文看懂

    片上系统SoC(System on Chip),即在一块芯片上集成一整个信息处理系统,简单来说 SoC芯片是在中央处理器CPU的基础上扩展音视频功能和专用接口的超大规模集成电路,是智能设备的" ...

  8. php-fpm进程的用户组,一文看懂PHP进程管理器php-fpm

    php-fpm是什么 php-fpm是PHP的一个进程管理器.php下面的众多work进程皆有php-fpm进程管理器管理. php-fpm的工作原理 php-fpm全名是PHP FastCGI进程管 ...

  9. Linux的swap损耗固态寿命吗,一文看懂固态硬盘使用寿命问题

    原标题:一文看懂固态硬盘使用寿命问题 Dual-pool算法是比较经典的磨损平衡算法,目的是为了延长闪存的使用寿命.它实现了两方面解决:第一是存储冷数据来防止块被磨损,因为频繁更新的热数据会是磨损增加 ...

  10. 【机器学习】一文看懂贝叶斯优化/Bayesian Optimization

    点击上方,选择星标,每天给你送干货! 来自:AI部落联盟 今天想谈的问题是:什么是贝叶斯优化/Bayesian Optimization,基本用法是什么? 本文的定位是:帮助未接触.仅听说过.初次接触 ...

最新文章

  1. windows下cacti的快速安装
  2. 1131: 零起点学算法38——求阶乘和
  3. SOA架构下的人事信息管理系统的构建与分析
  4. 图像压缩哪家强?请看这份超详细对比
  5. oracle ajax储存过程分页,创建 Oracle 分页存储过程
  6. SAP CRM的IOITF框架:Individual Object Integration Framework
  7. 微型计算机原理中LEA,微型计算机系统原理及应用(第2版)第2章
  8. javascript闭包原理
  9. python学习课后练习题_python初步学习-练习题
  10. 如何理解c和c ++的复杂类型声明
  11. 第11章 递归分形树(《Python趣味创意编程》教学视频)
  12. docker下gitlab安装配置使用
  13. linux服务器查看系统装到哪个盘,查看linux安装了什么服务器地址
  14. 使用Automake,Autoconf生成Makefile
  15. c语言的三个基本语句,C语言-桂林理工大学3-第三章 C程序设计的基本语句.doc
  16. 疯狂的上网本意义何在?
  17. uni真机showToast不显示
  18. 零基础学Java,现已转行一年
  19. 04_UUID128修改与广播名
  20. Adobe认证专访|003期:跨界摄影师,我眼中的世界与别人不一样

热门文章

  1. poj2991(Crane)线段树+计算几何
  2. [论文笔记]Augmented SBERT: Data Augmentation Method for Improving Bi-Encoders for Pairwise Sentence
  3. SRE之道:创造软件系统来维护系统运行
  4. 13.2 Question Answering 问答系统意境级讲解
  5. PyTorch:nn操作
  6. ubuntu16.04 安装virtualbox 问题 RTR3InitEx failed with rc=-1912 (rc=-1912)
  7. bat脚本保存dir结果_DOS批处理脚本及应用举例
  8. 蓝桥杯2016年第七届C/C++省赛B组第五题-抽签
  9. Futter基础第8篇: 实现页面跳转、跳转传值(普通路由、普通路由传值)
  10. 单链表(链式)c/c++实现