PPP的工作原理

PPP协议简介

PPP: Point-to-Point Protocol,链路层协议。用户实现点对点的通讯。

PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。具体包含这样几个部分:链路控制协议LCP(Link Control Protocol);网络控制协议NCP(Network Control Protocol);认证协议,最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。

帧格式与HDLC相似,不同的是PPP是面向字符,HDLC是面向位的。PPP帧格式如下:
在这里插入图片描述
看到总共多了8个字节,其中首尾字节都是帧的起始和结束标志位,A表示地址,C表示控制。
协议的两个字段,表示后面信息部分的数据协议是什么,包括:
0x0021——信息字段是IP数据报
0xC021——信息字段是链路控制数据LCP
0x8021——信息字段是网络控制数据NCP
0xC023——信息字段是安全性认证PAP
0xC025——信息字段是LQR
0xC223——信息字段是安全性认证CHAP

PPP协议的工作过程

PPP通讯是两个端点之间的通讯,每一端必须首先发送LCP packets数据来设定和测试数据链路,当链路建立后,peer才可以被认证,认证完成后,再通过发送NCP packets来选定网络层协议,这些后续的通讯就可以在网络层进行了。

具体的过程如下:

  1. 链路静止状态:链路一定开始并结束于这个阶段。当一个外部事件(例如载波侦听或网络管理员设定)指出物理层已经准备就绪时,PPP将进入链路建立阶段。在这个阶段,LCP自动机器将处于初始状态,向链路建立阶段的转换将给LCP自动机器一个UP事件信号。

  2. 链路建立状态:LCP用于交换配置信息包(Configure packets),建立连接。一旦一个配置成功信息包(Configure-Ackpacket)被发送且被接收,就完成了交换,进入了LCP开启状态。所有的配置选项都假定使用默认值,除非被配置交换所改变。有一点要注意:只有不依赖于特别的网络层协议的配置选项才被LCP配置。在网络层协议阶段,个别的网络层协议的配置由个别的网络控制协议(NCP)来处理。在这个阶段接收的任何非LCPpackets必须被silentlydiscarded(静静的丢弃)。收到LCPConfigure-Request(LCP配置要求)能使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。

  3. 认证阶段:在一些链路上,在允许网络层协议packets交换之前,链路的一端可能需要peer去认证它。认证是不需要强制执行的。如果一次执行希望peer根据某一特定的认证协议来认证,那么它必须在链路建立阶段要求使用那个认证协议。应该尽可能在链路建立后立即进行认证。链路质量检查可以同时发生。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。
    在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。

  4. 网络层协议阶段:一旦PPP完成了前面的阶段,每一个网络层协议(例如IP,IPX,或AppleTalk)必须被适当的网络控制协议(NCP)分别设定。比如,NCP可以给新接入的PC机分配一个临时的IP地址,这样PC机就成为Internet上一个主机了。每个NCP可以随时被打开和关闭。当一个NCP处于Opened状态时,PPP将携带相应的网络层协议packets。当相应的NCP不处于Opened状态时,任何接收到的被支持的网络层协议packets都将被静静的丢弃。

  5. 链路终止阶段:PPP可以在任意时间终止链路。引起链路终止的原因很多:载波丢失、认证失败、链路质量失败、空闲周期定时器期满、或者管理员关闭链路。LCP用交换Terminate(终止)packets的方法终止链路。当链路正被关闭时,PPP通知网络层协议,以便他们可以采取正确的行动。交换Terminate(终止)packets之后,执行应该通知物理层断开,以便强制链路终止,尤其当认证失败时。Terminate-Request(终止-要求)的发送者,在收到Terminate-Ack(终止-允许)后,或者在重启计数器期满后,应该断开连接。收到Terminate-Request的一方,应该等待peer去切断,在发出Terminate-Request后,至少也要经过一个Restarttime(重启时间),才允许断开。PPP应该前进到链路死亡阶段。在该阶段收到的任何非LCPpackets,必须被静静的丢弃。

在这里插入图片描述

任何第3层的协议要通过拨号或者专用链路穿越广域网时,都必须封装一种数据链路层的协议(比如,PPP、SLIP——串行链路Internet协议、ARAP——AppleTalk远程接入协议)。尽管某些公司仍然使用Novell IPX和AppleTalk协议为主机提供远程接入,但是TCP/IP已经成为了今天企业网中使用的主要协议。
今天,在广域网的数据链路层主要有两种用于封装TCP/IP的协议:SLIP和PPP
SLIP——使用TCP/IP进行点对点连接的标准协议。SLIP是PPP的前身,因其只支持IP协议和异步传输方式而且没有验证机制,所以已经很少在新设计的网络中出现了。
PPP——点对点协议,通过异步或同步电路提供路由器到路由器或者主机到网络的连接。这些电路可能是拨号或者租用线路。
PPP支持IP、IPX和AppleTalk等多种网络层协议,还支持如下特性:
同步/异步传输方式
动态地址分配
PAP认证
CHAP认证
MLP(多链路捆绑)

本篇文章描述的就是这个PPP协议。

PPP的分层结构:

PPP协议的运行分为四个阶段:
第一阶段:建立链路(LCP)
第二阶段:验证(PAP/CHAP)
第三阶段:网络控制协商(NCP)
第四阶段:终止PPP链路(LCP)

PPP协议工作的第一阶段我们称为链路建立的阶段,在这个阶段中PPP首先使用LCP(链路控制协议)在链路两端建立连接。在该阶段中PPP不只是在数据链路层搭建链路而且还在链路的两端动态协商一些参数,比如双方使用的认证方式、是否支持压缩和MLP(多链路捆绑)等。
LCP若要完成建立、配置、测试和终止数据链路连接的工作就需要通信两端互相交换LCP报文。那都有哪几类LCP报文呢?LCP报文基本上有三类:
链路配置报文——用来建立和配置一条链路
链路维护报文——用来维护和调试链路
链路终止报文——用来终止一条链路
LCP协议在链路两端建立连接时还会经历4种状态,如果一切进行顺利的话,随着这4种状态的结束,链路两端的连接将会搭建成功。
第1种状态机:“Initial(初始化状态)”或“Starting(准启动状态)”
该状态机发生在链路无效阶段:该阶段双方物理连接已搭建好,但通信的两端没有激活(封装)PPP,或者物理连接根本就没有搭建好。
第2种状态机:Request-Sent(请求发送)
第3种状态机:Ack-Sent(确认发送)
第4种状态机:Open(打开)
除了第1种状态机,其余3种状态机都发生在第一阶段(链路的建立阶段)。
链路建立阶段:当通信双方的两端都检测到链路上有载波信号时,且双方都已封装了PPP协议就标志着通信的两端已进入到链路建立阶段了。该阶段的通信发生在数据链路层,也是PPP协议最为关键和复杂的阶段。在这个阶段首先链路两端的LCP会由链路无效阶段的“Initial”或“Starting”状态过渡到“Request-Sent(请求发送)”状态。在Request-Sent(请求发送)状态下,双方会发送上面提到的LCP三种报文中的“链路配置报文”。链路配置报文又细分以下四种:
1、Config-Request(配置请求)
2、Config-Ack(配置确认)
3、Config-NAK(配置非确认)
4、Config-Reject(配置拒绝)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值