4.1状态转移表
以下就是完整的状态转移表。状态水平列出来的。低层仍然没有准备好。超时计
时器也没有运行在此状态下。
当低层变得可用时,就发送配置请求包。
Closed状态
在此状态下,连接有效,但是没有出现Open事件。超时计时器也没有运行在
此状态下。
此时接收到配置请求包后,将发送终止请求包。接收到终止确认包将被静默丢弃
以免产生循环。
Stopped状态
此状态是在Closed状态发生了Open事件后迁移而来的。当自动机在进
行了tlf动作后或发送了终止请求包后在等待Down事件时就进入此状态。超时计时
器也没有运行在此状态下。
此时接收到配置请求包后,将做出合适的回答。接收到其他类型的包时,就发送
终止确认包。接收到终止确认包将被静默丢弃以免产生循环。
基本原理:
Stopped状态是连接终止阶段、连接配置失败和其它自动机的错误模式的
交汇之处。
还存在着Down事件(由tlf动作引发)和RCR事件的竞争的情况。当R
或拒绝其它用户的请求。自从连接被确认为可用时,就可以由一个Down事件和一个紧
接着的Open事件来通知LCP来模拟实现。应该特别注意的是Close事件不能由
其它的原因引发。
此时将触发一个Down事件,随即紧接着一个Up事件。这样做将使得连接有
次序的开始重新协商,自动机由Closing状态转移到Stopping状态,并且
tlf动作将断开连接。自动机将在Stopped状态或Starting状态中等待
下一次连接。
Timeout(TO+,TO-)事件
Timeout事件指示超时计时器溢出。当发送出配置请求包和终止请求包后
超时计时器开始计时。
TO+事件指示着超时计数器的值仍然大于零。其中超时计数器每减一,就表明
配置请求包或终止请求包就重传一次。
TO-事件指示着超时计数器的值小于零,再没有任何数据包需要重传了。
Receive-Configure-Request(RCR+,RCR-)事件
RCR事件出现表明接收到了从对方发送来的配置请求包。配置请求包的到来表
明对方希望打开连接并且指定连接选项。配置请求包将在后面有更详细的描述。
RCR+事件表明对方的配置请求是可以接受的,并且将传送配置确认包。
RCR-事件表明对方的配置请求是不能接受,并且将传送相应的配置否定包或
配置拒绝包。
应用注意事项:
这些事件可以在自动机已处于Opened状态的时候发生。这时必须立即准备
好重新协商选项。
Receive-Configure-Ack(RCA)事件
RCA事件出现表明收到了对方κ褂茫眨鹗录魑卮稹? 这个动作的结果高度依赖于应用的需要。
This-Layer-Finished(tlf)动作
tlf动作表明低层的协议自动机进入了Intial状态,Closed状态
,或Stopped状态,并且低层已不再为连接所用。当低层终止时应使用Down事
件作为回答。
典型的,此动作可能会被LCP用来提前进入连接死亡阶段,或者被NCP用来
通知LCP当没有任何NCP被打开时连接可能会终止。
这个动作的结果高度依赖于应用的需要。
Initialize-Restart-Count(irc)动作
irc动作初始化超时计数器为一合适的值(Max-Terminate或
Max-Configure)。每传送一次数据包,计数器就减一,并且包括第一次。
应用注意事项:
除了设置超时计数器之外,还必须为超时计时器设置超时事件的时间长度。
Zero-Restart-Count(zrc)动作
zrc动作将超时计数器清零。
应用注意事项:
此动作使有限自动状态机能够在进入最终所期望的状态之前停止,允许由对方处
理网络流量。除了设置超时计数器之外,还必须为超时计时器设置超时事件的时间长度。
Send-Configure-Request(scr)动作
scr动作将发送配置请求包。这表明期望用指定的配置选项打开连接。当配置
选项包被发送时,超时计时器开始计时以防止它被丢失。每当发送一个配置请求包时,超
时计数器就减一。
Send-Configure-Ack(sca)动作
sca动作发送配置确认包。它表明确认了接收到的配置请求包中所有的配置选
项。
Send-Configure-Nak(scn)动作
scn动作发送配置否定包或配置拒绝包。它表明否定了接收到的配置请求包中
某些的配置选项。
配置否定包被用于拒绝某一个配置选项值,并且还建议了一个新的可以接受的配
置选项值。而配置拒绝包被用于拒绝所有的配置选项,典型的是因为这些选项不能被识别
或被运用。关于如何使用配置否定包和配置拒绝包将在后面叙述链路控制协议数据包格式
的章节中详细说明。
Send-Terminate-Request(str)动作
str动作发送终止请求包。它表明期望关闭连接。当终止请求包被发送时,超
时计时器开始计时以防止它被丢失。每当发送一个配置请求包时,超时计数器就减一。
Send-Terminate-Ack(sta)动作
sta动作发送终止确认包。它表明确认了接收到的终止请求包或者对双方的协
议自动机起到同步的作用。
Send-Code-Reject(scj)动作
scj动作发送编码拒绝包。它表明接收到有不能识别编码的数据包。
Send-Echo-Reply(ser)动作
ser动作发送回应回答包。它表明确认接收到了回应请求包。
4.6避免循环
协议有效的避免了在协商配置选项时的循环。然而,协议并不能保证这种循环不再出现。
在协商任何选项时,双方有可能采取了相互矛盾决不相容的配置策略。但是双方也有可能
采取了可以相容的配置策略,但这时可能需要花费很多时间。应用者要将此记在心中并应
应用循环监测机制和更高层次的超时机制。
4.7计数器和计时器
超时计时器
自动机并没有运用特殊的计时器。超时计时器被用来监测配置请求包和终止请求
包的传送。当计时器计满后将引发一个Timeout事件,并重新发送相应的配置请求
包或终止请求包。超时计时器必须被配置,而且缺省值应该为三秒钟。
应用注意事项:
超时计时器的设置应该基于连接的速度。缺省值是为低速连接(2400-
9600bps)、高速交换连接(典型的如电话线)设计的。更高速的连接,或低交换
速度连接应该相应的增加重传的次数。
取代固定的超时值,超时计时器应该最初设为一个小的值然后再增加达到最终配置值。每
一个小于最终值的成功的值都应该是前一个值的两倍。初始值应该足够处理一个数据包,
它通常设置为两倍于以连接速度在传送间做一往返的时间还要加上一百毫秒,以允许对方
在做作回应之前能够处理数据包。
最大终止次数
它是为终止请求包计数的超时计数器所要求的一个值。它表明了在假定对方不能
做出回答之前且未接收到终止确认包时发送终止请求包最大的发送次数。最大终止次数必
须被配置,而且缺省值应该为重传两次。
最大配置次数
相似的量被推荐给了配置请求包。它表明在假定对方不能做出回答之前且未接收
到配置确认包、配置否定包或配置拒绝包时发送配置请求包最大的发送次数。最大配置次
数必须被配置,而且缺省值应该为重传十次。
最大失败次数
相似的量被推荐给了配置否定包。它表明了在假定未达成一致发送配置确认包之前配置否
定包最大的发送次数。任何由对方配置否定包中所建议的而后又被加入到配置拒绝包中的
选项和本地所期望的选项在协商过程中都不再追加进去。最大配置次数必须被配置,而且
缺省值应该为五次。
5. 链路控制协议数据包格式
有三种类型的链路控制协议数据包:
1. 连接配置数据包用于建立和配置连接。(配置请求包,配置确认包,配置否定包
和配置拒绝包)。
2. 连接终止数据包用于终止连接(终止请求包和终止确认包)。
3. 连接维护数据包用于管理和调试连接(编码拒绝包,协议拒绝包,回应请求包,
回应回答包和丢弃请求包)。
为了简化起见,数据链路控制协议数据包格式中并没有版本号域。对于不能识别的协议和
编码都能以简单的可识别的链路控制协议数据包格式予以回应,因此对其它的版本提供了
一种确定性但效率低的的运行机制。
不管什么配置选项被确定为使能,所有的连接配置包,连接终止包,编码拒绝包(编码号
1-7)都假定没有配置选项被协商。实际上,每一个配置选项都被指定了一个缺省值。
这样做使得诸如链路控制协议的数据包总是能够识别,即使当连接已结束但仍被错误的认
为连接是打开的时候。
链路控制协议数据包被封装在PPP帧格式的数据域中,且PPP帧的协议域的值是0x
c021。
链路控制协议数据包格式总结如下。按照从左至右的顺序被传送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 数据 ...
+-+-+-+-+
编码域
编码域占一个八位字节。它标识这是何种类型的链路控制协议数据包。当接收到
编码域不可识别的数据包时,就发送编码拒绝数据包。
最新的编码域的值由最近公布的"Assigned Numbers"RFC文
档说明。与本文档相关的有以下的值:
1 配置请求(Configure-Request)
2 配置确认(Configure-Ack)
3 配置否定(Configure-Nak)
4 配置拒绝(Configure-Reject)
5 终止请求(Terminate-Request)
6 终止确认(Terminate-Ack)
7 编码拒绝(Code-Reject)
8 协议拒绝(Protocol-Reject)
9 回应请求(Echo-Request)
10 回应回答(Echo-Reply)
11 丢弃请求(Discard-Request)
标识域
标识域编码占一个八位字节,它帮助请求和回答进行匹配。当收到的数据包中的标
识域是无效的,它将被静默丢弃并且不影响自动机的状态。
长度域
标识域编码占两个八位字节,它标识了链路控制协议数据包的长度,包括编码域
,标识域,数据域等。此长度不能超过连接的最大接收长度。
超过长度域的八位字节被视为填充字节并在接收时忽略。当接收到长度域无效的
数据包时,它将被静默丢弃并且不影响自动机的状态。
数据域
数据域有零个或多个八位字节,正如长度域中所指示的长度。数据域中的格式由
编码域中的值决定。
5.1配置请求
描述
当希望打开一个连接时,必须传送配置请求包。选项域中由期望改变连接缺省值
的配置选项填充。配置选项不必包含使用缺省值的配置选项。
当接收到了配置请求包时,必须传送合适的数据包作为回应。
配置请求包的格式总结如下。按照从左至右的顺序被传送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 选项 ...
+-+-+-+-+
编码
1代表配置请求。
标识
当选项域中的内容改变或当接收到对前一次请求的无效回答时,标识域应做改变
。重传时,标识域则不应改变。
选项
选项域长度可变,包含有零个或多个希望协商的配置选项的列表。全部的配置选
项将同时协商。选项域的格式将在后面的章节详细讨论。
5.2配置确认
描述
如果对方发送来的配置请求包中的配置选项都是可识别并且可接受,就可以发送
配置确认包。其中已被确认的选项的顺序和选项自身都不能以任何方式修改。
接收到的配置确认包中的标识域必须同上一次发送的配置请求包中的标识域匹配
。此外,在配置确认包中选项必须同上一次发送的配置请求包中的选项完全一致。
配置请求包的格式总结如下。按照从左至右的顺序被传送。
0 1 2 用于通知对方己方可以接收更大
的数据包,或者要求对方发送更小的数据包。
它的缺省值是1500字节。如果要求更小的数据包,当连接失去同步时应用仍
将按1500字节接收信息域。
应用注意事项:
此选项说明了应用的能力。对方并没有要求使用最大的能力。举例来说,当MRU为
2048字节,而对方没有被要求发送2048字节大小的数据包。此时对方不需要使用
配置否定包表明它仅仅发送比2048字节小的数据包,因为应用始终要求支持至少
1500字节的数据包。
最大接收单元配置选项格式小结如下。按照从左至右的顺序被传送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 最大接收单元 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
1
长度
4
最大接收单元
最大接收单元域有两个八位字节,它指定了信息域和填充域所能接受的最大字节
数。它不包括帧协议域,循环校验码和任何因透明传输而需要的位或字节。
6.2认证协议
描述
在进行某些连接时可能希望在交换网络层数据包之前要求对方来认证自己。
这个配置选项提供了协商用指定的认证协议进行认证的方法。缺省情况下,认证
是不需要的。
应用时不能在配置请求包中包含多个认证协议配置选项。相反的,应该首先配置
最期望使用的认证协议。如果被配置否定包所否定,应该在下一次配置请求中配置其次最
期望使用使用的认证协议。
应用发送配置请求包表明它希望对方对自己进行认证。如果对方发送来配置确认
包,表示它同意使用指定的协议进行erkins, D., "Requirements for an Internet
Standard Point-to-Point Protocol", RFC 1547, Carnegie Mellon University,
December 1993.
[2] Reynolds, J., and Postel, J., "Assigned Numbers", STD 2, RFC
1340, USC/Information Sciences Institute, July 1992.