【Internet组管理协议 IGMP报文及协议】
13.1 引言
12.4节概述了IP多播给出,并介绍了D类IP地址到以太网地址的映射方式 。也简要说明了在单个物理网络中的多播过程,但当涉及多个网络并且多播数据必须通过路由器转发时,情况会复杂得多 。
本章将介绍用于支持主机和路由器进行多播的Internet组治理协议(IGMP) 。它让一个物理网络上的所有系统知道主机当前所在的多播组 。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发 。IGMP在RFC 1112中定义[Deering 1989] 。
正如ICMP一样, IGMP 也被当作IP 层的一部分 。IGMP报文通过IP数据报进行传输 。不像我们已经见到的其他协议, IGMP有固定的报文长度,没有可选数据 。图13-1显示了IGMP报文如何封装在IP数据报中 。
IGMP报文通过IP首部中协议字段值为2来指明 。
13.2 IGMP报文
图1 3 - 2显示了长度为8字节的IGMP报文格式 。
这是版本为1的IGMP 。IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文 。检验和的计算和ICMP协议相同 。
组地址为D类IP地址 。在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址 。在下一节中,当介绍IGMP如何操作时,我们将会更具体地了解它们 。
13.3 IGMP 协议
13.3.1 加入一个多播组
多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组 。在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化 。
这里所指的进程必须以某种方式在给定的接口上加入某个多播组 。进程也能离开先前加入的多播组 。这些是一个支持多播主机中任何API所必需的部分 。使用限定词“接口”是因为多播组中的成员是与接口相关联的 。一个进程可以在多个接口上加入同一多播组 。
Stanford大学伯克利版Unix中的IP 多播具体说明了有关socket API的变化,这些变化在Solaris 2.x和ip(7)的文档中也提供了 。
这里暗示一个主机通过组地址和接口来识别一个多播组 。主机必须保留一个表,此表中包含所有至少含有一个进程的多播组以及多播组中的进程数量 。
13.3.2 IGMP 报告和查询
多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况 。使用规则如下:
1) 当第一个进程加入一个组时,主机就发送一个IGMP报告 。假如一个主机的多个进程加入同一组,只发送一个IGMP报告 。这个报告被发送到进程加入组所在的同一接口上 。
2) 进程离开一个组时,主机不发送IGMP报告,即便是组中的最后一个进程离开 。主机知道在确定的组中已不再有组成员后,在随后收到的IGMP查询中就不再发送报告报文 。
3) 多播路由器定时发送IGMP查询来了解是否还有任何主机包含有属于多播组的进程 。多播路由器必须向每个接口发送一个IGMP查询 。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此IGMP查询报文中的组地址被设置为0 。
4) 主机通过发送IGMP报告来响应一个IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报告 。
使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组 。当路由器收到要转发的多播数据报时,它只将该数据报转发到(使用相应的多播链路层地址)还拥有属于那个组主机的接口上 。
图1 3 - 3显示了两个IGMP报文,一个是主机发送的报告,另一个是路由器发送的查询 。该路由器正在要求那个接口上的每个主机说明它加入的每个多播组 。
推荐阅读
- 肉羊四季放牧管理及注意事项
- 因特网子网
- 猎豹清理大师如何管理系统进程
- 基于TCP/IP网络的管理结构和标记
- 意蜂饲养管理要点
- IOTP Internet开放贸易协议HTTP 补充
- 802.2分组在IPX网络上传输的标准
- 实时传输协议管理信息库
- Internet电子邮件保密增强:Part1-消息编码和鉴别过程
- HTTP 超文本传输协议状态管理的应用