计算机网络中的字节填充
字节填充的目的
在数据链路层中,来自物理层的比特流被分成数据帧。数据帧可以是固定长度或可变长度。在可变长度帧中,要传输的每个帧的大小可能不同。因此,使用比特模式作为分隔符来标记一个帧的结束和下一个帧的开始。但是,如果消息中出现该模式,则需要加入机制以避免这种情况。
两种常见方法是 -
字节 - 填充 - 在消息中填充一个字节以区别于分隔符。这也称为面向字符的帧。
位 - 填充 - 在消息中填充任意长度的位模式以区别于分隔符。这也称为面向位的帧。
面向字符的帧中的帧
在面向字符的协议中,消息被编码为 8 位字符,使用类似 ASCII 代码的代码。
帧具有以下部分 -
帧头 - 它包含帧的源地址和目标地址。
有效载荷字段 - 它包含要传递的消息。
尾部 - 它包含错误检测和错误校正位。
标志 - 帧开头和结尾的 1 字节(8 位)标志。它是一个依赖于协议的特殊字符,用于表示帧的开始和结束。
字节填充机制
如果标志字节的模式存在于消息字节中,则应该有一个策略,以便接收方不会将该模式视为帧的结束。在面向字符的协议中,采用的机制是字节填充。
在字节填充中,在消息中的每个字节之前填充一个称为转义字符 (ESC) 的特殊字节,其模式与标志字节相同。如果在消息字节中找到 ESC 序列,则在其前面填充另一个 ESC 字节。