答案:1.简介
点到点协议是为在两个对等实体间传输数据包建立简单连接而设计的。这种连接提供了同 时的双向的全双工操作,并且假定数据包是按顺序投递的。PPP连接提供了一种广泛的 解决办法,方便地将多种多样不忘的值作为最大接收单元的值。填充域
在传输中,信息域可能会由附加任意数目的字节填充至最大接收单元长度。这由每个协议负责将信息域和填充域区分开来。3.PPP连接操作
3.1概述
为了在点到点连接中建立通信,PPP连接的每一端都必须首先发送LCP数据包来配置和测试数据连接。在连接建立后,对等实体还有可能需要认证。然后,PPP必须发送NCP数据包来选择一种或多种网络层协议来配置。一旦被选中的网络层协议被配置好后,该网络层的数据报就可以在链路上传送了。链路将保持可配置的状态直到有LCP数据包和NCP数据包终止连接,或者由其他外部事件发生时(例如非活动时钟计时已满或网络管理人员的干涉)。3.2状态图
在配置维持和终止点到点连接的过程中,PPP连接经历了几个不同的阶段,这些阶段由以下简化的状态图说明:+------+ +-----------+ +--------------+
| | 连接 | | 已打开 | | 成功/无
| 死亡 |------->| 建立 |---------->| 认证 |--+
| | | | | | |
+------+ +-----------+ +--------------+ |
^ | | |
| 失败 | 失败 | |
+<--------------+ +----------+ |
| | |
| +-----------+ | +---------+ |
| 断开 | | | 正在关闭 | | |
+------------| 终止 |<---+<----------| 网络 |<-+
| | | |
+-----------+ +---------+3.3连接死亡阶段(物理层未准备好)一个连接的开始和结束都要经历此阶段。当一个外部事件(例如检测到载波或网络管理人员配置)指示物理层已准备好并可以使用时,PPP将进入建立连接阶段。在此阶段,LCP协议自动机(后面将提到)处在初始或正在开始状态。当进入到建立连接阶段后会引发UP事件通知LCP协议自动机。
应用注意事项:
典型的,一个连接将在调制解调器连接断开后自动返回到此阶段。在使用电话线的连接情况下,这个阶段将相当的短,短到很少有足够的时间能用仪器检测到它的存在。3.4建立连接阶段
链路控制协议(LCP)通过交换配置数据包建立连接。当LCP协议自动机进入已打开状态,并且发送和接收过配置确认数据包时,为建立连接的交换过程才完成。所有的配置选项都被假定为缺省值,除非在配置交互的过程中改变。关于LCP
配置选项的进一步讨论参见后面的章节。有一点是非常重要的,就是那些只有与特定网络层协议无关的选项才能被LCP配置。配置单独的网络层协议是在网络层协议阶段由相应的网络控制协议来配置。在此阶段接收到的任何非LCP数据包将被静默丢弃。
接收到LCP配置请求数据包将引起PPP连接从网络层协议阶段或认证阶段返回到建立连接阶段。3.5认证阶段
在某些连接时,在允许网络层协议数据包交换之前希望对对等实体进行认证。缺省时,认证不是必要的。如果应用时希望对等实体使用某些认证协议进行认证,这种要求必须在建立连接阶段提出。认证阶段应该紧接在建立连接阶段后。然而,可能有连接质量的决定并行出现。应用时绝对不允许连接质量决定数据包的交换使认证有不确定的延迟。认证阶段后的网络层协议阶段必须等到认证结束后才能开始。如果认证失败,将转而进入终止连接阶段。仅仅是连接控制协议、认证协议、连接质量监测的数据包才被允许在此阶段中出现。所有其它在此阶段中接收到的数据包都将被静默丢弃。
应用注意事项:
应用时不能简单的因为超时或缺少回应就认为认证失败。应该允许重传,仅当试图认证的次数超过一定的限制时才进入终止连接阶段。如果对方拒绝认证,己方有权进入终止连接阶段。3.6网络层协议阶段
一旦PPP完成了上述阶段,每一个网络层协议(例如IP、IPX、
AppleTalk)必须单独的由相应的网络控制协议(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+事件表明对方的配置请求是可以接受的
上一个:游戏外挂基本原理及实现
下一个:Beej网络socket编程指南