HDLC 和 PPP 协议如何实现帧同步与差错控制


数据链路层协议(如 HDLCPPP)的核心任务是确保数据在相邻节点之间可靠传输,主要通过 帧同步差错控制 机制实现。以下是它们的实现方式:


1. 帧同步(Frame Synchronization)

帧同步的目的是让接收方能够准确识别帧的 起始结束,避免数据解析错误。

(1) HDLC(高级数据链路控制)

  • 帧格式
    | Flag (0x7E) | Address | Control | Data | FCS | Flag (0x7E) |
    
  • 同步机制
    • 标志字节(Flag)0x7E(二进制 01111110)作为帧的起始和结束标记。
    • 比特填充(Bit Stuffing)
      • 发送端:如果在数据部分出现连续 5 个 1,自动插入一个 0,防止数据部分误判为 Flag
      • 接收端:检测到 5 个 1 + 0 时,删除该 0,恢复原始数据。
    • 示例:
      原始数据:01111110(可能误判为 Flag)
      发送端填充后:011111010(插入 0)
      接收端恢复:01111110
      

(2) PPP(点对点协议)

  • 帧格式
    | Flag (0x7E) | Address (0xFF) | Control (0x03) | Protocol | Data | FCS | Flag (0x7E) |
    
  • 同步机制
    • 同样使用 Flag = 0x7E 作为帧边界。
    • 字符填充(Byte Stuffing)
      • 如果数据部分出现 0x7E,转义为 0x7D 0x5E
      • 如果出现 0x7D(转义符),转义为 0x7D 0x5D
    • 示例:
      原始数据:0x7E(Flag)
      发送端转义:0x7D 0x5E
      接收端恢复:0x7E
      

2. 差错控制(Error Control)

差错控制确保数据在传输过程中不被损坏,主要依赖 FCS(帧校验序列)ARQ(自动重传请求) 机制。

(1) FCS(帧校验序列)

  • HDLC & PPP 均使用 CRC(循环冗余校验) 计算 FCS:
    • HDLC:通常用 CRC-16CRC-32(如 FCS = CRC(Address + Control + Data))。
    • PPP:支持多种校验方式(如 CRC-16/32),默认 CRC-16
  • 接收端检测
    • 计算接收数据的 CRC,与 FCS 比对。
    • 如果 CRC 不匹配,丢弃该帧(HDLC 可能触发重传,PPP 通常依赖上层协议)。

(2) ARQ(自动重传请求)

  • HDLC 支持 3 种 ARQ 机制
    1. 停等 ARQ(Stop-and-Wait)
      • 发送一帧后等待 ACK,超时未收到则重传。
    2. 回退 N 帧(Go-Back-N)
      • 发送方连续发送多帧,接收方发现错误后丢弃后续所有帧,发送方从错误帧开始重传。
    3. 选择性重传(Selective Repeat)
      • 仅重传错误的帧,其余帧继续传输(效率最高)。
  • PPP
    • 默认无 ARQ(依赖上层协议如 TCP 进行重传)。
    • 但可通过 LCP(链路控制协议) 协商启用 带重传的可靠模式(较少使用)。

3. 对比总结

机制 HDLC PPP
帧同步 比特填充(Bit Stuffing) 字节填充(Byte Stuffing)
差错检测 CRC-16/32 CRC-16/32(可协商)
差错恢复 支持 ARQ(停等、GBN、SR) 默认无 ARQ(依赖上层协议)
典型应用 广域网(如帧中继)、串行通信 拨号上网(PPPoE)、路由器间链路

4. 关键结论

  • 帧同步:HDLC 用 比特填充,PPP 用 字节填充,均避免 Flag 误判。
  • 差错检测:均依赖 CRC 计算 FCS,确保数据完整性。
  • 差错恢复
    • HDLC 内置 ARQ(如 Go-Back-N),适合可靠传输。
    • PPP 通常 不处理重传(由 TCP 等上层协议负责),但可配置可靠模式。

理解这些机制有助于分析数据链路层如何实现 无差错传输,并为上层(如网络层)提供可靠服务。

posted @ 2025-05-21 08:17  guanyubo  阅读(182)  评论(0)    收藏  举报