认识PPP协议


PPP协议(Point-to-Point Protocol)是一种数据链路层协议 , 它是为在同等单元之间传输数据包这样的简单链路而设计的 。这种链路提供全双工操作 , 并按照顺序传递数据包 。PPP为基于各种主机、网桥和路由器的简单连接提供一种共通的解决方案 。
PPP协议包括以下三个部分:
1. 数据帧封装方法 。
2. 链路控制协议LCP(Link Control Protocol):它用于对封装格式选项的自动协商 , 建立和终止连接 , 探测链路错误和配置错误 。
3. 针对不同网络层协议的一族网络控制协议NCP(Network Control Protocol): PPP协议规定了针对每一种网络层协议都有相应的网络控制协议 , 并用它们来治理各个协议不同的需求 。
PPP协议简介
1. PPP数据帧封装
PPP协议为串行链路上传输的数据报定义了一种封装方法 , 它基于高层数据链路控制(HDLC)标准 。PPP数据帧的格式如图1所示 。
 
PPP帧以标志字符01111110开始和结束 , 地址字段长度为1字节 , 内容为标准广播地址11111111 , 控制字段为00000011 。协议字段长度为2个字节 , 其值代表其后的数据字段所属的网络层协议 , 如:0x0021代表IP协议 , 0xC021代表LCP数据 , 0x8021代表NCP数据等 。数据字段包含协议字段中指定的协议的数据报 , 长度为0~1500字节 。CRC字段为整个帧的循环冗余校验码 , 用来检测传输中可能出现的数据错误 。
即使使用所有的帧头字段 , PPP协议帧也只需要8个字节就可以形成封装 。假如在低速链路上或者带宽需要付费的情况下 , PPP协议答应只使用最基本的字段 , 将帧头的开销压缩到2或4个字节的长度 , 这就是所谓的PPP帧头压缩 。
2. PPP回话的四个阶段
一次完整的PPP回话过程包括四个阶段: 链路建立阶段、确定链路质量阶段、网络层控制协议阶段和链路终止阶段(如图2所示) 。
(1) 链路建立阶段:PPP通信双方用链路控制协议交换配置信息 , 一旦配置信息交换成功 , 链路即宣告建立 。配置信息通常都使用默认值 , 只有不依靠于网络控制协议的配置选项才在此时由链路控制协议配置 。值得注重的是 , 在链路建立的过程中 , 任何非链路控制协议的包都会被没有任何通告地丢弃 。
(2) 链路质量确定阶段:这个阶段在某些文献中也称为链路认证阶段 。链路控制协议负责测试链路的质量是否能承载网络层的协议 。在这个阶段中 , 链路质量测试是PPP协议提供的一个可选项 , 也可不执行 。同时 , 假如用户选择了验证协议 , 验证的过程将在这个阶段完成 。PPP支持两种验证协议:密码验证协议(PAP)和握手鉴权协议(CHAP) 。
(3) 网络层控制协议阶段:PPP会话双方完成上述两个阶段的操作后 , 开始使用相应的网络层控制协议配置网络层的协议 , 如:IP、IPX等 。
(4) 链路终止阶段:链路控制协议用交换链路终止包的方法终止链路 。引起链路终止的原因很多:载波丢失、认证失败、链路质量失败、空闲周期定时器期满或治理员关闭链路等 。
3. PPP协议中的验证机制
验证过程在PPP协议中为可选项 。在连接建立后进行连接者身份验证的目的是为了防止有人在未经授权的情况下成功连接 , 从而导致泄密 。PPP协议支持两种验证协议:
(1) 口令验证协议(PAP): 口令验证协议的原理是由发起连接的一端反复向认证端发送用户名/口令对 , 直到认证端响应以验证确认信息或者拒绝信息 。
(2) 握手鉴权协议(CHAP):CHAP用三次握手的方法周期性地检验对端的节点 。其原理是:认证端向对端发送“挑战”信息 , 对端接到“挑战”信息后用指定的算法计算出应答信息然后发送给认证端 , 认证端比较应答信息是否正确从而判定验证的过程是否成功 。假如使用CHAP协议 , 认证端在连接的过程中每隔一段时间就会发出一个新的“挑战”信息 , 以确认对端连接是否经过授权 。

推荐阅读