网络层8——IP多播
目录
一、什么是多播?
二、在局域网进行多播
三、IGMP和协议多播路由选择协议
1、IP多播的两种协议
(1)IGMP协议的实现和原理
(2)多播路由选择协议
1)洪范与剪除
2)隧道技术
3)基于核心的发现技术
一、什么是多播?
多播就是一对多的通信,但不是广播,广播是对所有,多播是部分
多播的主要特点是节省网络资源
多播依靠多播路由器实现,多播路由器也可以实现单播IP数据报
IP多播分组使用的目的地址是D类地址,叫做多播IP地址
D类地址前四位是1110
因此可以标识的范围是:224.0.0.0 ~ 239.255.255.255
多播地址只能用于目的地址,而不能用于源地址
首部协议是2,标识使用IGMP协议报文(网络组管理协议)
因此,多播数据报不产生ICMP报文,
因此,PING命令后面加 多播地址,将得不到回应
二、在局域网进行多播
以太网MAC地址中(48位),第一个字段的最低为为1时,为多播地址(MAC地址的第8位)
48位的多播地址,前25位固定不变,为01-00-5E,只有后23位可作为多播
IP多播地址如何转换为MAC地址?
48位MAC地址,32位IP多播D类地址
前25位置不变,为01-00-5E
后23位由IP地址的后23位构成
三、IGMP和协议多播路由选择协议
1、IP多播的两种协议
多播的目的主机可以分散在不同的局域网
一个多播目的地址的所有目的主机组成一个多播组
(1)IGMP协议的实现和原理
IGMP不知道IP多播组包含的主机数量,也不知道组员分布在哪些主机上
IGMP协议的作用是,让链接在本地居局域网的多播路由器知道:
本局域网是否有主机参加 / 退出了多播组
IGMP使用IP数据报传递报文,即IGMP报文作为IP数据报的数据部分
IGMP的工作分成两个阶段:
第一,加入:某主机要加入某多播组,该主机要向对应多播组发送IGMP报文,声明加入
本地多播路由器依据多播路由协议,将组员关系通知其他多播路由器
第二,探寻:多播路由器周期性测探本局域网的组员情况,只要有一台组成员,就认为该组活跃
如果多次探寻没有回应,则认为本网络所有主机不在多播组内,不再对其他多播路由 器转发组员关系
IGMP实现的具体措施:
(1)参加分组的主机和多播路由器如何通信?
主机和多播路由器之间都使用IP多播,并且尽量使用硬件传播
没有IP多播的主机不会收到IGMP报文
(2)多播路由器如何对分组进行探询?
多播路由器,,探询组员时,对所有分组发送询问报文
(但也允许对一个组发送)
(3)如果一个网络链接有多个多播路由器,怎么办?
迅速选择其中一个负责运行,不乱
(4)如果一台主机同时参加多个分组,如何回应询问?
IGMP询问报文设置一个数值N,指明最长响应时间,
主机收到多个询问时,对每一个多播分组随机设置一个0~N的值
后按照N值从小到大的顺序发送回应
(5)路由器对本网络进行探询,主机如何监听和回应?
同一个组内的所有主机都需要监听
但是只要一个主机回复
一旦有一个主机回复,其他主机就不需要回复
(6)如果一台主机的多个进程加入了某分组,怎么就收信息?
主机只收一个多播数据报副本,然后给每一个进程转发
(7)多播路由器的发送者 和 接收者 都不知道多播组的成员数量和具体情况
对主机中的进程也是如此
综上,仅仅知道有没有是不够的
还需要知道具体发给哪个主机
哪个主机是多播的组员
因此还需要多播路由选择协议
(2)多播路由选择协议
由于每一台主机可以随时加入 / 退出一个多播组
因此,多播路由协议必须随时进行动态调整多播路由
(而单播路由往往只有网络拓扑发生变化才需要更新调整)
没有参加任何多播分组的局域网中的主机,也可以向任何多播分组发送多播数据报
多播数据报可以通过没有任何多播组员的局域网
即,多播数据报通过的网络不一定非要有多播组成员
多播路由转发多播数据报有三种方式:
洪泛与剪除、隧道技术、基于核心的发现技术
1)洪范与剪除
适合较小的分组,且所有分组的网络都是相邻的
第一步:源路由器对所有路由器进行广播
为避免数据兜圈子,采用反向路径广播
反向路径广播:对目的路由器,每次收到一个数据分组,都要检查该数据分组是否是从源路由器到本路由器的最短路径
如果不是,丢弃;是,接收
第二步:判断是从源头发送来的数据报,则向其他方向转发数据分组,除了接收方向
第三步:如果同时收到,多个相同源路径的数据报,则选择路径上与本路由器相邻的,IP地址最小的路由器的路径
第四步:如果数据到某一个路由器,发现本网络没有分组成员,则剪除;否则加入多播转发树
2)隧道技术
适用于多播组在地理上很分散的情况
使用情景:网络支持多播,但是路由器不支持多播
此时路由器对多播数据报进行再封装
加上普通IP数据报首部
成为一个单播数据报
然后通过隧道传播
到达目的路由器后,剥去IP首部,成为多播数据报
3)基于核心的发现技术
适合大范围变动的多播分组
对每一个多播组指定一个核心路由器,给出单播IP地址
同时根据洪泛和剪除建立多播转发树
具体实现是:
当一个路由器A向该核心路由器转发多播数据报时,
途中的每一个路由器都要对该多播数据报进行检查
如果途中的某一个路由器B是该分组内的路由器
则B向分组内成员转发多播数据报
如果发来的是一个请求加入的数据报
则B将之加入路由信息
并向A通过隧道技术发送每一个多播数据报的副本
这样,就扩大了分组的范围,因此称为发现