跳到主要内容

6. Host State Diagram (主机状态图)

6. 主机状态图 (Host State Diagram)

主机行为由下面的状态转换图更正式地指定。对于任何单个网络接口上的任何单个 IP 组播组, 主机可能处于三种可能状态之一:

  • "非成员 (Non-Member)"状态, 当主机不属于接口上的该组时。这是所有网络接口上所有成员资格的初始状态; 它不需要在主机中存储。

  • "延迟成员 (Delaying Member)"状态, 当主机属于接口上的该组并且该成员资格有正在运行的报告延迟计时器时。

  • "空闲成员 (Idle Member)"状态, 当主机属于接口上的该组并且该成员资格没有正在运行的报告延迟计时器时。

有五个重要事件可以导致 IGMP 状态转换:

  • "加入组 (join group)": 当主机决定加入接口上的组时发生。只能在非成员状态下发生。

  • "离开组 (leave group)": 当主机决定离开接口上的组时发生。只能在延迟成员和空闲成员状态下发生。

  • "收到查询 (query received)": 当主机收到有效的通用成员资格查询消息或有效的组特定成员资格查询消息时发生。

  • "收到报告 (report received)": 当主机收到有效的 IGMP 成员资格报告消息 (第 1 版或第 2 版) 时发生。

  • "计时器到期 (timer expired)": 当接口上该组的报告延迟计时器到期时发生。只能在延迟成员状态下发生。

                              ________________
| |
| |
| |
| |
--------->| Non-Member |<---------
| | | |
| | | |
| | | |
| |________________| |
| | |
| leave group | join group | leave group
| (stop timer, |(send report, | (send leave
| send leave if | set flag, | if flag set)
| flag set) | start timer) |
________|________ | ________|________
| |<--------- | |
| | | |
| |<-------------------| |
| | query received | |
| Delaying Member | (start timer) | Idle Member |
---->| |------------------->| |
| | | report received | |
| | | (stop timer, | |
| | | clear flag) | |
| |_________________|------------------->|_________________|
| query received | timer expired
| (reset timer if | (send report,
| Max Resp Time | set flag)
| < current timer) |
-------------------

全系统组 (地址 224.0.0.1) 作为特殊情况处理。主机在每个接口上以该组的空闲成员状态启动, 从不转换到另一个状态, 也从不为该组发送报告。