📖 3.3 点对点协议 PPP
🎯 课程摘要:本节课介绍点对点协议 PPP 的概述、应用场景、协议组成、帧格式、透明传输机制、差错检测及工作状态。PPP 是目前使用最广泛的点对点数据链路层协议,通过 LCP 协商链路参数、NCP 配置网络层协议,实现从链路建立到数据传输的完整流程。
📝 详细笔记
1. PPP 协议概述
- 概念定义:PPP 是目前使用最广泛的点对点数据链路层协议,由 IETF 于 1992 年制定,经多次修订已成为因特网的正式标准。
- 应用场景:
- 用户计算机通过点对点链路连接到 ISP,进而接入因特网(数据链路层协议一般采用 PPP)
- PPPoE(以太网上运行的 PPP,1999 年公布):使 ISP 可以通过 DSL、电缆调制解调器及以太网等宽带接入技术,以以太网接口形式为用户提供接入服务
- 广域网中路由器之间的专用线路
2. PPP 的组成
PPP 是数据链路层协议,将上层交付下来的 PDU 封装成帧,由以下三部分组成:
- 封装成帧:将上层 PDU 封装为 PPP 帧
- LCP(链路控制协议):用于建立、配置以及测试数据链路的连接
- NCP(网络控制协议):为支持不同的网络层协议而设计
- 运行链路类型:可在面向字节的异步链路和面向比特的同步链路上运行
3. PPP 帧格式
PPP 帧由帧首部、帧尾部和数据载荷三部分组成:
| 字段 | 长度 | 取值 | 说明 |
|---|---|---|---|
| 标志 (F) | 1 字节 | 0x7E | 帧定界符 |
| 地址 (A) | 1 字节 | 0xFF | 地址字段 |
| 控制 (C) | 1 字节 | 0x03 | 控制字段 |
| 协议 | 2 字节 | 见下表 | 指明数据载荷向上交付给哪个协议处理 |
| 数据载荷 | ≤1500 字节 | — | 上层 PDU |
| FCS | 2 字节 | — | 使用 CRC 计算出的帧检验序列 |
| 标志 (F) | 1 字节 | 0x7E | 帧定界符 |
协议字段取值含义:
| 协议字段取值 | 数据载荷内容 |
|---|---|
| 0x0021 | IP 数据报 |
| 0xC021 | LCP 分组 |
| 0x8021 | NCP 分组 |
4. PPP 的透明传输
帧首部和尾部中的标志字段作为帧定界符,取值为 0x7E(比特角度为 01111110)。若数据载荷中恰好包含帧定界符,会造成接收方对帧定界的误判,需进行透明传输处理。
面向字节的异步链路 —— 字节填充:
将帧定界符看作取值为 0x7E 的字符,发送方处理规则如下:
| 原始数据 | 填充后 | 规则说明 |
|---|---|---|
| 0x7E | 0x7D, 0x5E | 每个 0x7E 减去 0x20,前插转义字符 0x7D |
| 0x7D | 0x7D, 0x5D | 每个 0x7D 减去 0x20,前插转义字符 0x7D |
| <0x20 的控制字符(如 0x03) | 0x7D, 0x23 | 加上 0x20 变为非控制字符,前插转义字符 0x7D |
接收方进行与发送方相反的变换即可恢复原始数据载荷。
面向比特的同步链路 —— 零比特填充:
将帧定界符看作 8 比特特定位串 01111110。
- 发送方:扫描数据载荷,只要出现 5 个连续的比特 1,就在其后填入一个比特 0,确保数据载荷不会包含 01111110
- 接收方:扫描数据载荷,每出现 5 个连续的比特 1,就删除其后的一个比特 0
5. PPP 的差错检测
- 帧尾部包含 2 字节的 FCS 字段,使用 CRC 计算检测码
- 接收方每收到一个 PPP 帧就进行 CRC 校验:正确则收下,错误则丢弃
- ⚠️ 重点/考点:使用 PPP 的数据链路层向上提供的是不可靠数据传输服务(只检错并丢弃错误帧,不纠错)
助教补充:PPP 的"不可靠"是指不保证数据无差错送达,可靠传输需由上层协议(如 TCP)保证。
6. PPP 的工作状态
以用户主机拨号接入 ISP 拨号服务器为例,PPP 链路状态转换如下:
LCP/NCP 协商过程时序图:
- 鉴别方式:可不使用鉴别,也可使用 PAP 或 CHAP
- NCP 配置:若上层使用 IP 协议,则使用 IPCP 对 PPP 链路每一端配置 IP 模块(如分配 IP 地址)
- 打开状态:只要链路处于打开状态,双方即可进行数据通信
💡 核心总结
- PPP 是最广泛的点对点数据链路层协议,应用于用户接入 ISP 和广域网路由器互连
- PPP 由封装成帧、LCP、NCP 三部分组成
- 帧格式中标志字段 0x7E 为定界符,协议字段区分载荷类型(0x0021/IP、0xC021/LCP、0x8021/NCP)
- 透明传输:异步链路用字节填充,同步链路用零比特填充
- 工作状态流程:静止 → 建立 → 鉴别 → 网络 → 打开 → 终止 → 静止
- PPP 向上提供不可靠数据传输服务(CRC 检错,错误帧直接丢弃)
❓ 课后思考 / 经典考题
- PPP 帧的协议字段取值为 0xC021 时,数据载荷封装的是什么协议的分组?
- 面向比特的同步链路上,PPP 如何实现透明传输?零比特填充的具体规则是什么?
- PPP 提供的是可靠还是不可靠的数据传输服务?为什么?
- 简述 PPP 从拨号到数据传输的完整状态转换过程。