(others)LCP

认识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    不需要配置地址
 
再起虚接口
 
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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值