← Back to Learning Notes

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      数据通信
  1. 静止:物理链路尚未建立。
  2. 建立:检测到载波并建立物理连接后,LCP 协商最大接收单元、鉴别协议等链路参数。
  3. 鉴别:若配置要求鉴别,则使用协商的鉴别协议验证身份;不需要鉴别时可跳过。
  4. 网络:双方交换对应网络层协议的 NCP 分组;承载 IP 时由 IPCP 等进行网络层配置。
  5. 打开:配置完成,开始正常传送网络层数据。
  6. 终止:链路关闭并释放相关资源,回到静止状态。

LCP 管理数据链路本身,NCP 为不同的网络层协议进行配置,二者不要混淆。

4.6 易错点

  • 同步面向比特链路用零比特填充;异步面向字节链路用字节填充。
  • 零比特填充是在连续 5 个 1 后插入 0,不是等到出现完整 01111110 才处理。
  • 字节反转义的本质是将 0x7D 后的字节与 0x20 异或;没有前导 0x7D 的普通字节不能擅自修改。
  • CRC/FCS 只能检错;PPP 没有重传、序号和流量控制,所以仍是不可靠协议。
  • LCP 协商链路参数,NCP 配置上层网络协议;完成 NCP 后才进入打开状态传送数据。

相关知识

4.7 本节复盘

  • PPP 以 0x7E 分隔帧,使用 FCS 检错,但不负责确认重传和流量控制。
  • 同步链路每连续 5 个 1 插入一个 0;接收端删除该填充位以恢复原始数据。
  • 异步链路用 0x7D 转义,接收端对其后的字节执行 XOR 0x20。
  • PPP 向网络层提供不可靠服务;链路依次经历静止、LCP 建立、可选鉴别、NCP 网络配置和打开状态。