[TOC]
# 掌握IGMP协议的报文格式
# 掌握IGMP协议的工作原理
# 理解多播组地址到以太网地址的映射
单播(unicast): 单个源站与单个目的站之间的通信叫作单播,IP数据报中的源IP地址和目的IP地址分别代表了源站和目的站。
绝大多数的网络应用程序是单播
多播/组播(multicast): 一个源站和多个目的站之间的通信叫作多播。
广播(broadcast):广播源站和目的站是一对多的,源站只有一个,但所有其它主机都是目的站Internet不支持广播,因为这会产生非常大的通信量
优点:采用组播技术后,即使用户数量成倍增长,主干网带宽不需要随之增加。从而解决了宽带应用对带宽和服务质量的要求问题
组播比多个单播具有更小的分组时延
多播组中的成员是动态的。一个进程可请求其主机参加某个特定组,或在任意时间退出该组
当数据报传送到以太网时,以太网利用硬件进行多播,交付给属于该组成员的主机
多播以太网地址的前25位是0000000100000000010111100这意味着与IP多播相对应的以太网地址范围从01005E000000到01005E7FFFFF。然后将多播IP地址的低23位映射到以太网地址中的低23位。
由于D类地址的组标识字段长为28bit,将低23位复制到多播MAC地址中,有5bit未使用,所以映射是多对一的。
32个多播IP地址映射到一个以太网多播地址。既然地址映射不是惟一的,那么设备驱动程序或lP层就必须对数据报进行过滤。因为网卡可能接收到主机不想接收的多播数据帧。另外,如果网卡不提供足够的多播数据帧过滤功能,设备驱动程序就必须接收所有多播数据帧,然后对它们进行过滤。
IGMP ( lnternet Group Management Protocol)协议,IGMP位于网络层。
IGMP协议运行于主机和主机直接相连的路由器之间,是IP主机用来报告多播组成员身份的协议
利用IGMP协议,一方面可以使主机通知本地路由器希望加入并接收某个特定多播组的信息;另一方面,路由器可以周期性地查询局域网内某个已知组的成员是否处于活动状态。 IGMP使用预留的组播地址224.0.0.1与本地路由器通信。
IGMP协议目前有三个版本IGMP、IGMPv2和IGMPv3。
其中IGMPv2有3种报文类型:
查询报文:路由器查询多播组中是否有活跃成员,分为一般查询和特定查询 成员关系报告报文:加入多播组或响应查询报文。 退出报告报文:离开多播组。
IGMP报文被封装在IP数据报中,IP层有3个字段需要注意:
每个主机维护一张成员关系表,成员关系表是**<进程名,组名>表项的集合。当一个进程P要加入一个新组MG时,就向主机发出申请,主机就在成员关系表中增加<P, MG>**表项。
路由器也维护一个多播地址表,给出了连接到每一个接口的成员关系。如果对于这些接口中的一个组有兴趣时,路由器就发送成员关系报告报文,以记录连接在它的接口上的所有的多播组。 IGMP协议要求把成员关系报告报文在很短的时间内发送两次。这样,如果第一个报文丢失或受到损伤,那么第二个报文可以代替它。
多播路由器负责监视局域网上的所有主机或路由器,多播路由器周期性地发送一般查询报文,在这个报文中,组地址被置为0.0.0.0。
路由器期望着在它的组表中的每一个组的回答,甚至新的组也可以回答。查询报文的最大响应时间是10秒。当主机路由器收到一般查询报文时,如果它对一个组感兴趣,就发送成员关系报告报文。
IGMP使用延迟响应策略,避免不必要的通信量。当主机或路由器收到查询报文时,它不是立即响应,而是延迟响应
主机或路由器使用一个随机数产生计时器,它的截止时间是1~10秒。截止时间可以使用1秒或更短的步长。
表中的每一个组都设置计时器。每个主机或路由器在发送成员关系报告报文之前都要等待它的计时器到时。在这段等待时间中,如果在同一组中的其它主机或路由器的计时器先到了截止时间,那么这个主机或路由器就发送成员关系报告报文。因为这个报文是广播发送的,等待的主机或路由器都能收到这个报文,并知道没有必要对这个组发送重复的报文;因此,等待的主机或路由器就取消发送成员关系报告。