PPP协议规范( 三 )


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确实有着不同的功能 。然而他们总是引起相同的转换 。
事件
操作
Up = lower layer is Uptlu = This-Layer-UpDown = lower layer is Downtld = This-Layer-DownOpen = administrative Opentls = This-Layer-StartedClose= administrative Closetlf = This-Layer-FinishedTO= Timeout with counter > 0irc = Initialize-Restart-CountTO- = Timeout with counter eXPiredzrc = Zero-Restart-CountRCR= Receive-Configure-Request (Good)scr = Send-Configure-RequestRCR- = Receive-Configure-Request (Bad) RCA = Receive-Configure-Acksca = Send-Configure-AckRCN = Receive-Configure-Nak/Rejscn = Send-Configure-Nak/RejRTR = Receive-Terminate-Requeststr = Send-Terminate-RequestRTA = Receive-Terminate-Acksta = Send-Terminate-AckRUC = Receive-Unknown-Code
RXJ= Receive-Code-Reject (permitted)
or Receive-Protocol-Reject
RXJ- = Receive-Code-Reject (catastrophic)
or Receive-Protocol-Reject scj = Send-Code-RejectRXR = Receive-Echo-Request;
or Receive-Echo-Reply
or Receive-Discard-Request ser = Send-Echo-Reply
4-1 状态迁移图
全部的状态转换如下表 。状态在水平轴 , 事件在垂直轴 。状态转换和动作备表示成:动作/新状态的形式 。多个动作用逗号分隔 , 无先后顺序 。状态后面跟的那个字母是说明性的脚注 。短划线("-")代表无效的转换 。

推荐阅读