点对点协议(
Point to Point Protocol,PPP)为在
点对点连接上传输多协议
数据包提供了一个
标准方法。PPP 最初设计是为两个对等节点之间的
IP 流量传输提供一种封装协议。在
TCP-IP 协议集中它是一种用来
同步调制连接的
数据链路层协议(OSI模式中的第二层),替代了原来非标准的第二层协议,即
SLIP。除了 IP 以外 PPP 还可以携带其它协议,包括
DECnet 和
Novell 的 Internet 网包交换(
IPX)。
简介
点到点协议(
Point to Point Protocol,PPP)是为在同等单元之间传输
数据包这样的简单
链路设计的
链路层协议。这种链路提供
全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或
专线方式建立
点对点连接发送数据,使其成为各种主机、
网桥和路由器之间简单连接的一种共通的解决方案。PPP具有以下功能:
(1)PPP具有
动态分配IP地址的能力,允许在连接时刻协商
IP地址;
(3)PPP具有错误检测能力,但不具备纠错能力,所以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是一种多协议成帧机制,它适合于
调制解调器、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
chapRouterA(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回拨
使用压缩
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,可以将多条连接捆绑成一条虚拟连接。
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-查看用户和服务器交换的属性。