PPP协议链路操作的软件实现


摘 要:PPP协议是广域网最常用的数据链路层协议之一,链路建立协商是PPP协议的重要组成部分 。而网络协议的软件实现一直是计算机网络应用的一个重点,PPP协议的软件实现具有很大的应用价值 。本文重点探讨LCP建立协商原理的软件实现,并给出了具体的实现方法和具体流程 。
要害词:LCP;链路建立;有限状态机;PPP协议
1 PPP协议简介
PPP(Point-to-Point Protocol,点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议 。这种链路提供全双工操作,并按照顺序传递数据包 。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案 。
PPP协议分为3个组成部分:
(1)一个将IP数据报封装到串行链路的方法 。
PPP封装提供了不同网络层协议同时通过统一链路的多路技术,使其保有对常用支持硬件的兼容性 。
(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link ControlProtocol) 。通信的双方可通过LCP包协商一些选项 。
(3)一套网络控制协议(Network ControlProtocol) 。NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题 。他支持不同的网络层协议,如IP,OSI的网络层,DECCnet,以及AppleTalk等 。
PPP帧封装格式如下:
 
PPP帧以标志字符01111110开始和结束,地址字段长度为1 B,内容为标准广播地址11111111,控制字段为00000011 。协议字段长度为2 B,其值代表其后的数据字段所属的网络层协议 。数据字段包含协议字段中指定的协议的数据报,长度为0~1 500 B 。CRC字段为整个帧的循环冗余校验码,用来检测传输中可能出现的数据错误 。
对应PPP协议的3个部分,PPP数据帧封装也分为:IP数据报封装、LCP控制数据封装、NCP控制数据封装 。当PPP帧的协议字段为0x0021时,信息字段就是IP数据报;当协议字段为0xC021时,信息字段是LCP控制数据;当协议字段为0x8021,信息字段是NCP控制数据 。
2 链路建立和状态机
2.1 PPP链路建立的概述
一次完整的PPP回话过程包括4个阶段:链路建立阶段、认证阶段、网络层控制协议阶段和链路终止阶段 。本文讨论和实现的是链路建立阶段 。
链路建立过程如下:请求建立链接的一端用LCP配置信息包(Configure packets)建立连接 。对端收到配置信息包以后,假如认为收到的配置请求及协商选项可以接受,将发送配置成功信息包(Configure-Ack packet),当一个配置成功信息包被发送且被接收,就完成了链路建立 。在LCP建立完成以后,假如收到LCP配置请求包(LCP Configure-Request)链路将从网络层协议阶段或者认证阶段返回到链路建立阶段 。
通常线路两端要对如下的内容进行协商,这些内容包含在LCP配置请求包中:
(1)Maximum-Receive-Unit最大-接收-单元)
(2)Authentication-Protocol(鉴定-协议)
(3)Quality-Protocol(质量-协议)
(4)Magic-Number
(5)Protocol-Field-Compression(协议-域-压缩)
(6)Address-and-Control-Field-Compression(地址-和-控制域-压缩)
2.2 有限状态机模型
PPP协议的LCP层的连接及协商过程比较复杂,通常使用状态机模型来解释PPP状态的具体变迁情况 。
状态机是一种记录下给定时刻状态的设备,并根据输入,对每个给定的改变,改变其状态或引发一个动作 。有限态自动机由事件、动作和状态转换定义,通过状态机可以具体解释PPP协议中LCP链路建立的状态转换过程 。LCP操作的状态机可以分为以下的要素:

推荐阅读