第7章 网络层协议(4)_IGMP协议
4. IGMP协议(Internet Group Management Protocol)
4.1 什么是组播(多播)
(1)单播同一个视频要发送90个副本,但支持收看者“快进”和“倒退”。
(2)组播:同一个多播组的90个成员只需发送一次,路由器在转发分组时复制成多个副本转发出去,即在因特网范围内的多播是靠路由器来实现的,能够运行多播协议的路由器称为多播路由器。当分组到达目的局域网时,由于局部网具有硬件多播功能,因此不需要复制分组,在局部网上的多播组成员都能收到这个视频分组。
4.2 组播IP和组播MAC地址
(1)组播分为两种
①只在本局域上进行硬件组播(使用组播MAC地址)
②在因特网范围进行组播(使用组播IP)
(2)组播IP
D类地址 |
说明 |
备注 |
224.0.0.0 |
基地址(保留) |
INAN指派的永久组地址,不能随意被使用! |
224.0.0.1 |
在本子网上的所有参加多播的主机和路由器 |
|
224.0.0.2 |
在本子网上的所有参加多播的路由器 |
|
224.0.0.4 |
DVMP路由器 |
|
…… |
||
224.0.1.0至 238.255.255.255 |
全球范围都可使用的多播地址 |
|
239.0.0.0至 239.255.255.255 |
限制在一个组织的范围 |
①组播数据报的目的地址不能为某个具体的主机IP,而是多播组的标识符,然后将加入到这个多播组的主机IP与多播组的标识符关联起来。
②多播组的标识符就是D类地址,每一个D类地址标志一个多播组。D类地址范围是224.0.0.0至239.255.255.255,共可标志238个多播组。
③组播数据报使用IGMP协议,“尽最大努力交付”数据报,但并不保证一定能够交付给多播组内的所有成员。
④组播地址只能用于目的地址,而不能用于源地址。此外,组播数据报不产生ICMP差错报文。因此,若ping一个多播地址,将永远得不到响应。
(2)组播MAC地址
①目标地址是组播IP地址的数据包到达以太网,就要使用组播MAC地址进行封装。组播MAC地址使用组播IP地址构造。
②组播MAC地址区间:01-00-5E-00-00-00到01-00-5E-7F-FF-FF。这是一个由48位组成的MAC地址,其中高25位是固定的,而低23位是由IP多播地址的低23位直接映射而来。
③组播IP和组播MAC地址的映射关系不是唯一的。如组播IP(224.168.64.32)和(224.0.64.32)构造出来的MAC地址都是01-00-5E-00-40-20。当收到组播数据报的主机,还要在IP层利用软件根据IP地址进行过滤,把不是本主机要接收的数据报丢弃。
4.3 IGMP:组播管理协议
(1)IGMP协议工作的两个阶段
①当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给因特网上的其他多播路由器。
②在多播过程中,一个多播组中的成员是动态变化的。随时会有主机加入或离开这个多播组。本地多播路由器要周期性地查询本地局域网上的主机,以便知道这些主机是否继续是组的成员。只要有一个主机对某个组响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,多播路由器就认为本网络上主机己经离开了这个组。因此,也就不再把这个组的成员关系转发给其他多播路由器。
(2)多播路由选择协议
①连接在局域网上的多播路由器还必须与因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传递给所有的组成员。这需要使用多播路由选择协议。
②多播路由选择实际上就是找出以源主机为根节点的多播转发树。在多播转发树上的路由器不会收到重复的多播数据报(即多播数据报不应在互联网中兜圈子)
③多播路由选择协议的实现有三种方法:洪泛与剪除、隧道技术和基于核心的发现技术等。
4.4 实战:跨网段观看组播视频
(1)网络拓扑图
(2)在Win2003虚拟机上架设流媒体多播服务器
①安装Window Media Services组件。(为方便,这里简称为“WMS”)
②打开“WMS”,新建发布点,这里使用默认的“Sample_Broadcast”。
③在“属性”选项卡→“多播流”→启用“WMS多播数据写入器”。然后查看该写入器的属性,可以看到所使用的多播地址、端口和多播数据包的TTL。
④发布公告:在“公告”选项卡→“运行多播公告向导” →……→“添加流格式”中通过浏览找到“racecar_300.wmv”,然后继续设置直到完成。注意,会生成一个“Sample_Broadcast.nsc”文件。
⑤将“Sample_Broadcast.nsc”文件从Win2003虚拟机拷贝到WinXP,双击运行可观看在Win2003流媒体服务器上正在多播的视频。
(3)路由器配置
①R1启用多播路由,接口为密集模式。R2路由器配置方法相同
- R1#conf t
- Enter configuration commands, one per line. End with CNTL/Z.
- R1(config)#ip multicast-routing //启用多播路由协议
- R1(config)#interface fastEthernet /
- R1(config-if)#ip pim dense-mode //接口为密集模式
- R1(config-if)#exit
- R1(config)#interface serial /
- R1(config-if)#ip pim dense-mode //接口为密集模式
- R1(config-if)#exit
②查看R2多播路由表
- R2#show ip mroute
- (192.168.10.30, 239.192.2.67), ::/::, flags: T //多播路由
- Incoming interface: Serial2/, RPF nbr 172.16.0.1 //R2要请求239.192.2.67多播数据流,就要找172.16.0.1
- Outgoing interface list:
- FastEthernet0/, Forward/Dense, ::/::
③查看接口绑定的组播地址
- R2#show ip igmp groups
- IGMP Connected Group Membership
- Group Address Interface Uptime Expires Last Reporter Group Accounted
- 239.255.255.250 FastEthernet0/ :: :: 192.168.80.50
- 239.192.2.67 FastEthernet0/ :: :: 192.168.80.50 //流媒体多播组(IP:239.192.2.67),接收者192.168.80.50
- 224.0.1.40 FastEthernet0/ :: :: 192.168.80.10
④查看启用IGMP协议的接口
- R2#show ip igmp interface //本例中会fast0/0和serial2/0接口的启用IGMP的信息
⑤查看IGMP协议工作过程、主机加入和离开组播的报告
- R2#debug ip igmp //查看
- R2#undebug all //取消
第7章 网络层协议(4)_IGMP协议的更多相关文章
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识
第33章 SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...
- 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识
第25章 DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...
- (71)一篇文章带你熟悉HTTP协议
作者:涤生_Woo链接:http://www.jianshu.com/p/6e9e4156ece3來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本篇文章篇幅比较长,先 ...
- 第一篇 网站基础知识 第5章 自己动手实现HTTP协议
第5章 自己动手实现HTTP协议 我们知道HTTP协议是在应用层解析内容的,只需要按照它的报文的格式封装和解析数据就可以了,具体的传输还是使用的Socket,在第4章NioServer的基础上自己做一 ...
- 第五章Web应用与应用层协议
Web应用与应用层协议 本篇博文中的主要参考文献是<计算机网络高级教程>,分别是吴功宜老先生和吴英教授合著.这部教程是我研究生老师所推荐的网络必读科目,由于该教程讲解的基础知识详细,但内容 ...
- 【知识强化】第四章 网络层 4.3 IP
这节课我们来学习一下IP数据报的格式.那之所以把路由算法这一小节跳过呢,就是因为我们之后会要讲到路由的选择协议.那在路由选择协议这一块讲路由算法,我觉得是比较合适的.那我们先来看一下这节课要讲的知识. ...
- TCP协议与UDP协议的区别
TCP协议与UDP协议的区别(转) 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
随机推荐
- tile38 roaming-geofences 试用
tile38 支持动态实时的移动对象的数据监控 环境准备 docker-compose 文件 version: "3" services: app: image: tile ...
- PostgreSQL Q&A: Building an Enterprise-Grade PostgreSQL Setup Using Open Source Tools
转自:https://www.percona.com/blog/2018/10/19/postgresql-building-enterprise-grade-setup-with-open-sour ...
- 我发起并创立了一个 VMBC 的 子项目 D#
大家好, 我发起并创立了一个 VMBC 的 子项目 D# . 有关 VMBC , 请参考 <我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC> https ...
- Mongo 用户创建及权限管理
Mongo版本3.0之前使用的是db.addUser(),但3.0之后使用的是db.createUser() 内建的角色: 数据库用户角色:read.readWrite; 数据库管理角色:dbAdmi ...
- linux centos6 yum 安装lamp
centos 6.5 1.yum安装和源代码编译在使用的时候没啥区别,但是安装的过程就大相径庭了,yum只需要3个命令就可以完成,源代码需要13个包,还得加压编译,步骤很麻烦,而且当做有时候会出错,源 ...
- java直接量(literal)
直接量就是代码中直接使用的值,如 int i = 7; char c = 'a'; boolean b = false; 7.'a'.false就是直接量. java有三种类型的直接量:基本类型. ...
- C#实现Google S2算法
S2其实是来自几何数学中的一个数学符号 S²,它表示的是单位球.S2 这个库其实是被设计用来解决球面上各种几何问题的.值得提的一点是,除去 golang 官方 repo 里面的 geo/s2 完成度目 ...
- js this详解,事件的三种绑定方式
this,当前触发事件的标签 在绑定事件中的三种用法: a. 直接HTML中的标签里绑定 onclick="fun1()"; b. 先获取Dom对象,然后利用dom对象在js里绑定 ...
- NDK开发: 打印C代码的调试信息Log
1.引入头文件 #include <android/log.h> 2.修改Android.mk 在其中加入 LOCAL_LDLIBS+= -L$(SYSROOT)/usr/lib -llo ...
- TensorFlow:tf.nn.max_pool实现池化操作
tf.nn.max_pool(value, ksize, strides, padding, name=None) 参数是四个,和卷积很类似: 第一个参数value:需要池化的输入,一般池化层接在卷积 ...