描述
1.简介
点到点协议是为在两个对等实体间传输数据包建立简单连接而设计的。这种连接提供了同时
的双向的全双工操作,并且假定数据包是按顺序投递的。PPP连接提供了一种广泛的解决
办法,方便地将多种多样不忘的值作为最大接收单元的值。
2.填充域
在传输中,信息域可能会由附加任意数目的字节填充至最大接收单元长度。这由每个协议负
责将信息域和填充域区分开来。
3.PPP连接操作
3.1概述
为了在点到点连接中建立通信,PPP连接的每一端都必须首先发送LCP数据包来配置和
测试数据连接。在连接建立后,对等实体还有可能需要认证。 然后,PPP必须发送NC
P数据包来选择一种或多种网络层协议来配置。一旦被选中的网络层协议被配置好后,该网
络层的数据报就可以在链路上传送了。 链路将保持可配置的状态直到有LCP数据包和N
CP数据包终止连接,或者由
其他外部事件发生时(例如非活动时钟计时已满或网络管理人员的干涉)。
3.2状态图
在配置维持和终止点到点连接的过程中,PPP连接经历了几个不同的阶段,这些阶段由以
下简化的状态图说明:
+------+ +-----------+ +--------------+
| | 连接 | | 已打开 | | 成功/无
| 死亡 |------->| 建立 |---------->| 认证 |--+
| | | | | | |
+------+ +-----------+ +--------------+ |
^ | | |
| 失败 | 失败 | |
+<--------------+ +----------+ |
| | |
| +-----------+ | +---------+ |
| 断开 | | | 正在关闭 | | |
+------------| 终止 |<---+<----------| 网络 |<-+
| | | |
+-----------+ +---------+
3.3连接死亡阶段(物理层未准备好)
一个连接的开始和结束都要经历此阶段。当一个外部事件(例如检测到载波或网络管理人员
配置)指示物理层已准备好并可以使用时,PPP将进入建立连接阶段。 在此阶段,LC
P协议自动机(后面将提到)处在初始或正在开始状态。当进入到建立连接阶段后会引发U
P事件通知LCP协议自动机。
应用注意事项:
典型的,一个连接将在调制解调器连接断开后自动返回到此阶段。在使用电话线的连接情况
下,这个阶段将相当的短,短到很少有足够的时间能用仪器检测到它的存在。
3.4建立连接阶段
链路控制协议(LCP)通过交换配置数据包建立连接。当LCP协议自动机进入已打开状
态,并且发送和接收过配置确认数据包时,为建立连接的交换过程才完成。 所有的配置选
项都被假定为缺省值,除非在配置交互的过程中改变。关于LCP
配置选项的进一步讨论参见后面的章节。
有一点是非常重要的,就是那些只有与特定网络层协议无关的选项才能被LCP配置。配置
单独的网络层协议是在网络层协议阶段由相应的网络控制协议来配置。
在此阶段接收到的任何非LCP数据包将被静默丢弃。 接收到LCP配置请求数据包将引
起PPP连接从网络层协议阶段或认证阶段返回到建立连接阶段。
3.5认证阶段
在某些连接时,在允许网络层协议数据包交换之前希望对对等实体进行认证。 缺省时,认
证不是必要的。如果应用时希望对等实体使用某些认证协议进行认证,这种要求必须在建立
连接阶段提出。
认证阶段应该紧接在建立连接阶段后。然而,可能有连接质量的决定并行出现。应用时绝对
不允许连接质量决定数据包的交换使认证有不确定的延迟。认证阶段后的网络层协议阶段必
须等到认证结束后才能开始。如果认证失败,将转而进入终止连接阶段。仅仅是连接控制协
议、认证协议、连接质量监测的数据包才被允许在此阶段中出现。所有其它在此阶段中接收
到的数据包都将被静默丢弃。
应用注意事项:
应用时不能简单的因为超时或缺少回应就认为认证失败。应该允许重传,仅当试图认证的次
数超过一定的限制时才进入终止连接阶段。
如果对方拒绝认证,己方有权进入终止连接阶段。
3.6网络层协议阶段
一旦PPP完成了上述阶段,每一个网络层协议(例如IP、IPX、AppleTal
k)必须单独的由相应的网络控制协议(NCP)配置。 每一个网络控制协议可以随时打
开或关闭。
应用注意事项:
因为可能一开始就会使用需要花费大量时间的连接质量决定,所以当等待对方进行网络控制
协议配置时应该避免使用固定的超时限制。
当一个网络控制协议自动机达到已打开的状态时,PPP连接上就可以传送相应的网络层协
议数据包。当接收到的任何所支持的网络层协议数据包时,只要相应的网络控制协议状态自
动机未进入已打开状态,都将作静默丢弃处理。
应用注意事项:
只要LCP协议状态自动机处于已打开的状态,任何接收到的不支持的协议数据包都将返回
协议拒绝包(后面将提到)。所支持的协议数据包都将静默丢弃。在此阶段,连接上流通的
包括LCP数据包、NCP数据包和网络层协议数据包。
3.7终止连接阶段
PPP连接可以随时终止。原因可能是载波丢失、认证失败、连接质量失败、超时计数器溢
出,或者网络管理员关闭连接。
LCP通过交换连接终止包来终止连接。当连接正在被终止的时候,PPP会通知网络层以
便它采取相应的动作。
在交换过终止请求包后,将通知物理层断开以便使连接真正终止,尤其是在认证失败的时
侯。发送连接终止请求包的一方应该等待接收到连接终止确认包之后或超时计数器计满之后
再断开。收到连接终止确认包的一方应该等待对方首先断开,并且决不能断开直到至少有一
个超时计时器在发送了终止连接确认包之后溢出。然后PPP应该进入连接死亡阶段。 在
此阶段所有接收到的非LCP数据包都将被静默丢弃。
应用注意事项:
关闭时使用LCP就已足够。并不需要每一个NCP都发送终止连接数据包。相反的,一个
NCP协议自动机关闭并不能关闭整个PPP连接,即使这个NCP协议自动机是当前唯一
处于已打开状态。
4. 选项协商自动机
有限状态自动机由事件、动作、状态迁移定义。事件包括接收外部命令,诸如打开、关闭、
超时计时器溢出和接收到对方发送过来的数据包。动作包括打开超时计数器和向对方发送数
据包。有些类型的数据包,诸如配置否定包和配置拒绝包,或者编号拒绝包和协议拒绝包,
或者回应请求包、回应回答包和丢弃请求包在自动机的描述中都是不可区分的。正如后面将
要提到的,虽然这些不同类型的数据包会引起相同的状态迁移,但它们确实起到了不同的作
用。
事件 动作
Up = 低层已连接 tlu = 该层已连接
Down = 低层已断开 tld = 该层已断开
Open = 打开连接 tls = 该层已开始连接
Close= 关闭连接 tlf = 该层已关闭连接
TO+ = 超时计时器溢出且超时计数器值大于零 irc = 初始化超时计数器
TO- = 超时计时器溢出且超时计数器值小于零 zrc = 超时计数器清零
RCR+ = 收到正确的配置请求包 scr = 发送配置请求包
RCR- = 收到不正确的配置请求包
RCA = 收到配置确认包 sca = 发送配置确认包
RCN = 收到配置否定包/拒绝包 scn = 发送配置否定包/拒绝包
RTR = 收到终止请求包 str = 发送终止请求包
RTA = 收到终止确认包 sta = 发送终止确认包
RUC = 收到未知编码包 scj = 发送编码拒绝包
RXJ+ = 收到编码拒绝包 (允许的)
或受到协议拒绝包
RXJ- = 收到编码拒绝包 (糟糕的)
或受到协议拒绝包
RXR = 收到回应请求包 ser = 发送回应回答包
或者收到回应回答包
或者收到丢弃请求包
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状态,或Sto
pped状态,并且低层已不再为连接所用。当低层终止时应使用Down事件作为回
答。
典型的,此动作可能会被LCP用来提前进入连接死亡阶段,或者被NCP用来通知LCP
当没有任何NCP被打开时连接可能会终止。
这个动作的结果高度依赖于应用的需要。
Initialize-Restart-Count(irc)动作
irc动作初始化超时计数器为一合适的值(Max-Terminate或Max-Co
nfigure)。每传送一次数据包,计数器就减一,并且包括第一次。
应用注意事项:
除了设置超时计数器之外,还必须为超时计时器设置超时事件的时间长度。
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-9600bp
s)、高速交换连接(典型的如电话线)设计的。更高速的连接,或低交换速度连接应该相
应的增加重传的次数。
取代固定的超时值,超时计时器应该最初设为一个小的值然后再增加达到最终配置值。每一
个小于最终值的成功的值都应该是前一个值的两倍。初始值应该足够处理一个数据包,它通
常设置为两倍于以连接速度在传送间做一往返的时间还要加上一百毫秒,以允许对方在做作
回应之前能够处理数据包。
最大终止次数
它是为终止请求包计数的超时计数器所要求的一个值。它表明了在假定对方不能做出回答之
前且未接收到终止确认包时发送终止请求包最大的发送次数。最大终止次数必须被配置,而
且缺省值应该为重传两次。
最大配置次数
相似的量被推荐给了配置请求包。它表明在假定对方不能做出回答之前且未接收到配置确认
包、配置否定包或配置拒绝包时发送配置请求包最大的发送次数。最大配置次数必须被配
置,而且缺省值应该为重传十次。
最大失败次数
相似的量被推荐给了配置否定包。它表明了在假定未达成一致发送配置确认包之前配置否定
包最大的发送次数。任何由对方配置否定包中所建议的而后又被加入到配置拒绝包中的选项
和本地所期望的选项在协商过程中都不再追加进去。最大配置次数必须被配置,而且缺省值
应该为五次。
5. 链路控制协议数据包格式
有三种类型的链路控制协议数据包:
1. 连接配置数据包用于建立和配置连接。(配置请求包,配置确认包,配置否定包和配置
拒绝包)。
2. 连接终止数据包用于终止连接(终止请求包和终止确认包)。
3. 连接维护数据包用于管理和调试连接(编码拒绝包,协议拒绝包,回应请求包,回应回
答包和丢弃请求包)。为了简化起见,数据链路控制协议数据包格式中并没有版本号域。对
于不能识别的协议和编码都能以简单的可识别的链路控制协议数据包格式予以回应,因此对
其它的版本提供了一种确定性但效率低的的运行机制。不管什么配置选项被确定为使能,所
有的连接配置包,连接终止包,编码拒绝包(编码号1-7)都假定没有配置选项被协商。
实际上,每一个配置选项都被指定了一个缺省值。这样做使得诸如链路控制协议的数据包总
是能够识别,即使当连接已结束但仍被错误的认为连接是打开的时候。
链路控制协议数据包被封装在PPP帧格式的数据域中,且PPP帧的协议域的值是0xc
021。
链路控制协议数据包格式总结如下。按照从左至右的顺序被传送。
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字节。如果要求更小的数据包,当连接失去同步时应用仍将按150
0字节接收信息域。
应用注意事项:
此选项说明了应用的能力。对方并没有要求使用最大的能力。举例来说,当MRU为204
8字节,而对方没有被要求发送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.
打开APP阅读更多精彩内容