字节填充和位填充之间的区别

Difference between Byte stuffing and Bit stuffing

字节填充和位填充之间的区别可以在以下标题下完成:

什么是字节填充和位填充?

字节填充是一种将由可能包含保留值(例如帧定界符)的字节序列组成的消息转换为不包含保留值的另一个字节序列的机制。

位填充是一种将一个或多个非信息位插入要发送的消息中,以破坏消息序列以达到同步目的的机制。

字节填充和位填充的目的

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

两种常见方法是-

  • 字节填充?在消息中填充一个字节以区别定界符。这也称为面向字符的框架。
  • 位填充?消息中填充了任意长度的位模式,以与定界符区分开。这也称为面向比特的帧。

字节填充和位填充中的数据链路层帧

数据链接帧包括以下部分:

  • 框架标题?它包含帧的源地址和目标地址。
  • 有效负载字段?它包含要传递的消息。在位填充中,它是位的可变序列,而在字节填充中,它是数据字节的可变序列。
  • 预告片 ?它包含错误检测和错误纠正位。
  • 标志?标志是帧定界符,指示帧的开始和结束。在位填充中,标志包括定义开始和结束位的位模式。它通常为8位,包含六个或更多连续的1。在字节填充中,标志为1字节,表示协议相关的特殊字符。

字节填充与位填充的机制

字节填充机制

如果标志字节的模式出现在消息字节序列中,则应采取一种策略,使接收方不将模式视为帧的结尾。在此,在消息中的每个字节之前都填充了一个称为转义字符(ESC)的特殊字节,其样式与标志字节相同。如果在消息字节中找到ESC序列,则在其之前填充另一个ESC字节。

钻头填充机制

此处,定界标志序列通常包含六个或更多连续的1。大多数协议使用8位模式01111110作为标志。为了在相同序列的情况下将消息与标志区分开,在消息中填充了一位。每当消息中的0位后跟五个连续的1位时,在五个1的末尾填充一个额外的0位。当接收方收到消息时,它将在每个五个1的序列之后删除填充的0。然后将未填充的消息发送到上层。