PPP协议
PPP协议
PPP协议是一种在串行链路上传输IP数据包的一种方法,是一个协议的集合,不是单一的协议,支持建立链路的链路控制协议LCP以及一系列的NCP
PPP帧格式:
-
标志字段F=0x7E(01111110),定界符
如果0x7E出现在帧内部的话,需要出现问题,所以有两种解决方案:
- 在异步链路上使用字符填充,即把0x7E用0x7D5E替换
- 在同步链路上使用位填充,即在连续的5个1之后填充一个0
-
地址字段A:用于指定那个站正在处理,但是PPP只关心一个站,所以设置了0xFF(所有站)
-
控制字段C:用于帧序列和重传行为,PPP中没有用,设为固定值0x03
-
协议(指示在信息字段中封装的数据类型):
- 0x0021时,数据部分是IP数据报。
- 0xC021时,数据部分是LCP数据(链路控制协议)。
- 0x8021时,数据部分是NCP(网络控制协议)数据。
- 0xC023 时,数据部分是PAP数据。
- 0xC025时: LCP中链路质量报告LQR
- 0xC223 时,数据部分是CHAP数据
-
数据部分 最大长度不能超过1500字节,1500字节大小等于PPP协议中配置参数选项MRU
-
FCS(校验): 用于差错检测的冗余循环校验码
PPP的应用
PPP协议的层次模型
LCP
LCP帧格式:在PPP分组上进行简单的封装
-
标识字段:LCP请求帧的发送方提供的序列号,在生成一个回复(ACK,NACK,REJECT)时,这个字段通过复制响应分组请求中包含的值来构造,请求方可通过匹配标识符来识别相应请求的应答
-
代码字段:给出请求或者响应的操作类型
- 配置请求(0x01):使链路两端开始基本的配置过程,并建立商定的选项
- 配置ACK(0x02):接受一组选项
- 配置NACK(0x03):用建议选项表明部分拒绝
- 配置REJECT(0x04):完全拒绝一个或多个选项
- 终止请求(0x05):在完成后清除一条链路
- 终止ACK(0x06)
- 代码REJECT(0x07):表明前一个分组包含的某些字段值未知
- 协议REJECT(0x08)
- 回送请求(0x09):在一条活跃的链路上随时交换,验证对方的操作
- 回送应答(0x0A):在一条活跃的链路上随时交换,验证对方的操作
- 放弃请求(0x0B):用于性能测试,指示对方丢弃没有响应的分组
- 标识(0x0C):了解对方的系统类型
- 剩余时间(0x0D):指出链路保持建立的时间
-
长度字段:LCP分组的字节长度,不能超过最大接收单元(MRU),长度字段是LCP协议的一部分,PPP协议不提供这些字段。
LCP协商过程
PPP认证
PPP的会话建立过程
PAP
认证方式:一端发送明文口令至对等端,由对方认证; 特性:明文传输,不安全。
PAP认证过程
PAP包格式
CHAP
CHAP是双方都把随机数+密码通过散列函数来运算,所以网路上只会监看到杂凑函数的种类及随机数,不会看到密码,安全性很高.
CHAP认证过程
CHAP包格式
CHAP认证过程报文交换过程
NCP
在LCP完成链路建立和认证之后,该链路每端都进入网络状态,并使用一个或者多个NCP进行网络层的相关协商。
对于IPv4,NCP被称为IP控制协议(IPCP) 对于IPv6,NCP被称为IPV6CP
PPPOE协议
PPP 协议要求进行通信的双方之间是点到点的关系,不适于广播型的以太网和另外一些多点访问型的网络,于是就产生了PPPOE协议。PPPOE不仅为使用桥接以太网接入的用户提供了一种宽带接入手段,同时还能提供方便的接入控制和计费
PPPoE报文
- VER:固定为1;
- TYPE:固定为1;
- CODE:
- 发现阶段:
- 0x09 PADI:PPPOE Active Discovery Initiation
- 0x07 PADO:PPPOE Active Discovery Offer
- 0x19 PADR:PPPOE Active Discovery Request
- 0x65 PADS:PAD Session-confirmation
- 0xa7 PADT:PPPOE Active Discovery Terminate
- 会话阶段: 0x00 Session ID:PPP会话的唯一标识。
- 发现阶段:
以太网帧、PPPOE和PPP直接的封装关系
PPPOE的两个阶段:
-
发现阶段
- 一个主机发现一个接入集中器,发现AC的MAC;
- 确定会话标识Session ID。
报文格式
-
会话阶段
- 主机和接入集中器之间依据PPP协议传送PPP数据,进行PPP的各项协商和数据传输。
- 传输的数据包中必须包含在发现阶段确定的会话标识并保持不变。
报文格式