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