计算机网络笔记(十五)——3.2点对点协议PPP
3.2.1PPP协议的特点
PPP协议(Point-to-Point Protocol)是广泛使用的点对点数据链路层协议,其核心特点如下:
一、PPP协议的核心特性
特性 | 说明 |
---|---|
简单性 | 无流量控制、无序号机制,仅进行CRC校验并丢弃错误帧 |
封装成帧 | 使用特殊标记(0x7E)定义帧边界 |
透明传输 | 通过字节填充或零比特填充避免特殊字符干扰 |
支持多网络层协议 | 可通过NCP协商支持IP、IPX等多种协议 |
多链路类型兼容 | 适用于串行/并行、同步/异步、铜缆/光纤等多种物理链路 |
差错检测 | 使用CRC校验检测错误帧并直接丢弃 |
动态MTU协商 | 默认MTU为1500字节,协商失败则拒绝传输 |
身份验证支持 | 支持PAP(明文)和CHAP(加密)两种验证机制 |
无可靠传输机制 | 依赖上层协议(如TCP)处理重传和纠错 |
二、协议组成
PPP协议由三个核心组件构成:
三、帧格式分析
PPP帧结构如下图所示:
- 关键字段:
- 标志字段:固定0x7E(二进制01111110)作为帧边界
- 协议字段:0x0021表示IPv4,0xC021表示LCP数据
- 数据部分:最大传输单元(MTU)默认1500字节
四、透明传输实现
类型 | 原理 | 示例 |
---|---|---|
字节填充 | 转义字符0x7D前导特殊字符 | 原数据7E → 编码为7D 5E |
零比特填充 | 发送端每5个连续1后插入0,接收端删除 | 原比特流01111101 → 填充为011111001 |
五、典型工作流程
PPP链路建立过程的状态转移图:
详细步骤:
- LCP协商:协商MTU、认证方式(PAP/CHAP)
- 身份认证:
- PAP:明文传输用户名/密码(易被窃听)
- CHAP:通过哈希挑战应答实现安全验证
- NCP配置:分配IP地址(如使用IPCP),启用TCP首部压缩
六、与传统协议的对比
对比项 | PPP | HDLC |
---|---|---|
可靠性 | 无纠错和重传机制 | 支持可靠传输(已逐渐被淘汰) |
灵活性 | 支持多种网络层协议 | 仅支持固定网络层格式 |
验证机制 | 支持PAP和CHAP | 无内置验证 |
应用场景 | 拨号接入、PPPoE宽带 | 路由器间专用线路 |
七、实际应用场景
-
拨号上网:用户通过调制解调器建立PPP连接
-
PPPoE(PPP over Ethernet):
- 将PPP帧封装在以太网帧中
- 用于ADSL宽带接入,通过
pppoe-discovery
发现BAS
- VPN隧道:通过GRE/L2TP封装PPP实现远程安全接入
总结:PPP协议以其简单、灵活和兼容性强的特点,成为点对点通信的核心协议。结合LCP/NCP的动态协商能力,既能适应不同链路环境,又能支持多种网络层协议,但需注意其在可靠性和安全性上对上层协议的依赖。
3.2.2PPP协议的帧格式
3.2.2 PPP协议的帧格式
PPP(Point-to-Point Protocol)协议的帧格式设计目标是简单、高效且支持透明传输。其标准帧结构如下:
PPP帧完整结构图(mermaid):
各字段详细说明:
1. 标志字段(Flag)
- 固定值
0x7E
(二进制01111110
) - 标识帧的开始和结束
- 连续两个Flag表示空帧(丢弃处理)
2. 地址字段(Address)
- 固定值
0xFF
(广播地址) - 所有PPP节点必须接受该地址(实际无实际寻址功能)
3. 控制字段(Control)
固定值 0x03
(无编号帧UI - Unnumbered Information)
保留HDLC兼容设计,无流量控制功能
4. 协议字段(Protocol)
- 2字节,标识数据域的协议类型:
┌──────────┬─────────────────────────┐
│ 协议值 │ 描述 │
├──────────┼─────────────────────────┤
│ 0x0021 │ IPv4数据包 │
│ 0xC021 │ LCP控制协议 │
│ 0x8021 │ IPCP控制协议 │
│ 0x8035 │ NCP协商 │
└──────────┴─────────────────────────┘
5. 信息域(Information)
- 长度可变(默认MTU为1500字节)
- 包含上层数据载荷(IP/NCP/LCP等)
6. 帧校验序列(FCS)
- 使用 CRC循环冗余校验(通常为2字节的CRC-16)
- 可扩展为4字节的CRC-32(用于高速链路)
透明传输实现机制
当数据中出现 0x7E
、0x7D
等特殊字符时,PPP采用 字节填充(Byte Stuffing):
转义规则:
原字符 | 转义后序列 | 说明 |
---|---|---|
0x7E | 0x7D 0x5E | 标志字符转义 |
0x7D | 0x7D 0x5D | 转义字符自身转义 |
ASCII控制符(≤0x20) | 0x7D (ch XOR 0x20) | 控制字符转义 |
PPP帧示例
假设发送数据 HelloPPP
(协议类型为IPv4):
关键特点总结
- 极简设计:去除了传统HDLC的复杂控制功能(如窗口、确认机制)
- 协议协商:通过LCP进行链路参数协商(如MRU、认证方式)
- 多协议支持:通过Protocol字段区分不同上层协议
- 错误检测:CRC校验保障帧完整性,错误帧直接丢弃(无重传机制)
实际应用中,PPP广泛用于拨号连接、PPPoE(ADSL宽带接入)等场景。
3.2.3PPP协议的工作状态
PPP(Point-to-Point Protocol)协议的工作状态是整个PPP链路建立过程的核心
一、PPP协议工作状态详解
1. 链路静止(Link Dead)
表示物理线路未接通或已断开,PPP协议无法进行任何通信。
- 触发离开条件:检测到物理链路可用(如调制解调器拨号成功)。
2. 链路建立(Link Establish)
双方通过LCP协议(链路控制协议)协商链路参数:
- 协商最大传输单元(MTU)
- 认证协议(PAP/CHAP)
- 是否禁用地址字段和控制字段
- 状态转换条件:
- 成功:LCP协商参数达成一致 → 进入认证阶段;
- 失败:超时或协商不一致 → 返回链路静止。
3. 认证阶段(Authenticate)
通过预设协议验证对方身份:
- PAP(Password Authentication Protocol):
明文传输用户名和密码,存在安全风险。 - CHAP(Challenge-Handshake Authentication Protocol):
使用挑战哈希加密,更安全。 - 状态转换条件:
- 成功:身份验证通过 → 进入网络层协商;
- 失败:验证错误或超时 → 进入链路终止。
4. 网络层协议(Network)
使用NCP协议(网络控制协议)配置网络层参数:
- 对于IP协议(IPCP):
- 协商IP地址(静态分配或动态获取)
- 启用IPv4报头压缩
- 状态转换条件:
- 成功:网络层配置完成 → 进入链路打开;
- 失败:配置参数不一致 → 进入链路终止。
5. 链路打开(Link Open)
数据传输阶段:
- 可传输IP数据包、网络层控制信号(如ICMP)。
- 周期性发送LCP Echo Request检测链路存活。
6. 链路终止(Link Terminate)
任何一方发起终止请求后:
- 交换LCP终止分组(Terminate-Request/Ack)。
- 关闭物理连接 → 回到链路静止状态。
二、工作状态流程图
三、关键子协议
- LCP(链路控制协议):
- 负责链路参数协商,包括最大帧长度、认证协议选择。
- NCP(网络控制协议):
- 针对不同网络层协议(如IP/IPv6)进行配置;
- IPCP(IP控制协议)是最常用的NCP。
四、典型应用场景
- 用户拨号上网:
- 用户拨号 → Modem建立物理连接;
- 发起LCP协商 → 通过PAP/CHAP验证;
- 分配IP地址 → 进入网络数据传输。
通过上述流程,PPP协议能够逐步建立连接、验证安全参数、配置网络选项,最终实现端到端的可靠数据传输。