4 题型 - 透明传输与PPP协议
Chinese-language Computer Science 408 note: 4 题型 - 透明传输与PPP协议. Original source available where applicable.
On this page
This note is currently available in Chinese. The original wording, formulas and diagrams are preserved to avoid an unverified technical translation.
描述:PPP 在点到点链路上传送网络层分组。同步面向比特链路使用零比特填充,异步面向字节链路使用转义字节填充,以保证数据载荷中出现的特殊模式不会被误判为帧边界。PPP 用 FCS 检错,但不提供序号、确认重传和流量控制,因此向网络层提供不可靠服务。
4.1 PPP 的基本特点
- 面向点到点链路,不是共享介质的多点访问协议。
- 可承载多种网络层协议,协议字段指出数据部分承载的上层类型。
- 使用 FCS/CRC 检测帧错误,检测到错误后丢弃。
- 不使用帧序号,不进行确认重传,也不提供流量控制。
- 因而 PPP 提供的是无连接、不可靠的数据链路层服务;可靠性需要更高层协议实现。
典型 PPP 帧可概括为:
标志 地址 控制 协议 信息 FCS 标志
7E FF 03 ... ... ... 7E
标志字段 0x7E 用于分隔帧;异步链路中的转义字符为 0x7D。
4.2 同步链路:零比特填充
同步面向比特链路以比特模式 01111110 作为帧标志。为避免载荷中出现相同模式:
- 发送方对两个边界标志之间的帧内容逐位扫描,每遇到连续 5 个
1,立即插入一个0。 - 接收方在两个边界标志之间逐位扫描,每遇到连续 5 个
1,删除其后由发送方插入的0。 - 填充与删除作用于两个边界标志之间的帧内容,不处理标志字段本身;发送端先计算并附加 FCS,再执行比特填充。
4.2.1 模拟题:恢复原始比特串
接收方得到经过零比特填充的比特串:
0001110111110111110110
按规则分组可看成:
0001110 11111[0] 11111[0] 110
删除两处连续 5 个 1 后的填充 0,得到:
00011101111111111110
答案:C。
4.3 异步链路:字节填充
面向字节的异步链路以 0x7E 为帧标志,以 0x7D 为转义字节。发送端对特殊字节进行转义:
| 原始字节 | 线路上传输 |
|---|---|
0x7E |
0x7D 0x5E |
0x7D |
0x7D 0x5D |
| 需要转义的 ASCII 控制字符 | 0x7D 后跟原字节异或 0x20 的结果 |
接收端见到 0x7D,就把其后的字节与 0x20 做异或,恢复原字节:
$$Original=Escaped\oplus0x20$$
4.3.1 模拟题:字节反转义
收到的数据载荷为:
0x7D 0x5E 0x7D 0x23 0x7D 0x21 0x7D 0x5D 0x5E
逐组恢复:
| 收到的字节 | 恢复结果 |
|---|---|
0x7D 0x5E |
0x5E XOR 0x20 = 0x7E |
0x7D 0x23 |
0x23 XOR 0x20 = 0x03 |
0x7D 0x21 |
0x21 XOR 0x20 = 0x01 |
0x7D 0x5D |
0x5D XOR 0x20 = 0x7D |
最后的 0x5E |
前面没有 0x7D,原样保留 |
原始载荷为:
0x7E 0x03 0x01 0x7D 0x5E
答案:D。
4.4 PPP 为什么是不可靠服务
PPP 的 FCS 能判断帧在传输中是否发生可检测的比特错误,但“检错”不等于“可靠传输”。PPP 缺少可靠传输所需的关键机制:
- 没有帧序号,不能识别重复帧或按序重组。
- 没有 ACK/NAK 和超时重传。
- 没有滑动窗口和流量控制。
因此错误帧会被丢弃,PPP 本身不负责补发。
4.5 PPP 链路工作阶段
PPP 链路的典型状态转换为:
静止 -> 建立 -> 鉴别 -> 网络 -> 打开 -> 终止
LCP 可选 NCP 数据通信
- 静止:物理链路尚未建立。
- 建立:检测到载波并建立物理连接后,LCP 协商最大接收单元、鉴别协议等链路参数。
- 鉴别:若配置要求鉴别,则使用协商的鉴别协议验证身份;不需要鉴别时可跳过。
- 网络:双方交换对应网络层协议的 NCP 分组;承载 IP 时由 IPCP 等进行网络层配置。
- 打开:配置完成,开始正常传送网络层数据。
- 终止:链路关闭并释放相关资源,回到静止状态。
LCP 管理数据链路本身,NCP 为不同的网络层协议进行配置,二者不要混淆。
4.6 易错点
- 同步面向比特链路用零比特填充;异步面向字节链路用字节填充。
- 零比特填充是在连续 5 个
1后插入0,不是等到出现完整01111110才处理。 - 字节反转义的本质是将
0x7D后的字节与0x20异或;没有前导0x7D的普通字节不能擅自修改。 - CRC/FCS 只能检错;PPP 没有重传、序号和流量控制,所以仍是不可靠协议。
- LCP 协商链路参数,NCP 配置上层网络协议;完成 NCP 后才进入打开状态传送数据。
相关知识
- 科目导航:计算机网络导航
- 阅读顺序:上一篇:CSMA/CD 计算 · 下一篇:CSMA/CA
- 关联专题:数据链路层总纲
4.7 本节复盘
- PPP 以
0x7E分隔帧,使用 FCS 检错,但不负责确认重传和流量控制。 - 同步链路每连续 5 个
1插入一个0;接收端删除该填充位以恢复原始数据。 - 异步链路用
0x7D转义,接收端对其后的字节执行XOR 0x20。 - PPP 向网络层提供不可靠服务;链路依次经历静止、LCP 建立、可选鉴别、NCP 网络配置和打开状态。