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