IP 多播

一、IP 多播的基本概念

1.1.简介

不使用多播时需要发送 90 次单播:

使用多播时只需要发送 1 次多播:

1.2.IP 多播的一些特点

  • 多播使用组地址:D 类IP地址支持多播。多播地址只能用于目的地址,而不能用于源地址。
  • 永久组地址:由因特网号码指派管理局 IANA 负责指派。
  • 多播的组成员是动态的。
  • 可以使用硬件进行多播

二、在局域网上进行硬件多播

  • 因特网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E

  • 因此 TCP/IP 协议使用的以太网多播地址块的范围是:

    ​ 从 00-00-5E-00-00-00

    ​ 到 00-00-5E-FF-FF-FF

  • D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。

2.1.D 类 IP 地址与以太网多播地址的映射关系


三、网际组管理协议 IGMP 和多播路由选择协议

3.1.IP多播需要两种协议

  • 为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。
  • 连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议

IGMP 使多播路由器知道多播组成员信息

IGMP 的本地使用范围

  • IGMP 并非在因特网范围内对所有多播组成员进行管理的协议。
  • IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。
  • IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。

多播路由选择协议比单播路由选择协议复杂得多

  • 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。
  • 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
  • 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。

3.2.网际组管理协议 IGMP

IGMP 是整个网际协议 IP 的一个组成部分。

  • 和 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务。
  • 因此,我们不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。

IGMP 可分为两个阶段

  • 第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器。

  • 第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。

只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。

IGMP 采用的一些具体措施

  • 在主机和多播路由器之间的所有通信都是使用 IP 多播。
  • 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次。
  • 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。
  • 在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送。
  • 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。

IGMP应用举例

如图,三个城市的用户通过路由器连接。当城市A的老板要给城市B和C的员工开会时,包含城市A老板声音和图像的一个多播数据包通过路由器中转发往指定的多播地址。如有需要,多播数据包会在路由器D处复制成多份分别发往城市B和C的路由器。

连接城市C的路由器C需要扫描城市C的网段,看看有没有计算机属于该多播地址。只要该网段有一台计算机属于该多播地址(只要有一个员工参加会议),那么路由器C都会向上一级路由器D请求一份多播数据包。若没有,那么路由器C就会告诉路由器D不用发送多播数据包过来了。

3.3.多播路由选择协议

  • 多播路由选择协议尚未标准化。
  • 一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组。
  • 多播路由选择实际上就是要找出以源主机为根结点的多播转发树。
  • 在多播转发树上的路由器不会收到重复的多播数据报。
  • 对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。

转发多播数据报使用的方法

  • 洪泛与剪除:

这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。

  • 隧道技术;

  • 基于核心的发现技术:

这种方法对于多播组的大小在较大范围内变化时都适合。

几种多播路由选择协议

  • 距离向量多播路由选择协议 DVMRP;
  • 基于核心的转发树 CBT;
  • 开放最短通路优先的多播扩展 MOSPF;
  • 协议无关多播-稀疏方式 PIM-SM;
  • 协议无关多播-密集方式 PIM-DM;

最新文章

  1. Fedora下依赖库的解决
  2. Java的四种引用方式
  3. Moosefs源代码分析
  4. 自定义控件(View的绘制流程源码解析)
  5. redis linux 安装及jedis连接测试
  6. Android Xutils 框架(转)
  7. TKinter之文本域与多窗口
  8. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
  9. glsl-UBO
  10. 解决embed标签显示在div上层【转藏】
  11. 在非UI线程中更改UI(Delphi使用隐藏窗口来处理,QT使用信号槽)
  12. zookeeper_01:zookeeper概述
  13. 【翻译自mos文章】11gR2中的asm后台进程
  14. vmware安装黑苹果教程
  15. php 时间戳转化成天数 四舍五入 整数
  16. (53)Wangdao.com第七天_JavaScript 强制类型转换
  17. js---json对象拆分
  18. Redis 教程 Java工程师学习知识点
  19. CF1039D You Are Given a Tree 根号分治、二分、贪心
  20. Mysql 之分库分表方案

热门文章

  1. 【ccf- csp201509-4】高速公路
  2. [GX/GZOI2019]特技飞行(扫描线+置换)
  3. 缩写: i = i + 1 和 i += 1,可以看做是 i 自加的值 是1。
  4. 2018 ACM-ICPC 宁夏 C.Caesar Cipher(模拟)
  5. linux_cat命令
  6. G - KiKi's K-Number(树状数组求区间第k大)
  7. Linux磁盘空间满的诡异问题解决方案
  8. 1、简述在java网络编程中,服务端程序与客户端程序的具体开发步骤?
  9. php函数 之 iconv 不是php的默认函数,也是默认安装的模块。需要安装才能用的。
  10. 方差分析|残差|MSA/MSE|Completely randomized design|Randomized block design|LSD|主效应|intercept|多重比较|