PPP协议

本文最后更新于:2025年11月10日 下午

一、协议基础与定位

  1. 核心定位:PPP是目前使用最广泛的点对点数据链路层协议,主要用于解决用户设备与ISP(互联网服务提供商,如中国电信、中国联通、中国移动)之间的网络接入问题,是用户接入因特网的关键数据链路层技术,常与PPPoE(PPP over Ethernet)协议配合使用。
  2. 发展与标准:由因特网工程任务组(IETF)于1992年制定,经1993-1994年修订后成为因特网正式标准,核心标准文档为RFC1661(《The Point-to-Point Protocol (PPP)》)和RFC1662(《PPP in HDLC-like Framing》),此外还有多个扩展标准(如RFC1598定义PPP在X.25中的应用、RFC1618定义PPP over ISDN等)。

二、协议核心构成

PPP协议通过三部分协同工作,实现点对点链路的高效数据传输,具体如下:

构成部分 核心功能 关键说明
对各种协议数据报的封装方法(封装成帧) 将网络层不同协议的数据包(如IP、IPX、AppleTalk)封装成PPP帧,适配物理层传输 是数据在链路层传输的“包装规范”,确保数据格式统一
链路控制协议(LCP) 建立、配置、测试数据链路连接,协商链路参数 负责链路的“初始化与维护”,是PPP链路建立的基础
一套网络控制协议(NCPs) 为不同网络层协议提供支持,配置网络层参数 每种NCP对应一种网络层协议,如IPCP(IP控制协议)用于配置IP地址

三、PPP帧格式

PPP帧分为首部、数据部分和尾部,各字段功能与规格明确,具体结构如下:

1. 帧结构总览

字段 标志(F) 地址(A) 控制(C) 协议(P) 数据部分 帧检验序列(FCS) 标志(F)
长度 1字节 1字节 1字节 2字节 ≤1500字节 2字节 1字节
功能 帧的定界符,取值为0x7E(二进制01111110 预留,固定取值0xFF,目前无实际作用 预留,固定取值0x03,目前无实际作用 指明数据部分的协议类型,用于上层协议分发 承载网络层数据包(如IP数据报、LCP/NCP分组) 基于CRC-CCITT(公式:X¹⁶+X¹²+X⁵+1)计算的校验位,检测帧传输错误 与首部标志一致,确保帧边界完整

2. 协议(P)字段关键取值

协议字段值 对应数据类型 说明
0x0021 IP数据报 数据部分需送交网络层IP协议处理
0xC021 LCP分组 数据部分需送交链路层LCP协议处理
0x8021 NCP分组 数据部分需送交对应NCP协议处理(如IPCP)

四、透明传输机制

透明传输是指确保帧内数据部分中的0x7E(帧定界符)、控制字符等不被误识别为帧边界,PPP针对不同链路类型采用两种方法:

1. 面向字节的异步链路:字节填充法(插入转义字符)

  • 发送方处理规则
    1. 若数据中出现0x7E(定界符),替换为0x7D(转义字符)+0x5E
    2. 若数据中出现0x7D(转义字符),替换为0x7D+0x5D
    3. 若数据中出现ASCII控制字符(数值<0x20),在该字符前插入0x7D,并将字符编码+0x20
  • 接收方处理规则:执行反向变换,恢复原始数据(如0x7D+0x5E还原为0x7E0x7D+0x5D还原为0x7D)。

2. 面向比特的同步链路:比特填充法(插入比特0)

  • 发送方处理规则:扫描数据部分的比特流,每发现5个连续的“1”,立即插入1个“0”(例:011111001111100);
  • 接收方处理规则:扫描数据部分的比特流,每发现5个连续的“1”,删除其后的1个“0”,恢复原始比特流。

五、差错检测机制

PPP采用帧检验序列(FCS) 实现差错检测,具体流程:

  1. 发送方:基于CRC-CCITT算法,对“地址(A)+控制(C)+协议(P)+数据部分”计算FCS值,封装到FCS字段;
  2. 接收方:收到帧后,对相同字段重新计算FCS,与帧中FCS字段对比——若一致则接收帧,若不一致则丢弃帧;
  3. 注意:PPP数据链路层不提供可靠传输服务(无重传机制),可靠性需由上层协议(如TCP)保障。

六、工作状态与链路建立流程

PPP链路建立需经历“物理层连接→LCP配置→鉴别→NCP配置→数据通信→链路终止”六个阶段,具体流程如下:

  1. 静止状态:链路未建立,无物理层连接;
  2. 物理层连接建立:检测到载波信号,物理层链路接通;
  3. LCP配置协商
    • 双方交换LCP分组,协商链路参数(如最大帧长、是否启用鉴别);
    • 协商成功进入下一阶段,失败则终止链路;
  4. 鉴别阶段
    • 可选流程,支持三种方式:无需鉴别、口令鉴别协议(PAP)、挑战握手鉴别协议(CHAP);
    • 鉴别成功进入NCP配置,失败则终止链路;
  5. NCP配置阶段
    • 双方交换网络层特定的NCP分组(如IP场景下的IPCP),配置网络层参数(如分配IP地址);
    • 配置完成后,链路进入“网络打开”状态,可进行数据通信;
  6. 链路终止
    • 触发条件:载波停止、出现故障、收到终止请求;
    • 终止后返回“静止状态”。

PPP协议
https://hellowydwyd.github.io/2025/10/08/PPP协议/
作者
YuDong Wang
发布于
2025年10月8日
许可协议