多播、IGMP

1.何为多播

多播的范围比单播大,比广播小,是一对多的通信。
广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。

使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。拿一个使用UDP广播应用作为例子。如果网内有50个主机,但仅有20个参与该应用,每次这2 0个主机中的一个发送UDP广播数据时,其余30个主机不得不处理这些广播数据报。一直到UDP层,收到的UDP广播数据报才会被丢弃。这30个主机丢弃UDP广播数据报是因为这些主机没有使用这个目的端口。
多播的出现减少了对应用不感兴趣主机的处理负荷。使用多播,主机可加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。

1.1 多播组地址

多播组的IP地址使用的是D类IP地址,以1110开头。
在这里插入图片描述
分配的28bit均用作多播组号而不再表示其他。
多播组地址包括为1110的最高4bit和多播组号。范围从224.0.0.0到239.255.255.255。
多播地址中有一些特殊的地址:

地址特殊含义
224.0.0.0基地址(保留)
224.0.0.1本子网上所有参加多播的主机或路由器
224.0.0.22IGMPv3

下面会有224.0.0.1 的使用例子(IGMP查询报文)。
主机组:能够接收发往同一多播地址数据的主机集合,一个主机集合可以包含多个网络,主机组中的主机可以随时加入或退出主机组,就像看直播一样。

1.2 多播组地址到以太网地址的转换

IANA拥有一个以太网地址块,即高位24bit为00:00:5e,这意味着该地址块所拥有的地址范围从00:00:5e:00:00:00到00:00:5e:ff:ff:ff。IANA将其中的一半分配为多播地址。为了指明一个多播地址,任何一个以太网地址的首字节必须是01,这意味着与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:7f:ff:ff。

以太网多播地址(MAC地址)中的23比特如何与多播IP地址的23比特关联起来呢?
在这里插入图片描述
可以看出,多播组地址中的后23比特直接放入以太网地址中,但是注意,多播组地址只有前4比特是固定的1110,后面剩余的28比特都是可变的,如果只将多播组的后23比特放入以太网地址中,肯定会出现多映射的情况,即:1个MAC地址可能对应多个多播组地址,如:多播地址224.128.64.32(十六进制e0.80.40.20)和224.0.64.32(十六进制e0.00.40.20)都映射为同一以太网地址01:00:5e:00:40:20。
地址映射不唯一就要求设备驱动层或者IP层可以进行过滤。因为网卡可能接收到主机不想接收的多播数据帧。另外,如果网卡不提供足够的多播数据帧过滤功能,设备驱动程序就必须接收所有多播数据帧,然后对它们进行过滤。

1.3 单个物理网络的多播

  • 主机发送
    主机上的多播进程将目的IP地址指明为多播地址设备驱动程序将它转换为相应的以太网地址(按照上面的转换方式),然后将数据发送出去。主机必须保留一个表,此表中包含所有至少含有一个进程的多播组以及多播组中的进程数量。

  • 主机接收
    主机接收之前,要先保证自己已经加入某个多播组。通过告诉IP层,他们想接收发送给定多播地址的数据报,并且设备驱动程序能够接收这些多播帧。
    当主机收到多播数据报时,它向属于多播组的每一个多播进程均传送一个复制。

当把多播扩展到单个物理网络以外需要通过路由器转发多播数据时,复杂性就增加了。
需要有一个协议让多播路由器了解确定网络中属于确定多播组的任何一个主机。这个协议就是Internet组管理协议(IGMP)。

2. IGMP

IGMP(Internet group management protocol)Internet组管理协议。
IGMP与ICMP一样属于IP层
IGMP使用IP协议传输数据,IGMP报文的长度是固定的8个字节
在这里插入图片描述
IGMP报文通过IP首部中协议字段值为2来指明。

2.1 IGMP报文

在这里插入图片描述

  • IGMP类型:1表示是由多播组路由器发送的查询报文;2表示是主机发送的报告报文。
  • 校验和与ICMP协议相同。
  • 32位组地址就是多播组地址。查询报文中的地址为0,报告报文中的地址为要加入的组的地址。

2.2 IGMP报告与查询

在这里插入图片描述
上面几个部分需要注意的点:
1)一个主机首次发送IGMP报告时,并不能保证该报告被可靠接收,因为IP不保证可靠性,所以,下一个报告将会间隔一定时间后再次发送,间隔时间由主机在0-10秒随机选择。
2)进程离开时,会一声不吭地离开,当路由器发送的IGMP查询报文没人回应时,说明已经不存在主机在多播组中。
3)多播路由器发送的查询报告中目的IP地址为224.0.0.1,IGMP组地址为0.
4)当主机收到路由器的IGMP查询报文时,主机并不是立马回应,而是随机间隔一定时间后发送,因为一个网络上可能有同一个多播组的多个主机,只需要一个主机回应路由器就可以了,一个主机的回应同一个多播组中的其他主机也能收到,因为这些主机属于同一个多播组。就像QQ群里的一个人说话大家都能收到一样。
在这里插入图片描述
注意上图中的细节:TTL被设置为1,这使得多播数据报只在局域网中传递。
对发往一个多播地址的数据报从不会产生ICMP差错。当TTL值为0时,多播
路由器也不产生ICMP“超时”差错。

目的IP地址被设置为224.0.0.1,该地址被称为所有主机组地址,它涉及在一个物理网络中的所有具备多播能力的主机和路由器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值