PPP

更新时间:2024-08-07 15:53

点对点协议Point to Point Protocol,PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层),替代了原来非标准的第二层协议,即 SLIP。除了 IP 以外 PPP 还可以携带其它协议,包括 DECnetNovell 的 Internet 网包交换(IPX)。

简介

点到点协议Point to Point Protocol,PPP)是为在同等单元之间传输数据包这样的简单链路设计链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。PPP具有以下功能:

(1)PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址

(2)PPP支持多种网络协议,比如TCP/IPNetBEUINWLINK等;

(3)PPP具有错误检测能力,但不具备纠错能力,所以ppp是不可靠传输协议

(4)无重传的机制,网络开销小,速度快。

(5)PPP具有身份验证功能。

(6) PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP也用于Internet接入。

帧格式

PPP采用7EH作为一帧的开始和结束标志(F);其中地址域(A)和控制域(C)取固定值(A=FFH,C=03H) ;协议域(两个字节)取0021H表示IP分组,取8021H表示网络控制数据,取C021H表示链路控制数据;帧校验域(FCS)也为两个字节,它用于对信息域的校验。若信息域中出现7EH,则转换为(7DH,5EH)两个字符。当信息域出现7DH时,则转换为(7DH,5DH)。当信息流中出现ASCII码的控制字符(即小于20H),即在该字符前加入一个7DH字符。

部分组成

封装:一种封装多协议数据报的方法。PPP 封装提供了不同网络层协议同时在同一链路传输的多路复用技术。PPP 封装精心设计,能保持对大多数常用硬件的兼容性,克服了SLIP不足之处的一种多用途、点到点协议,它提供的WAN数据链接封装服务类似于LAN所提供的封闭服务。所以,PPP不仅仅提供帧定界,而且提供协议标识和位级完整性检查服务。

链路控制协议(LCP):一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接

网络控制协议(NCP):协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议;

配置:使用链路控制协议的简单和自制机制。该机制也应用于其它控制协议,例如:网络控制协议(NCP)。

为了建立点对点链路通信,PPP 链路的每一端,必须首先发送 LCP 包以便设定和测试数据链路。在链路建立,LCP 所需的可选功能被选定之后,PPP 必须发送 NCP 包以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在链路上发送了。

链路将保持通信设定不变,直到有 LCP 和 NCP 数据包关闭链路,或者是发生一些外部事件的时候(如,休止状态的定时器期满或者网络管理员干涉)。

应 用:假设同样是在Windows 98,并且已经创建好“拨号连接”。那么可以通过下面的方法来设置PPP协议:首先,打开“拨号连接”属性,同样选择“服务器类型选项卡;然后,选择默认的“PPP:Internet,Windows NT Server,Windows 98”,在高级选项中可以设置该协议其它功能选项;最后,单击“确定”按钮即可。

工作流程

当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接(底层up)。PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。

这些分组及其响应选择一些 PPP 参数,和进行网络层配置(此前如有PAP或CHAP验证先要通过验证),NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。

通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

特点与认证方式

特点

PPP协议是一种点——点串行通信协议。PPP具有处理错误检测、支持多个协议、允许在连接时刻协商IP地址、允许身份认证等功能,还有其他。PPP提供了3类功能:成帧;链路控制协议LCP;网络控制协议NCP。PPP是面向字符类型的协议。

PPP协议的帧格式

PPP是一种多协议成帧机制,它适合于调制解调器、HDLC位序列线路、SONET和其它的物理层上使用。它支持错误检测、选项协商、头部压缩以及使用HDLC类型帧格式(可选)的可靠传输。PPP提供了三类功能:

1 成帧:他可以毫无歧义的分割出一帧的起始和结束。

2 链路控制:有一个称为LCP的链路控制协议,支持同步和异步线路,也支持面向字节的和面向位的编码方式,可用于启动路线、测试线路、协商参数、以及关闭线路。链路控制协议LCP 建立点对点链路,是 PPP 中实际工作的部分。LCP 位于物理层的上方,负责建立、配置和测试数据链路连接。LCP 还负责协商和设置 WAN 数据链路上的控制选项,这些选项由 NCP 处理。

3 网络控制:具有协商网络层选项的方法,并且协商方法与使用的网络层协议独立。PPP允许多个网络协议共用一个链路,网络控制协议 (NCP) 负责连接PPP(第二层)和网络协议 (第三层)。对于所使用的每个网络层协议,PPP 都分别使用独立的 NCP来连接。例如,IP 使用 IP 控制协议 (IPCP),IPX 使用 Novell IPX 控制协议 (IPXCP)。

认证方式

一种是PAP,一种是CHAP。相对来说PAP的认证方式安全性没有CHAP高。PAP在传输password是明文的,而CHAP在传输过程中不传输密码,取代密码的是hash哈希值)。PAP认证是通过两次握手实现的,而CHAP则是通过3次握手实现的。PAP认证是被叫提出连接请求,主叫响应。而CHAP则是主叫发出请求,被叫回复一个数据包,这个包里面有主叫发送的随机的哈希值,主叫在数据库中确认无误后发送一个连接成功的数据包连接。

要求

简单:因IETF在设计因特网体系结构时,把最复杂的部分放在了TCP协议中,网际协议IP相对比较简单,所以对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。简单为首要要求

简单的设计还可以是协议在实现时不容易出错,从而不同厂商在协议的不同实现上互操作性提高了。

封装成帧:PPP协议必须规定特殊字符作为帧定界符(标志一个帧的开始和结束的字符),以便接收端从收到的比特流中能准确地找出帧的开始和结束位置。

透明性:PPP协议必须保证数据传输的透明性。(即如果数据中碰巧出现了和帧界定符一样的比特组合时要采取有效的措施来解决这个问题)

多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(例如IP和IPX等)的运行。

点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。

多种类型链路:除了要支持多种网络层协议外,PPP还必须能够在多种类型的链路上运行。

差错检测:PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。

检测连接状态:PPP协议必须具有一种机制能够及时自动检测出链路是否处于正常工作状态

最大传送单元: PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值(至少是1500字节),如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度。

网络层地址协商:PPP协议必须提供一种机制使通信的两个网络层(例如两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能的简单,且能在所有的情况下得出协商结果。

数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法,但PPP协议并不要求将数据压缩算法进行标准化。在TCP/IP协议族中,可靠运输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信,此外PPP协议只支持全双工链路。

配置方法

基本配置

1, 启用ppp

RouterTest#config terminal

Enter configuration commands,one per line. End with CNTL/Z.

RouterTest(config)#interface serial 0/0

RouterTest(config-if)#encapsulation ppp

RouterTest(config-if)#

2, 地址配置命令

RouterTest(config-if)#ip address 10.1.1.1 255.255.255.0

PAP配置实例

Router(config)#hostname RouterA

RouterA(config)#RouterB password itsasecret

RouterA(config)#interface Async 0

RouterA(config-if)#encapsulation ppp

RouterA(config-if)#ip address 10.0.0.1 255.255.255.0

RouterA(config-if)#dialer-map ip 10.0.0.2 name RouterB 5551234

RouterA(config-if)#username RouterA password itsasecret2

Router(config)#hostname RouterB

RouterB (config)#RouterA password itsasecret

RouterB (config)#interface Async 0

RouterB (config-if)#encapsulation ppp

RouterB (config-if)#ip address 10.0.0.2 255.255.255.0

RouterB (config-if)#dialer-map ip 10.0.0.1 name RouterA 5551234

RouterB (config-if)#username RouterB password itsasecret2

CHAP配置实例

Router(config)#hostname RouterA

RouterA(config)#RouterB password itsasecret

RouterA(config)#interface Async 0

RouterA(config-if)dialer in-band

RouterA(config-if)#encapsulation ppp

RouterA(config-if)#ppp authentication chap

RouterA(config-if)#ip address 10.0.0.1 255.255.255.0

RouterA(config-if)#dialer-map ip 10.0.0.2 name RouterB 5551234

RouterA(config-if)#username RouterA password itsasecret2

Router(config)#hostname RouterB

RouterB (config)#RouterA password itsasecret

RouterB (config)#interface Async 0

RouterB(config-if)dialer in-band

RouterB (config-if)#encapsulation ppp

RouterB (config-if)#ppp authentication chap

RouterB (config-if)#ip address 10.0.0.2 255.255.255.0

RouterB (config-if)#dialer-map ip 10.0.0.1 name RouterA 5551234

RouterB (config-if)#username RouterB password itsasecret2

CHAP和PAP

Router(config-if)#ppp authentication chap pap

配置PPP回拨

使用压缩

cisco支持的压缩方法:

Predictor:先判断数据是否已经被压缩过。如果数据被压缩过,则立即将其发送出去,而不浪费时间对已经压缩过的数据进行压缩。

Stacker:一种基于Lempel-Ziv(LZ)的压缩算法,对每种数据类型,只发送一次有关其在数据流中的位置。接收方根据这些信息重新组织数据流。

MPPC:MPPC协议(RFC2118)让cisco路由器器能够与microsoft客户端交换压缩后的数据,它使用一种基于LZ的压缩算法

TCP报头压缩:也叫Van Jacobson压缩,只用于压缩tcp报头。

配置压缩

Router(config)#interface serial2

Router(config-if)#compress {predictor|stac|mppc}

Or

Router(config)#interface async

Router(config-if)#ip tcp header-compression

Or

Router(config)#interface async

Router(config-if)#ip tcp header-compression passive

该命令告诉路由器,仅当从对方那里收到压缩后的报头后,才使用tcp报头压缩。

多链路PPP

通过使用多链路PPP,可以将多条连接捆绑成一条虚拟连接。

Router(config-if)#ppp multilink

Router(config-if)#dialer load-threshold load [outbound | inbound | either]

命令dialer load-threshol load指定在什么情况下将更多的B信道加入到MLP链路束中。当所有B信道的总负载超过指定的阀值后,拨号接口(BRI或PRI)将信道加入到多链路束中。

同样,如果总负载低于阀值,将拆除B信道。

参数load是接口的平均负载,其取值为1(没有负载)到255(满载)。

参数outbound(默认值)指定计算负载时只考虑出站数据流;参数inbound指定只考虑入站数据流;either指定计算负载时,选择出站负载和入站负载中较大的那个。

故障排查命令

debug ppp negotiation-确定客户端是否可以通过PPP协商; 这是您检查地址协商的时候。

debug ppp authentication-确定客户端是否可以通过验证。如果您在使用Cisco IOS软件版本11.2之前的一个版本,请发出debug ppp chap命令。

debug ppp error - 显示和PPP连接协商与操作相关的协议错误以及统计错误。

debug aaa authentication-要确定在使用哪个方法进行验证(应该是RADIUS,除非RADIUS服务器发生故障),以及用户是否通过验证。

debug aaa authorization-要确定在使用哪个方法进行验证,并且用户是否通过验证。

debug aaa accounting-查看发送的记录。

debug radius-查看用户和服务器交换的属性。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}