PPP协议

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一章:PPP协议简介PPP协议是数据链路层协议,因此我们应该对数据链路层有简单的了解。数据链路层在OSI七层模型中位于最底层物理层之上,网络层之下(如图1.1)。它一方面从物理层的SAP(服务访问点)得到物理层的服务,主要是信号的编码和译码、为进行同步用的前同步码的产生和去除、比特的传输和接收等;另一方面也通过本层的SAP向网络层提供服务,主要是数据链路的建立和释放帧的封装与拆卸、差错控制等。应用层应用层表示层表示层会话层会话层运输层通信子网运输层网络层网络层网络层数据链路层数据链路层数据链路层物理层物理层物理层物理媒质OSI参考模型图1.1数据路层主要讨论在数据链路上帧流的传输问题。这一层协议的内容包括:帧的格式,帧的类型,比特填充技术,数据链路的建立和终止信息流量控制,差错控制,向物理层报告一个不可恢复的错误等。这一层协议的目的是保障在相邻的站与节点或节点与节点之间正确地、有次序、有节奏地传输数据帧。常见的数据链路协议有两类:一是面向字符的传输控制规程,如基本型传输控制规程(BSC);另一类是面向比特的传输控制规程,如高级数据链路控制规程(HDLC)。主要是后一类。用户接入Internet,在传送数据时都需要有数据链路层协议,其中最为广泛的是串行线路网际协议(SLIP)和点对点协议(PPP)。SLIP(SerialLineInternetProtocol)意为串行线路Internet协议。它是通过直接连接和用调制解调器连接的TCP/IP。由于SLIP具有仅支持IP等缺点,主要用于低速(不超过19.2kbit/s)的交互性业务,它并未成为Internet的标准协议。为了改进SLIP,人们制订了点对点PPP(Point-to-PointProtocol)协议。PPP协议用于实现与SLIP一样的目的和作用,它在实现其作用的方式上比SLIP要优越得多。PPP连接协议包括出错检测和纠正,以及分组验证,这是一个安全性特征,它能确保接收的数据分组确实来自于发送者。这些特性合起来使得通过电话线可以建立更为安全的连接。PPP是一种被认可的Internet标准协议,所以目前得到最广泛的开发支持。PPP点到点协议是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。其功能有以下几点:(1)PPP具有动态分配IP地址的能力;(2)PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;(3)PPP具有错误检测以及纠错能力,支持数据压缩;(4)PPP具有身份验证功能。PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。PPP协议包含这样几个部分:链路控制协议LCP(LinkControlProtocol);网络控制协议NCP(NetworkControlProtocol);认证协议,最常用的包括口令验证协议PAP(PasswordAuthenticationProtocol)和挑战握手验证协议CHAP(Challenge-HandshakeAuthenticationProtocol)。LCP负责创建,维护或终止一次物理连接。NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。第二章:PPP封装PPP协议为串行链路上传输的数据报定义了一种封装方法,它基于高层数据链路控制(HDLC)标准。PPP数据帧的格式如表格所示:标志0x7E1Byte地址0xff1Byte控制0x031Byte协议2Byte数据(1500字节)FCS2Byte标志0x7E1Byte(1)PPP的帧格式前3个字段固定为:0x7E、0xFF和0x03。(2)PPP帧的长度都是整数个字节。(3)若封装在PPP帧中的数据出现字节0x7E,则用2字节序列0x7D、0x5E取代;若出现字节0x7D,则用2字节序列0x7D、0x5D取代;(4)若信息字段中出现ASCII码的控制字符(即小于0x20的字符),则在该字符前面要加入一个0x7D字节,并且要将该字符转为与0x20进行与操作后的结果。这样做的目的是防止这些表面上的ASCII码控制符(在这里实际上已不是控制符了)被错误地解释为控制符。(5)协议字段由两个字节组成。字段中第八位必须是0,最后一位必须为1。链路若收到不符合这些规则的帧,必须被视为带有不被承认的协议。在范围0x0***到0x3***内的协议字段,标志着特殊数据包的网络层协议。在范围0x8***到0xb***内的协议字段,标志着数据包属于网络控制协议(NCP)。在范围0x4***到0x7***内的协议字段,用于没有相关NCP的低通信量协议。在范围0xc***到0xf***内的协议字段,标志着使用链路层控制协议(LCP)的包。以下的值作为保留:0xC021链路控制协议LCP(Linkcontrolprotocol)0xC023密码认证协议PAP(Passwordauthenticationprotocol)0xC025链路品质报告LinkQualityReport0xC223挑战握手验证协议CHAP(Challengehandshakeauthenticationprotocol)0x8021IP控制协议IPCP(Internetprotocolcontrolprotocol)0x0021Internetprotocol(IP)0x0001填料协议(PaddingProtocol)0x0003~0x001Freserved(transparencyinefficient)保留(透明度效率低的)0x007Dreserved(ControlEscape)保留(控制逃逸)0x00CFreserved(PPPNLPID)保留(PPPNLPID)0x00FFreserved(compressioninefficient)保留(压缩效率低的)0x8001~0x801F未使用0x807D未使用0x80CF未使用0x80FF未使用(6)FCS字段为整个帧的循环冗余校验码,用来检测传输中可能出现的数据错误。(计算范围为PPP帧扣去帧头尾标志-7E两个字节的范围)(7)数据字段是零或更多的字节。数据字段的最大长度,包含填料但不包含协议字段,术语叫做最大接收单元(MRU),默认值是1500字节。若经过协商同意,也可以使用其它的值作为MRU。在传输的时候,信息字段会被填充若干字节以达到MRU。每个协议负责根据实际信息的大小确定填料的字节数。(8)即使使用所有的帧头字段,PPP协议帧也只需要8个字节就可以形成封装。如果在低速链路上或者带宽需要付费的情况下,PPP协议允许只使用最基本的字段,将帧头的开销压缩到2或4个字节的长度,这就是所谓的PPP帧头压缩。为了加深认识,我们看一下下面这段截取的PPP报文:7EFF7D23C0217D217D237D207D3D……B12C7E根据以上规则,首先要将报文段中转意的字符转化回来。即将7D后的5D、5E转为7D、7E,其余的字符都减去一个0x20。例如以上报文就转为:7EFF03C0210103001D……B12C7E标志地址控制LCP协议CRC码标志这个数据包就是下一章我们要说的LCP链路控制协议包。第三章:LCP协议§3-1:LCP数据包LCP链路控制协议,用于HDLC的上层,用于协商适合于数据链路的选项,如指出链路的一边同意接收的最大数据报大小即最大接收单元(MRU)。探测链路回路和其它普通的配置错误,以及终止链路。一个LCP包被封装在PPP数据域中,该PPP协议域表示为0xC021(链路控制协议)。LCP包的格式如下:代码1Byte标识符1Byte长度2Byte数据(1)代码代码域确定LCP包的种类,不同的包有不同的格式。(2)标识符标识符域在匹配请求和回复中有用。当带有无效标识符域的包被接收时候,该包将不影响LCP自动机制,将被静静的丢弃。(3)长度长度域指出LCP包的长度,包括代码,标识符,长度和数据域。该长度必须不超过链路的MRU。长度域以外的字节被当作填料而忽略处理。(4)数据数据域是零或多个八位字节,由长度域声明。数据域的格式由代码域决定。LCP包有3类:1.链路配置包,用于建立和配置链路:Configure-Request(匹配请求),Configure-Ack(匹配正确应答),Configure-Nak(匹配不应答),和Configure-Reject(匹配拒绝)。2.链路结束包被用于结束一个链路:Terminate-Request(终止请求)和Terminate-Ack(终止应答)。3.链路维修包被用于管理和调试一个链路:Code-Reject(代码拒绝),Protocol-Reject(协议拒绝),Echo-Request(回波请求),Echo-Reply(回波应答),和Discard-Request(抛弃请求)。下面依次介绍不同种类的LCP包的格式:1Configure-Request(匹配请求)一个操作想要打开一个连接必须传送一个Configure-Request包,Configure-Request包的格式如下:代码0x01标识符1Byte长度2Byte选项标识符用来标志不同的Configure-Request包。只要选项域的内容改变,并且只要收到先前有效的Configure-Request包,标识符域必须被改变,以保证其唯一性,仅仅在重发时,标识符域可以保持不变。选项选项域是长度的变量,并包含零个或多个发送方需要协商的配置选项的列表。列出的全部配置选项总是被同时协商。选项域的格式如下:类型1Byte长度1Byte数据类型类型域用于指出配置选项的类型,不同的值代表不同的配置项目。以下值保留:0x00RESERVED(保留)0x01Maximum-Receive-Unit(最大-接收-单元)0x02Async-Control-Character-Map(异步-控制-字符-映射)0x03Authentication-Protocol(鉴定-协议)0x04Quality-Protocol(质量-协议)0x05Magic-Number0x07Protocol-Field-Compression(协议-域-压缩)0x08Address-and-Control-Field-Compression(地址-和-控制-域-压缩)长度长度域指出该配置选项(包括类型、长度和数据域)的长度。数据数据域是零个或者更多的八位字节,并且包含配置选项的特定详细信息,不同的配置项目含有不同的信息。当数据域长度超过长度域所指出的长度时,整个配置包将被静静的丢弃。以下介绍不同的配置选项的格式:·Maximum-Receive-Unit(最大-接收-单元)该配置选项通知链路另一端可以接收多大的包。默认值是1500个字节。该选项用于指出一个最大的容量,而不一定使用这个最大容量。例如,当一个2048个字节的Maximum-Receive-Unit(MRU)被协商,一端不需要用2048个字节发送每个包,而可以发送较小的包。MRU配置选项格式如下:类型0x01长度0x04最大接收单元2Byte·Async-Control-Character-Map(异步-控制-字符-映射)该配置选项用于协商在异步链路中透明传输控制字符的方法。异步链路的每端支持两个异步控制字符映射。接收ACCM是32位的,而发送ACCM可以多达256位,也就是说,链路两端有四个不同的ACCM,每端两个。对于异步链路,默认的接收ACCM是0xffffffff。默认的发送ACCM是0xffffffff加上控制逃逸字符和标记序列本身,再加上将要异步发出的而被标记的字符。对于其它类型的连接,默认值是0,因为对其它类型的连接而言,没有必要进行映射。默认的字符(除了0x20外)都能够在所有已知的通信设备上透明传送。然而,通常不需要映射所有的控制字

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功