分享
 
 
 

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

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

摘要: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.1PPP链路建立的概述

一次完整的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操作的状态机可以分为以下的要素:

状态状态(当前状态和下一状态)以及状态转换,是状态机的基本概念。他指明状态机当前时刻在做什么,处于什么情况。在LCP的链路连接状态机中,共有10种状态:Initial,Starting,Closed,Stopped,Closing,Stopping,Rdq-Sent,Ack-Received,Ack-Sent,Opened。

事件自动机里的状态转换是由事件引起的。在链路连接协商时,本端从线路的对端发送过来的LCP包和自己的状态,判定将要发生的事件,并结合当前的状态判定系统的下一状态。在LCP的链路建立过程中,事件种类较多,大概可以分为以下几类:

①网络状态事件,表明LCP或者NCP的状态变化,包括Up,Down,Open,Close。

②超时计时器事件,与超时计时器有关的事件,包括TO+,TO-。

③S/T数据包事件,包括RCR+,RCR-,RCA,RCN,RTR。RTA,RUC,RXJ+,RXJ-,RXR。动作自动机中的动作由事件引起,所以,每个

事件都对应了相应的动作。例如,有些动作表明了不同类型的LCP包的传输和(或)Restart timer的启动和停止。

状态跳转表在PPP的链路操作中,每个状态,在经过特定的事件后,会转变成新的状态,并有可能有相应的事件。这些关系比较复杂,可以用状态跳转表[1]来表示。

3软件实现

3.1软件原理

PPP链路的建立、协商和握手的过程是需要建立连接的双方来完成的。每一方根据对端发送的LCP包的类型,做出相应的判定并响应。软件的原理就是用软件来模拟PPP链路中的一端,完全实现协议栈的功能。更重要的是,本文所讨论的实现方法可以实现检测、诊断的目的,这是一般的软件不能做到的。

在实现过程中,软件接收对端的LCP包,然后根据LCP的状态跳转表来决定自己下一步的状态,并产生相应的事件和动作,将响应包通过软件发向对端,达到软件实现链路连接的目的。

软件可以将链路活动的状况,接收和发送的数据包、链路的当前状态一一显示出来。用户可以通过软件具体了解到网络的活动情况和状态。

3.2实现方法

软件实现的开发工具为Borland C++Builder可视化开发环境,运行的环境是简体中文Windows 98。软件具有信息回显界面,便于用户测试和分析。以下具体说明软件实现的方法。

3.2.1总体流程

软件的实现部分用到2个子线程,这2个线程分别负责接收和处理数据,并对数据缓冲区进行操作。总体流程如图1所示。

3.2.2线程结构

软件上采用多线程的技术实现。除了主线程,有2个子线程用于实现链路操作:一个作为数据包接收线程,一个作为数据包处理线程。

当程序开始时,主线程初始化,将自己的状态置为Initial,同时启动数据接收线程。因为这时PPP连接双方这时开始进行连接和协商,所以会收到对端设备的LCP包,接收线程接收LCP包,并交给处理线程处理。处理线程对接收的数据进行解包,解出LCP包的内容,结合当前的情况,得到产生的事件,并根据当前的状态和状态跳转表,决定要模拟的下一个状态,假如必要,将相应的响应发给对端。

处理线程是整个程序的重点,这个线程的流程如图2所示。

可以分为以下几步:

(1)得到接收线程交给的对端数据包。

(2)分析数据包中的内容,根据数据包的类型和当前本端的状态,查找状态跳转表,决定本端下一步的状态。

(3)通过状态-事件的对应,本端执行相应的事件。

(4)将产生的事件,系统的情况通过界面显示。

(5)根据状态跳转表确定是否应该给对端发送LCP包。假如需要,则按照LCP包标准封装数据并发送。

3.2.3数据结构

在数据结构上,程序使用一个缓冲区,共有10个元素,每个元素有1 500 B左右大小,用来存储每次送 上来的数据以备分析。2个线程分别对缓冲区进行读写。设有一个头指针和一个尾指针以免访问冲突,接收线程从底层读上数据,简单判定后保存在头指针所指向的那个缓冲区元素中,设置其未用标志,头指针加1;处理线程从尾指针指向的缓冲区元素中读出数据,然后进行处理,设置其已用标志,尾指针加1。具体的数据结构如下:

3.2.4链路情况回显

链路状况和状态转换的情况可以通过LCP包处理子线程来完成。处理子线程每处理一次对端发来的LCP包,就把状态的变化和链路的情况显示在界面上,同时对于超时异常、计时器重启这类事件也能显示出来。用户可以实时的监视线路连接的情况,这对于分析线路有着重要的作用。

3.3软件实现的应用前景

PPP协议LCP操作的软件实现有重要的实际意义。用户可以通过实现软件的界面显示来判定线路的情况和定位故障的发生地点。一些厂家已经根据本文所说的原理和实现方法做出产品,现在正在推广应用中。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有