点到点协议

类别:编程语言 点击:0 评论:0 推荐:
我要登陆┊我要注册┊设为首页┊收藏本站┊软件下载┊在线助手┊风尚社区 function fontZoom(size) { document.getElementById('fontzoom').style.fontSize=size+'px' } 当前位置:首页 → 列表 →  VC++/MFC →  通信/网络 → [网络协议]

点到点协议 作者:不详   今年浏览:11   本月浏览:11   今日浏览:7   总浏览:11   日期:2004-11-01 发表人: 风尚开发网:http://www.vwind.com   文章类型: 转载   来源:[大/中/小] 打印 http://www.vwind.com/dev/show.php?id=381&dirid=42&page= 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+事件表明对方的配置请求是可以接受的,并且将传送配置确认包。
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. 风尚软件下载 风尚网址 风尚开发QQ群:529604 风尚开发QQ群:519356

本文地址:http://com.8s8s.com/it/it25906.htm