字节填充的目的

数据链路层中,来自物理层的比特流被分成数据帧。数据帧可以是固定长度或可变长度。在可变长度帧中,要传输的每个帧的大小可能不同。因此,使用比特模式作为分隔符来标记一个帧的结束和下一个帧的开始。但是,如果消息中出现该模式,则需要加入机制以避免这种情况。

两种常见方法是 -

  • 字节 - 填充 - 在消息中填充一个字节以区别于分隔符。这也称为面向字符的帧。

  • 位 - 填充 - 在消息中填充任意长度的位模式以区别于分隔符。这也称为面向位的帧。

面向字符的帧中的帧

在面向字符的协议中,消息被编码为 8 位字符,使用类似 ASCII 代码的代码。

帧具有以下部分 -

  • 帧头 - 它包含帧的源地址和目标地址。

  • 有效载荷字段 - 它包含要传递的消息。

  • 尾部 - 它包含错误检测和错误校正位。

  • 标志 - 帧开头和结尾的 1 字节(8 位)标志。它是一个依赖于协议的特殊字符,用于表示帧的开始和结束。

Oriented Framing

字节填充机制

如果标志字节的模式存在于消息字节中,则应该有一个策略,以便接收方不会将该模式视为帧的结束。在面向字符的协议中,采用的机制是字节填充。

在字节填充中,在消息中的每个字节之前填充一个称为转义字符 (ESC) 的特殊字节,其模式与标志字节相同。如果在消息字节中找到 ESC 序列,则在其前面填充另一个 ESC 字节。

字节填充机制