主机扩展用于IP多点传送( 六 )


选择的值 。当一个定时器超时,会为相应的主机组产生一个报告 。因此,报告的产生时间分
散在D秒的间隔内,而不是都立即产生 。
2.被发送的报告的IP目的地址等于它要报告的主机组的地址,它的IP生存时间为1,
所以在同一网络上这一组的其它成员能侦听到该报告 。假如主机听到在那个网络上它所属的
组的报告,则主机停止那个组的定时器,不再产生那个组的报告 。因此,在通常情况下,仅
仅为出现在网络上的每个组生成一个报告,这是由延迟定时器最先超时的成员主机生成的 。
要注重的是,多播路由器接收所有IP多播数据报,因此不需要明确的指明它的地址 。还要
注重的是,路由器不需知道哪些主机属于一个组,而仅需知道是否至少有一个主机属于在特
定网络上的一个组 。
对以上描述的特性有两个例外 。第一,假如在请求收到以前,已经有一个报告延时定
时器在为一个组成员运行,则该定时器不会重置为一个新的随机值,而答应以它的当前值运
行 。第二,报告定时器不会因为主机是所有主机组(224.0.0.1)的成员而生成,这个成员关
系不会被报告 。
假如主机使用伪随机数生成器计算报告延迟时间,主机的单个IP地址之一应用作生成
器种子的一部分,以减少多宿主机生成相同的延迟序列的可能性 。
主机应该确保接收到的报告的IP目的地址字段和IGMP组地址字段有相同的IP组地
址 。以保证主机自己的报告不会因为错误的接收报告而取消 。主机应该丢弃除了主机成员请
求或主机成员报告类型以外的任何IGMP报文 。
多播路由器周期性地发送请求,以更新它所知的,在特定网络上目前的成员关系情况 。
假如在几次请求之后,没有接收到特定组的报告,则路由器假设这个组已经没有本地成员,
它们就不需转发从远端传来的那个组的多播数据报到本地网络上 。正常情况下,请求被发送
的频率很低(每分钟不超过一次),因此IGMP对主机和网络的开销非常小 。然而,当多播
路由器启动时,它可以发出几个时间间隔很小的请求,以便尽快获知本地成员的情况 。
当主机加入一个新的组时,它应该立即发送一个那个组的报告,而不是等待一个请求,
以防万一它是这个网络上该组的第一个成员 。考虑到初始的报告可能丢失或损坏,建议在一
个短的延迟后重复报告一到两次 。(达到这一目的的一种简单的方式是似乎仅仅那个组的请
求被接收,设置组随机报告延迟定时器 。以下的状态变换图解释了这种方法 。)
要注重的是,在一个没有多播路由器的网络上,当有主机加入一个新组时,唯一的IGMP
通信量是一个或多个报告的传送 。
状态变换图
通过下面的状态转换图,将更加正式地说明IGMP特性 。每个主机可能处于三种可能
的状态中的一种,这与在任意的单个网络接口上的一个单独的IP主机组有关 。
—非成员状态,当主机不属于这个接口上的组时 。这是所有网络接口上所有成员的初
始状态;它不需要主机的存储空间 。
—延时成员状态,当主机属于那个接口上的组时,需要为这个成员关系运行一个报告
延时定时器 。
—空闲成员状态,当主机属于那个接口上的组时,不需要为这个成员关系运行一个报
告延时定时器 。
有五种重大的事件能使IGMP状态变换:
—当主机决定加入这个接口的组时,出现“加入组”事件 。这只能出现在非成员状态 。

推荐阅读