认识PPP协议和LCP
(2011-06-16 16:48:38) 标签: 杂谈 |
对于
PPP
协议,可以讲解的内容非常多。这个协议的应用也非常的广泛。那么这里我们就重点讲解一下
LCP
的内容。首先我们需要来哦接一下
ppp
协议的具体架构。
一、概述
1 、是一个二层协议,和
HDLC
、
RARP
地位一样
2 、
PPP
架构:
(1) 支持多种上层协议如
IP
、
IPX
、
AppleTalk
(2) 自身包含两个协议:网络控制协议
NCP
和链路控制协议
LCP
。
LCP
用于和底层进行协商,然后进行链路层的认证。接下来进行
NCP
的协商,建立和配置网络层协议如
IP
地址等,用于和三层进行协商将上层数据包封装进
PPP
里面。两个协议的协商都是双向的。链路拆除时先拆除
NCP
,再拆除
LCP
。
3 、
LCP
LCP 链路控制协议
(Link Control Protocol)
赋予
PPP
以多功能性,考虑到包格式、包大小和认证的协商。它还使
PPP
具有确定何时线路为失败、何时正常运行的功能。
LCP
用于配置和测试数据链路,工作方式如下:
第 1 步
链路建立阶段―――首先打开连接,然后确定相关通信参数
(
包括
MTU
、
compress type
、及链路认证类型。链路设置完后确认帧,然后是可选的链路质量确认阶段,
LCP
确定链路质量
第 2 步
可选
(
必要
)
的认证阶段―――两种认证方式:质询应答握手认证协议
(CHAP)
和密码认证协议
(PAP)
。
PPP
本身不需要认证,
cisco
路由器异步线路需要认证,建议使用
CHAP
认证方式。
第 3 步
网络层协议阶段―――
LCP
引导
NCP
激活和配置网络层协议。这一阶段结束后即可传输数据包。
第 4 步
链路终止阶段―――
LCP
指导
NCP
关闭
layer 3
。
二、HDLC和PPP帧格式的比较
1 、
HDLC
帧格式:
Flag-address-control-data(payload)-FCS-Flag
Flag: 前后各一个字节
Address: 一个字节。点到点连接,没有任何意义,值为全
1
,可以看作是二层的广播地址
控制信息:一或两个字节
负载: 1500 字节
FCS :四个字节
2 、
PPP
帧格式:
Flag-Address-Control-Protocol-LCP-FCS-Flag
Flag: 前后各一个字节,
8
个比特,值为
01111110
,标识帧为
PPP
的帧
.
前后各一个标识帧的开始和结束。
Address: 一个字节。点到点连接,没有任何意义,值为全
1
控制信息:一个字节,值为 11000000 ,意为没有顺序、流量控制、错误控制。
Flag/address/ 控制信息都是固定不变的。
协议字段:有一个参数 C021 表示
LCP
,
C023
表示要进行认证并且认证类型为
PAP
,
0223
表示要应用认证并且认证类型为
CHAP
,
C025
表示链路质量报告
LQR
与 HDLC 不同的是多了
2
个字节的协议字段。协议字段不同,后面的信息字段类型就不同。如:
0x0021 ——信息字段是
IP
数据报
0xC021 ——信息字段是链路控制数据
LCP
0x8021 ——信息字段是网络控制数据
NCP
0xC023 ——信息字段是安全性认证
PAP
0xC025 ——信息字段是
LQR
0xC223 ——信息字段是安全性认证
CHAP
三、基本配置
1 、
R2(config-if)#encapsulation ppp
2 、
peer neighbor-route
(1)R2(config-if)#no peer neighbor-route
干掉路由表里出现的对端接口地址的
32
位主机路由,在两端地址在同一网段时适用
(2) 默认情况下
peer neighbor-route
是打开的,路由表里会出现对端接口地址的
32
位主机路由,所以
PPP
两端的地址可以是不同网段的地址,而且可以保证数据连通性,这在点到点连接的情况下很常用。
注:点到点连接下可以配置成 /31 位的
IP
地址。这种配置地址的方法和借用地址的方法在点到点链路上比较常用。
四、PPP LCP
选项
1 、认证
Authentication
2 、回拨
Callback
:多用在
ISDN
3 、压缩
Compression
4 、多链路捆绑
Mutilink
:增加带宽增加冗余性增加
B
信道
五、PPP Authentication
1 、条件:
LCP
子层协商成功
2 、设备角色:主认证方与被认证方,可以同时成为主认证方和被认证方,即可作双向认证
3 、
PAP
认证:简单明文
4 、
CHAP
认证:
(1) 被认证方(远程用户)向认证方发起一个认证请求
(2) 认证方向被认证方返回一个挑战,格式为
01-id-random-
主认证方数据库里面的用户名
01 代表
challenge;
id 是
challenge
的序列号;
random 是随机产生的一个随机数
(3) 被认证方拿到用户名之后在本地数据库或是
3A
服务器里面查找对应的密码,然后将这个密码和上面的挑战
ID
和
random
随机数一起作
Hash,
再向主认证方返回一个响应包,格式为
02-id-hash-
被认证方本地数据库里面的用户名(和发过来的一样)
02 代表
CHAP
的响应数据包
id:copied from chalenge packet
主认证方刚发过来的那个
ID
hash 值:密码加挑战
ID
加挑战随机数作
hash
用户名:本地数据库用户名
(4) 主认证方收到挑战响应包之后查找第一次发出的挑战信息,同时查找响应包里的用户名在数据库里对应的密码,将得到的密码和挑战
ID
随机数一起作
Hash,
得到的值与被认证方发送过来的
hash
值作比较,如相同,则认证成功否则认证失败。
在这个认证过程中,在网络中传输的是挑战 ID 、随机数与密码的
hash
值,并不是密码本身,这保证了密码的安全性。同时认证的两端输入的数据都是挑战
ID
、随机数与密码,因而得到的
hash
值也一样,保证了认证的有效性。这时注意:两边都必须有用户名,且不需要相同,但数据库中的密码必须相同。
(5) 主认证方向被认证方返回一个认证成功的消息,格式为
03-id-"welcome in"
相关文档: understanding ppp chap
(6) 配置举例
单向认证举例:
R1 为主认证方,
R2
为被认证方
R1(config)#int s1/1
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authentication chap
R1(config)#username R2 password cisco
这个用于
chap
认证中第二三步之间的处理过程,注意必须是
password
,
secret
通不过
R2(config)#int s1/0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp authentication chap
R2(config-if)#ppp chap hostname R2
这条命令如果不打的话默认是主机名,是第二步中向主认证方发送的用户名
R2(config-if)#ppp chap password cisco
被认证方本地数据库的密码,如果没有在全局建立用户名和密码那么将会查找接口下的这个默认密码
双向认证简单:
R1(config)#int s1/1
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authentication chap
R1(config)#username R2 password cisco
R1(config-if)#no sh
R2(config)#int s1/0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp authentication chap
R2(config)#username R1 password cisco
R2(config-if)#no sh
注意接口下的默认 ppp chap password
只能用于
challenge
的回复
可以同时进行 chap 和
pap
的认证
R1(config-if)#ppp authentication pap chap
注意这并不是在
pap
认证失败再进行
chap
的认证而是对方不和我进行
pap
认证那么尝试用
chap
进行认证。
六、压缩
PPP 协议运行在速率十分有限的点到点串行链路上。为了提高数据发送效率,可以采用对数据进行压缩后再传送的方法,我们将其称为链路压缩。
LCP 支持以下一些链路压缩方法:
Stac
、
Predictor
、
MPPC
以及
TCP
头部压缩。不同的方法对
CPU
及内存的需求并不相同。有些需要更多的内存(内存密集型),有些则需要占用更多的
CPU
时间(
CPU
密集型)。压缩原理和效果也不相同。
A. Stac
:
Stac
压缩算法基于
Lempel-Ziv
理论,它通过查找、替换传送内容中的重复字符串的方法达到压缩数据的目的。使用
Stac
压缩算法可以选择由各种硬件(适配器、模块等)压缩或者由软件进行压缩,还可以选择压缩的比率。
Stac
压缩算法需要占用较多的
CPU
时间。
B. MPPC
:
MPPC
是微软的压缩算法实现,它也是基于
Lempel-Ziv
理论,也需要占用较多的
CPU
时间。
C. Predictor
:
Predictor
—预测算法通过检查数据的压缩状态(是否已被压缩过)来决定是否进行压缩。因为,对数据的二次压缩一般不会有更大的压缩率。相反,有时经过二次压缩的数据反而比一次压缩后的数据更大。
Predictor
算法需要占用更多的内存。
D. TCP
头部压缩:
TCP
头部压缩基于
Van Jacobson
算法,该算法通过删除
TCP
头部一些不必要的字节来实现数据压缩的目的。
R1(config-if)#compress {predictor | stac | mppc} predictor
是内存密集型的算法,后两者是
CPU
密集型的算法
R1(config)#inter async 2
R1(config-if)#ip tcp header-compression
七、多链路捆绑
LCP 的多链路捆绑(
MP
)选项通过将通信两端之间的多条通信链路捆绑成一条虚拟的链路而达到扩充链路可用带宽的目的。
LCP 的多链路捆绑可以在多种类型的物理接口上实现,包括异步串行接口、同步串行接口、
ISDN
基本速率接口
BRI
、
ISDN
主速率接口
PRI
。
LCP
的多链路捆绑也支持不同的上层协议封装类型,如
X.25
、
ISDN
、帧中继等。
配置: ( 多个物理接口下
)
ppp multilink
multilink-group 2
不需要配置地址
再起虚接口
interface Multilink 2
ip add ...
ppp multilink
multilink-group 2
no peer neighbor-route
no cdp enable
八、回拨
是指当通信一方拨号到另一方后,由另一方断开拨号连接并进行反向的拨号。
这对于从甲地到乙地的电话费大于从乙地到甲地的电话费的情形。这时,可以由甲方首先发起到乙方的呼叫连接,当乙方收到甲方的呼叫请求后,断开乙方的呼叫。然后,从乙方发起到甲方的回叫。甲方应答后,双方的通信链路就建立起来了。
回叫还有更安全的优点。因为乙方在回叫之前可以验证对方是否是合法用户,或者可以用口令数据库的方法或者可以用检验对方电话号码的方法。
九、NCP
NCP 网络控制协议
(Network Control Protocol)
实际上是一套协议。每个子协议都是为处理各自网络层协议所需的错综复杂的配置而设计的。
当
LCP
将链路建立好了以后,
PPP
要开始根据不同用户的需要,配置上层协议所需的环境。
PPP
使用网络控制协议
NCP
(
Network Control Protocol
,
NCP
)来为上层提供服务接口。针对上层不同的协议类型,会使用不同的
NCP
组件。如对于
IP
提供
IPCP
接口,对于
IPX
提供
IPXCP
接口,对于
APPLETALK
提供
ATCP
接口等。同时对于
IP
网络,提供
IP
地址,子网掩码和默认网关等地址的配置。
一、概述
1
2
(1)
(2)
3
LCP
第 1
第 2
第 3
第 4
二、HDLC和PPP帧格式的比较
1
Flag:
Address:
控制信息:一或两个字节
负载: 1500
FCS
2
Flag:
Address:
控制信息:一个字节,值为 11000000
Flag/address/
协议字段:有一个参数 C021
与 HDLC
0x0021
0xC021
0x8021
0xC023
0xC025
0xC223
三、基本配置
1
2
(1)R2(config-if)#no
(2)
注:点到点连接下可以配置成 /31
四、PPP
1
2
3
4
五、PPP
1
2
3
4
(1)
(2)
01
id
random
(3)
02
id:copied
hash
用户名:本地数据库用户名
(4)
在这个认证过程中,在网络中传输的是挑战 ID
(5)
相关文档: understanding
(6)
单向认证举例:
R1
R1(config)#int
R1(config-if)#encapsulation
R1(config-if)#ppp
R1(config)#username
R2(config)#int
R2(config-if)#encapsulation
R2(config-if)#ppp
R2(config-if)#ppp
R2(config-if)#ppp
双向认证简单:
R1(config)#int
R1(config-if)#encapsulation
R1(config-if)#ppp
R1(config)#username
R1(config-if)#no
R2(config)#int
R2(config-if)#encapsulation
R2(config-if)#ppp
R2(config)#username
R2(config-if)#no
注意接口下的默认 ppp
可以同时进行 chap
R1(config-if)#ppp
六、压缩
PPP
LCP
A.
B.
C.
D.
R1(config-if)#compress
R1(config)#inter
R1(config-if)#ip
七、多链路捆绑
LCP
LCP
配置: (
ppp
multilink-group
再起虚接口
interface
ip
ppp
multilink-group
no
no
八、回拨
是指当通信一方拨号到另一方后,由另一方断开拨号连接并进行反向的拨号。
这对于从甲地到乙地的电话费大于从乙地到甲地的电话费的情形。这时,可以由甲方首先发起到乙方的呼叫连接,当乙方收到甲方的呼叫请求后,断开乙方的呼叫。然后,从乙方发起到甲方的回叫。甲方应答后,双方的通信链路就建立起来了。
回叫还有更安全的优点。因为乙方在回叫之前可以验证对方是否是合法用户,或者可以用口令数据库的方法或者可以用检验对方电话号码的方法。
九、NCP
NCP