📄 rfc1661.txt
字号:
3-6 网络层协议阶段
一旦PPP完成了前面的阶段,每一个网络层协议(例如IP,IPX,或AppleTalk)必须被适当的网络控制协议(NCP)分别设定。每个NCP可以随时被打开和关闭。
执行笔记:
因为一次执行最初可能需要大力浪的时间用于链路质量检测,所以当等待peer设定NCP的时候,执行应该避免使用固定的timeouts。
当一个NCP处于Opened状态时,PPP将携带相应的网络层协议packets。当相应的NCP不处于Opened状态时,任何接收到的被支持的网络层协议packets都将被静静的丢弃。
执行记录:
当LCP处于Opened状态时,任何不被该执行所支持的协议packets必须在Protocol-Reject里返回。只有支持的协议才被静静的丢弃。
在这个阶段,链路通信量由LCP,NCP,和网络层协议packets的任意可能的联合组成。
3-7 链路终止阶段
PPP可以在任意时间终止链路。引起链路终止的原因很多:载波丢失、认证失败、链路质量失败、空闲周期定时器期满、或者管理员关闭链路。
LCP用交换Terminate(终止)packets的方法终止链路。当链路正被关闭时,PPP通知网络层协议,以便他们可以采取正确的行动。
交换Terminate(终止)packets之后,执行应该通知物理层断开,以便强制链路终止,尤其当认证失败时。 Terminate-Request(终止-要求)的发送者,在收到Terminate-Ack(终止-允许)后,或者在重启计数器期满后,应该断开连接。收到Terminate-Request的一方,应该等待peer去切断,在发出Terminate-Request后,至少也要经过一个Restart time(重启时间),才允许断开。PPP应该前进到链路死亡阶段。
在该阶段收到的任何非LCP packets,必须被静静的丢弃。
执行笔记:
LCP关闭链路就足够了,不需要每一个NCP发送一个Terminate packets。相反,一个NCP关闭却不足以引起PPP链路的终止,即使那个NCP是当前唯一一个处于Opened状态的NCP。
4 自动机协商选项
finite-state automaton(有限态自动机)由事件、动作和状态转换定义。事件包括接收外部命令,例如Open and Close(打开和关闭)、重启定时器期满、和接收从peer来的packets。动作包括启动重启定时器和向peer传输packets。
一些packets类型--Configure-Naks(设定-成功)和Configure-Rejects(设定-拒绝),或Code-Rejects(编码-拒绝)和Protocol-Rejects(协议-拒绝),或Echo-Requests(回波-要求),Echo-Replies(回波-应答)和Discard-Requests(丢弃-要求)--在自动机描述中不加以区分。从后面的描述可知,这些packets确实有着不同的功能。然而他们总是引起相同的转换。
Events Actions
Up = lower layer is Up tlu = This-Layer-Up
Down = lower layer is Down tld = This-Layer-Down
Open = administrative Open tls = This-Layer-Started
Close= administrative Close tlf = This-Layer-Finished
TO+ = Timeout with counter > 0 irc = Initialize-Restart-Count
TO- = Timeout with counter expired zrc = Zero-Restart-Count
RCR+ = Receive-Configure-Request (Good) scr = Send-Configure-Request
RCR- = Receive-Configure-Request (Bad)
RCA = Receive-Configure-Ack sca = Send-Configure-Ack
RCN = Receive-Configure-Nak/Rej scn = Send-Configure-Nak/Rej
RTR = Receive-Terminate-Request str = Send-Terminate-Request
RTA = Receive-Terminate-Ack sta = Send-Terminate-Ack
RUC = Receive-Unknown-Code scj = Send-Code-Reject
RXJ+ = Receive-Code-Reject (permitted)
or Receive-Protocol-Reject
RXJ- = Receive-Code-Reject (catastrophic)
or Receive-Protocol-Reject
RXR = Receive-Echo-Request ser = Send-Echo-Reply
or Receive-Echo-Reply
or Receive-Discard-Request
4-1 状态迁移图
全部的状态转换如下表。状态在水平轴,事件在垂直轴。状态转换和动作备表示成:动作/新状态的形式。多个动作用逗号分隔,无先后顺序。状态后面跟的那个字母是说明性的脚注。短划线('-')代表无效的转换。
| State
| 0 1 2 3 4 5
Events| Initial Starting Closed Stopped Closing Stopping
------+-----------------------------------------------------------
Up | 2 irc,scr/6 - - - -
Down | - - 0 tls/1 0 1
Open | tls/1 1 irc,scr/6 3r 5r 5r
Close| 0 tlf/0 2 2 4 4
|
TO+ | - - - - str/4 str/5
TO- | - - - - tlf/2 tlf/3
|
RCR+ | - - sta/2 irc,scr,sca/8 4 5
RCR- | - - sta/2 irc,scr,scn/6 4 5
RCA | - - sta/2 sta/3 4 5
RCN | - - sta/2 sta/3 4 5
|
RTR | - - sta/2 sta/3 sta/4 sta/5
RTA | - - 2 3 tlf/2 tlf/3
|
RUC | - - scj/2 scj/3 scj/4 scj/5
RXJ+ | - - 2 3 4 5
RXJ- | - - tlf/2 tlf/3 tlf/2 tlf/3
|
RXR | - - 2 3 4 5
| State
| 6 7 8 9
Events| Req-Sent Ack-Rcvd Ack-Sent Opened
------+-----------------------------------------
Up | - - - -
Down | 1 1 1 tld/1
Open | 6 7 8 9r
Close|irc,str/4 irc,str/4 irc,str/4 tld,irc,str/4
|
TO+ | scr/6 scr/6 scr/8 -
TO- | tlf/3p tlf/3p tlf/3p -
|
RCR+ | sca/8 sca,tlu/9 sca/8 tld,scr,sca/8
RCR- | scn/6 scn/7 scn/6 tld,scr,scn/6
RCA | irc/7 scr/6x irc,tlu/9 tld,scr/6x
RCN |irc,scr/6 scr/6x irc,scr/8 tld,scr/6x
|
RTR | sta/6 sta/6 sta/6 tld,zrc,sta/5
RTA | 6 6 8 tld,scr/6
|
RUC | scj/6 scj/7 scj/8 scj/9
RXJ+ | 6 6 8 9
RXJ- | tlf/3 tlf/3 tlf/3 tld,irc,str/5
|
RXR | 6 7 8 ser/9
那些其中运行着重启计时器的状态,是可以由存在的TO事件确认的。只有 Send-Configure-Request,Send-Terminate-Request和Zero-Restart-Count动作才启动或者重新启动重启定时器。当从任意一个定时器运行的状态转换到一个定时器不运行的状态时,重启定时器(Restart timer)停止。
根据消息通过体系机构而不是信号通知体系机构,(人们)定义了事件和动作。如果希望一个动作去控制特定的信号(如DTR),那么就可能需要额外的动作。
[p] 被动选项;见Stopped状态讨论。
[r] 重启选项;见Open事件讨论。
[x] 交叉连接;见RCA事件讨论。
4-2 状态
下面是每个自动机状态的详细描述。
Initial(初始):
在初始状态,下层是不可获得的(Down),并且没有Open发生。Restart timer不在该状态下运行。
Starting(启动):
启动状态是初始状态的Open相似物。一个管理的Open被初始化,但下层仍旧不可用(Down)。Restart timer不在该状态下运行。
当下层变为可用(Up)时,发送一个Configure-Request。
Closed(关闭):
在关闭状态,链路时可用的(Up),但是没有Open发生。Restart timer不在该状态下运行。当收到Configure-Request packets时,发送一个Terminate-Ack。Terminate-Acks被静静的丢弃,以防止造成循环。
Stopped(停止)
停止状态是关闭状态的Open相似物。当在This-Layer-Finished动作之后,或是发送Terminate-Ack之后,自动机正等待Down事件的时候,进入该状态。Restart timer不在该状态下运行。
当收到Configure-Request packets时,发送一个适当的响应。当收到其他packets时,发送一个Terminate-Ack。Terminate-Acks被静静的丢弃,以防止造成循环。
基本原理:
停止状态是链路终止,链路设定失败,和其他自动机失败模式的一个接合(中间)状态。这些各自独立的状态被潜在的联合起来。
在Down事件应答(从This-Layer-Finished动作)和Receive-Configure-Request事件之间,有一种竞赛条件。当Configure-Request在Down事件之前到来,代替Down事件的是自动机返回到Starting状态。这防止了由重复产生的攻击。
执行选项:
在peer对Configure-Requests响应失败之后,一个执行可以被动的等待peer发送Configure-Requests。在这种情况下,在状态Req-Sent,Ack-Rcvd,和Ack-Sent里,动作This-Layer-Finished不用于TO- 事件。
这个选项对于专用电路或者没有可用的状态信号的电路有用,但禁止用于交换电路。
Closing(结束)
在结束状态里,为了终止连接作了一次尝试。发送了一个Terminate-Request,并运行了Restart timer,但没有收到Terminate-Ack。
当收到Terminate-Ack时,就进入了Closed状态。当Restart timer期满时,传输一个新的Terminate-Request,并且Restart timer被重新启动。在Restart timer达到Max-Terminate时间后,就进入了Closed状态。
Stopping(停下)
停下状态是结束状态的Open相似物。发送了一个Terminate-Request,并运行了Restart timer,但没有收到Terminate-Ack。
基本原理:
停下状态提供了一个很好的机会在允许新的通信量之前终止链路。在链路终止后,经由Stopped或Starting状态,会出现一个新的配置(设定)。
Request-Sent(要求-发送)
在要求-发送状态,尝试着配置(设定)连接。发送了一个Terminate-Request,并运行了Restart timer,但没有收到Terminate-Ack。
Ack-Received(Ack-接收)
在Ack-接收状态,发送了一个Configure-Request,接收了一个Configure-Ack。因为还没有发送Configure-Ack,所以Restart timer仍旧运行。
Ack-Sent(Ack-发送)
在Ack-发送状态,Configure-Request和Configure-Ack都被发送了。但没有接收到Configure-Ack。因为还没有接收到Configure-Ack,所以Restart timer仍旧运行。
Opened(开启)
在开启状态,发送了一个Configure-Ack,也接收了一个Configure-Ack。Restart timer不运行。
当进入该状态时,执行应该通知上层,现在Up。相反,当离开该装态时,执行应该通知上层,现在Down。
4-3 事件
自动机里的状态转换和动作是由事件引起的。
Up:
当低层指出已准备好携带packets时,发生此事件。
典型的,该事件被调制解调器处理或呼叫过程,或被一些其他的连接于物理媒体的PPP用于通知LCP,链路正进入链路建立阶段。
它也能被LCP用于通知每个NCP,链路进入网络层协议阶段。即,来自LCP的动作This-Layer-Up触发了NCP中的Up事件。
Down:
当低层指出不再准备携带packets时,发生此事件。
典型的,该事件被调制解调器处理或呼叫过程,或被一些其他的连接于物理媒体的PPP用于通知LCP,链路正进入链路死亡阶段。
它也能被LCP用于通知每个NCP,链路离开网络层协议阶段。即,来自LCP的动作This-Layer-Down触发了NCP中的Down事件。
Open:
该事件指出链路的通信量是可以管理的:即,网络管理者(人或程序)指出链路允许被Opened。当这一事件发生,且链路不处于Opened状态时,自动机则试图给peer发送配置packets。
如果自动机不能开始配置(下层是Down,或者前一个Close事件还没有结束),那么链路的建立将被自动的推迟。
当收到一个Terminate-Request,或者其他导致链路不可用的事件发生时,自动机将进入一个状态,在那里链路准备re-open。无需额外的管理干涉。
执行选项:
经验表明:当用户想就链路进行重新谈判时,他们将额外的执行一条Open命令。这表明新的值将被协商。既然这不是Open事件的含义,那就暗示着在Opened, Closing, Stopping或Stopped状态,当执行一条Open用户命令时,执行发行一个Down事件,紧接着一个Up事件。一定要注意不能有从另一个源发生的Down事件的干涉。紧接着Up事件的Down事件将引起一次有秩序的链路的再协商(通过先前进到Starting状态,再进入到Request-Sent状态)。该再协商没有负面影响。
Close:
该事件意味着链路没有通信量。即,网络管理者(人或程序)指示链路不允许被开放。当该事件发生且链路不处于Closed状态时,自动机试图终止连接。拒绝重新配置链路的尝试,直到一个新的Open事件发生。
执行笔记:
当认证失败,链路应该被终止,以防止受到重复性的攻击和为其他用户服务。这可以通过模仿一个Close事件给LCP,然后紧跟着一个Open事件来完成,既然链路在管理上是可被访问的。一定要注意不能有从另一个源发生的Down事件的干涉。
紧接着Up事件的Down事件将引起一次有秩序的链路的再协商(通过先前进到Closing状态,再进入到Stopping状态),This-Layer-Finished动作能断开链路的连接。在Stopped或Starting状态,自动机等待下一次连接尝试。
Timeout (TO+,TO-):
该事件表明Restart timer期满。Restart timer用于记录对Configure-Request和Terminate-Request packets的响应的时间。
TO+事件表明Restart counter持续大于零,它触发了相应的Configure-Request或Terminate-Request packet的发送。
TO-事件表明Restart counter持续不大于零,不再需要发送packets。
Receive-Configure-Request (RCR+,RCR-):
当收到一个来自peer的Configure-Request packet时,该事件发生。Configure-Request packet表明希望开创一个连接并且可以指定配置选项。
RCR+事件表明Configure-Request是可接受的,并且触发相应的Configure-Ack的传输。
RCR-事件表明Configure-Request是不可接受的,并且触发相应的Configure-Nak 或Configure-Reject的传输。
执行笔记:
这些事件可以发生在已经处于Opened状态的连接上。该执行必须准备立即再协商配置选项。
Receive-Configure-Ack (RCA):
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -