第13章IGMP:Internet组管理协议
http://tools.ietf.org/html/rfc966
http://tools.ietf.org/html/rfc988
13.1 引言
1 2 . 4节概述了I P多播给出,并介绍了D类I P地址到以太网地址的映射方式。也简要说明了
在单个物理网络中的多播过程,但当涉及多个网络并且多播数据必须通过路由器转发时,情
况会复杂得多。
本章将介绍用于支持主机和路由器进行多播的
I n t e r n e t组管理协议( I G M P)。它让一个物理网络上的所
有系统知道主机当前所在的多播组。多播路由器需要这
些信息以便知道多播数据报应该向哪些接口转发。I G M P
在RFC 111 2中定义[Deering 1989]。
正如I C M P一样, I G M P 也被当作I P 层的一部分。
I G M P报文通过I P数据报进行传输。不像我们已经见到的其他协议, I G M P有固定的报文长度,
没有可选数据。
图1 3 - 1显示了I G M P报文如何封装在I P数据报中。
|*****************IP数据报********************|
|-----------IP首部---------------|---IGMP报文-|
|-----------20 byte--------------|---8 byte---|
|*********************************************|
I G M P报文通过I P首部中协议字段值为2来指明。
13.2 IGMP报文
图1 3 - 2显示了长度为8字节的I G M P报文格式。
|****************GMP数据报********************|
|0---3|4----7|8-----15|16-------------------31|
|版本 |-类型-|--保留--|--------检验和---------|
|--------------32位地址(D类IP地址)------------|
|*********************************************|
这是版本为1的I G M P。I G M P类型为1说明是由多播路由器发出的查询报文,
为2说明是主机发出的报告报文。检验和的计算和I C M P协议相同。
在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
在下一节中,当介绍I G M P如何操作时,我们将会更详细地了解它们。
13.3 IGMP 协议
13.3.1 加入一个多播组
多播的基础就是一个进程的概念,该进程在一个主机的给定接口上加入了一个多播组。
在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。
这里所指的进程必须以某种方式在给定的接口上加入某个多播组。
进程也能离开先前加入的多播组。
这些是一个支持多播主机中任何A P I所必需的部分。
使用限定词“接口”是因为多播组中的成员是与接口相关联的。
一个进程可以在多个接口上加入同一多播组。
13.3.2 IGMP 报告和查询
多播路由器使用I G M P报文来记录与该路由器相连网络中组成员的变化情况。
使用规则如下:
1) 当第一个进程加入一个组时,主机就发送一个I G M P报告。
如果一个主机的多个进程加入同一组,只发送一个I G M P报告。
3) 多播路由器定时发送I G M P查询来了解是否还有任何主机包含有属于多播组的进程。
4) 主机通过发送I G M P报告来响应一个I G M P查询,对每个至少还包含一个进程的组均要发回I G M P报告。
13.3.3 实现细节
为改善该协议的效率,有许多实现的细节要考虑。
首先,当一个主机首次发送I G M P报告时,并不保证该报告被可靠接收。
下一个报告将在间隔一段时间后发送,这个时间间隔由主机在0 ~ 1 0秒的范围内随机选择。
其次,当一个主机收到一个从路由器发出的查询后,并不立即响应,而是经过一定的时间间隔后才发出一些响应。
13.3.4 生存时间字段
我们注意到I G M P报告和查询的生存时间( T T L )均设置为1,这涉及到I P首部中的T T L字段。
一个初始T T L为0的多播数据报将被限制在同一主机。
在默认情况下,待传多播数据报的T T L被设置为1,这将使多播数据报仅局限在同一子网内传送。
更大的T T L值能被多播路由器转发。
13.3.5 所有主机组
在图1 3 - 3中,我们看到了路由器的I G M P查询被送到目的I P地址2 2 4 . 0 . 0 . 1。
该地址被称为所有主机组地址。它涉及在一个物理网络中的所有具备多播能力的主机和路由器。
当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。
这个组的成员无需发送I G M P报告。
13.4 一个例子
现在我们已经了解了一些I P多播的细节,再来看看所包含的信息。
首先,采用一个经过修改的n e t s t a t命令来报告每个接口上的多播组成员情况
显示了n e t s t a t - n i命令的输出结果。
13.5 小结
多播是一种将报文发往多个接收者的通信方式。
在许多应用中,它比广播更好,因为多播降低了不参与通信的主机的负担。
简单的主机成员报告协议( I G M P )是多播的基本模块。
在一个局域网中或跨越邻近局域网的多播需要使用本章介绍的技术。
广播通常局限在单个局域网中,对目前许多使用广播的应用来说,可采用多播来替代广播。
然而,多播还未解决的一个问题是在广域网内的多播。
习题
13.1 我们知道主机通过设置随机时延来调度I G M P的发送。
一个局域网中的主机采取什么措施才能避免两台主机产生相同的随机时延?
13.2 他们提到U D P缺少两个通过M B O N E传送音频采样数据的条件:
分组失序检测和分组重复检测。你怎样在U D P上增加这些功能?