📄 rfc2236.txt
字号:
- "发送离开 " 对于接口上的组。如果该接口的状态说查询者正在运行IGMPv1, 该反应应被跳过。如果说我们是最后一个主机的该状态标志被清除,该反应可被跳过。该离开消息被送给所有路由器组(224.0.0.2)。
- "设置状态" ,指我们是最后发送报告给该组的主机 。
- "清除状态", 指因为我们不是最后发送报告给该组的主机 。
- "开始定时器" ,为此接口上的组而定。使用一个唯 一的选 择值(从0到最大的响应时间间隔)延时值, 在此最大的响应时间在查询中规定。如果这是一个非请求的报告,该定时器会被设为一个唯 一的选 择值(从0到最大的响应时间间隔)延时值。
- "重置定时器 " 对于该接口上的组设为一个新的数值,其延时数值从从0到最大的响应时间间隔)延时值, 和"开始定时器"中所说的一样。
- "停止定时器 " 对于接口上的该组。
在所有如下的状态报文中,每一个状态传送弧都被标以引起该传送的事件,并且,在插入符中,有在传送中的一个反应标识。注意该传送已经被事件引发了;即使该反应是有条件的,该传送仍然发生。
________________
| |
| |
| |
| |
--------->| 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) 被处理为一个特别的事例。对于每个接口上的组,该主机开始于空闲成员状态,并且从不发送针对此组的报告。
另外,考虑到某个单一的网络接口一个主机可以是在两个可能状态中的一个:
- "无 IGMPv1 路由器存在", 当该主机没有听到针对[版本 1 的路由器存在超时]的IGMPv1风格的查询时,此为初始状态。
- "IGMPv1 路由器存在", 当该主机已听到了在针对[版本 1 的路由器存在超时]的一个IGMPv1 风格的查询时。
此处有两个事件,能导致状态的改变:
- "IGMPv1 查询收到", 当主机接收到一个带有最大响应时间域设为0的查询时产生。
- "定时器超时", 当定时器设为提示有一个 IGMPv1 的路由器存在已过期。加入一个单个的反应能被一个事件所启动:
"设定定时器 ", 设定定时器为其最大的值[版本 1 的路由器存在超时]且开始或重新开始它。
________________
| |
| |
| No IGMPv1 |
| Router |
| Present |
| |
---->| |----
| | | |
| |________________| |
timer expires | | IGMPv1 query
| ________________ | received
| | | | (set timer)
| | | |
| | | |
-----| IGMPv1 |<---
| Router |
| Present |
| |
---->| |----
| |________________| |
| |
| IGMPv1 query received |
| (set timer) |
---------------------------
7. 路由器状态报文
路由器的行为很大程度上由如下的传送提报文所定义。
考虑到 任一个单一的邻接网络,一个路由器可为两个可能状态中的一个 :
- "查询者", 当该路由器设计为在此网络上传送IGMP 成员关系查询时。
- "非查询者", 当此处是另一个设为在此网络上传送IGMP成员关系查询的路由器。
如下的三个事件能导致路由器改变状态:
- "查询定时器超时" 发生在定时器设为查询传送超时时。
- "从低IP地址的路由器上收到的查询消息" 发生在从在同一个网络上且有低IP地址的路由器上接收到IGMP 成员查询时。
- "其它的查询者存在定时器超时" 发生在,当定时器设为提示另一个此网络上拥有低IP地址的查询者超时时。
此处有三个反应,可用来响应以上的事件:
- "启动一般查询定时器" 针对一个邻接网络。
- "启动另一个查询者存在定时器" 针对于该邻接网络[其它查询者存在周期。
- "发送一般查询" 在邻接网络上发送。一般的查询被发 给所有的系统组(224.0.0.1),并且有[查询响应周期]的最大的响应时间 。
--------------------------------
_______|________ gen. query timer |
--------- | | expired |
| Initial |---------------->| | (send general query, |
--------- (send gen. q., | | set gen. q. timer) |
set initial gen. q. | |<----------------------
timer) | Querier |
| |
-----| |<---
| | | |
| |________________| |
query received from a | | other querier
router with a lower | | present timer
IP address | | expired
(set other querier | ________________ | (send general
present timer) | | | | query,set gen.
| | | | q. timer)
| | | |
---->| Non |----
| Querier |
| |
| |
---->| |----
| |________________| |
| query received from a |
| router with a lower IP |
| address |
| (set other querier |
| present timer) |
---------------------------
一个路由器应该在所有的邻接网络上开始于初始状态,并且立即移到查询者状态。
另外,为了保持和那些有成员的组的联系,在考虑到任一个位于单个邻接的网络上的单一IP组播组时,一个路由器可处于四个可能状态:
- "无成员存在" 状态,当已 发送该组播组报告的网络上没有主机存在时。 这对于该路由器上所有的组来说是一个初始状态;它不需要路由器的存储。
- "成员存在" 状态, 当已 发送该组播组报告的网络上有一个主机存在时。
- "版本1成员存在" 状态,当对于该组已发送版本1成员组报告的网络上有一个主机存在时。
- "检测成员关系" 状态,当路由器已接收到了一个离开组消息,今明两天没有听到针对组播组的成员报告。
此处有六个明显的能导致路由器状态改变的事件:
- "版本v2 报告收到" 发生在当路由器接收到针对该接口上该组的版本2成员关系报告时。为了有效,该报告消息必须至少有8个字节长,并且必须有正确的IGMP 检测字。
- "版本v1 报告收到 " 发生在当路由器收到了针对该接口上该组的版本1的成员报告 。 应用了同样合法的请求。
- "离开收到" 发生在当路由器接收到针对该接口上的该组的IGMP 组离开消息时。为使其有效,此离开组的消息必须至少有8个字节长,并且必须有正确的IGMP校验字。
- "定时器超时" 发生在当定时器为一个组成员设置后超时时。
- "重传定时器超时" 发生在为重传一个特定组查询的定时器超时时。
- "版本v1 主机定时器超时" 发生在当为提示版本1的主机作为组成员存在的定时越野时。
此处有六个可能的反应,它可能对以上的事件反应:
- "开始定时器" 针对接口上的组成员- 也重置定时嚣为其初始值 [组成员生存期]如果该定时器当前正在运行。
- "开始定时器*" 针对接口上的的组成员- 该替代的响应设此计时器为[最后的组成员生存期] * [最后的成员查询计数] 如果该路由器是一个查询者,或是 包中的[最大的响应时间] * [最后的成员查询计数]如该路由器是一个非查询者。
- "开始重传定时器" 针对于该口上的组成员 [最后的成员查询周期]。
- "开始版本1主机定时器" 针对于该接口上的组成员,也重置该定时器为其初始值[组成员周期] 如果该定时器当前正在运行。
- "发送特定组查询" 针对于邻接网络上的组。特定组查询被发给所查询的 组中,并且有着[最后成员查询周期]的最大的响应时间 。
- "通知路由+" 通知路由协议在此连接的网络上该组的成员。
- "通知路由 -" 通知路由协议在此连接的网络上不在有该组的成员。
对于路由器查询状态的状态报文如下 :
________________
----------------------------| |<-----------------------
| | |timer expired |
| timer expired| |(notify routing -, |
| (notify routing -)| No Members |clear rxmt tmr) |
| ------->| Present |<------- |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -