一、基本概念
1、定义:PPP 协议是一种数据链路层协议,在两点之间建立直接通信连接。常用于拨号上网、宽带接入、路由器间通信等。
2、核心功能:
①链路控制:建立、配置和测试数据链路连接。
②网络层协议支持:支持 IP、IPX 等多种网络层协议。
③错误检测:通过 CRC 校验保证数据完整性
二、协议组成
2、LCP(链路控制协议):通过交互数据报文协商对应的参数
①链路建立阶段
发送请求:客户端向对端发送Configure - Request帧,其中包含期望协商的参数,如 MRU、认证协议类型、魔术字等。
接收回应:对端收到帧后检查参数。会有以下情况:
若全部参数可接受,发Configure - Ack帧确认;
若部分参数不匹配,发Configure - Nak帧并给出建议值;
若有参数不识别,发Configure - Reject帧要求重协商。
重复协商:若收到 Configure - Nak 或 Configure - Reject 帧,客户端调整参数后重新发送 Configure - Request 帧,直至双方都发送 Configure - Ack 帧,链路参数协商完成。
②链路维护阶段
在链路正常运行过程中,双方会定期发送 LCP 帧来维持链路的连接,例如通过发送 Echo - Request 和 Echo - Reply 帧来检测链路的连通性。
③链路终止阶段
当需要终止链路时,一方会发送 Terminate - Request 帧,另一方收到后如果同意终止,会发送 Terminate - Ack 帧进行确认,然后双方关闭链路。
2、NCP(网络控制协议):互相交互报文协议为IPCP,检测IP地址冲突,学习路由,下发地址等
①前提条件:LCP 协商成功,链路建立后,开启 NCP 协商。
②发送请求:依据不同网络层协议,发送对应的 NCP Configure - Request帧,如 IP 协议帧会包含 IP 地址分配方式。
③接收回应:
静态IP地址协商:接收方检查请求帧,能接受所有参数则发Configure-Ack报文确认;检查IP地址是否冲突。
动态IP地址协商:部分不可接受发Configure-Nak报文并提建议;下发地址。
④重复协商:若收到非Configure-Ack帧,发送方调整参数重发请求帧,直至双方确认协商成功,网络层协议开始工作。
3、认证协议及协商过程
①PAP认证----两次握手明文认证
协商阶段:在 LCP 协商中确认使用 PAP 认证。
认证过程:
- 客户端发送 Authenticate-Request帧(含明文用户名和密码)。
- 服务器验证:验证通过 → 回复Authenticate-Ack帧;
- 验证失败 → 回复 Authenticate-Nak 帧。
特点:明文传输,安全性低,适用于低风险场景。
②CHAP认证----三次握手认证
协商阶段:LCP 协商时确定是否用 CHAP 认证。
认证过程:
- 服务器发送Challenge 帧给客户端,含随机挑战值和标识符。
- 客户端用密码和挑战值哈希运算,将结果、用户名、标识符放Response帧发给服务器。
- 服务器用保存密码和原挑战值运算,结果与客户端比对,相同发Success帧,不同发 Failure 帧。
特点:加密传输,安全性高,适用于高风险场景。
三、 工作流程
1、链路建立:LCP 协商参数,确定通信规则。
2、身份认证(可选):使用 PAP 或 CHAP 验证用户身份。
3、网络层协议配置:NCP 为特定网络层协议分配资源(如 IP 地址)。
4、数据传输:封装并传输网络层数据包。
5、链路终止:LCP 关闭连接。
四、 数据封装格式
PPP 帧结构如下:
标志位(1 字节) | 地址(1 字节) | 控制(1 字节) | 协议(2 字节) | 数据(可变) | FCS(2-4 字节) | 标志位(1 字节) |
---|
1、标志位:固定为0x7E
,标识帧的开始和结束。
2、协议字段:指示数据部分的协议类型(如0x0021
表示 IPv4)。
3、FCS:帧校验序列,用于检测传输错误。
五、应用场景
1、拨号上网:通过电话线连接 ISP(如早期的 Modem 拨号)。
2、宽带接入:ADSL、光纤到户(FTTH)的 PPP 封装(如 PPPoE 协议)。
3、VPN 隧道:在 L2TP/IPSec 等隧道技术中封装数据。
4、路由器间通信:广域网(WAN)链路上的点对点连接。