字节填充和比特填充的区别


字节填充和比特填充的区别可以从以下几个方面进行比较:

什么是字节填充和比特填充?

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

**比特填充**是在要传输的消息中插入一个或多个非信息位的一种机制,目的是为了打破消息序列,实现同步。

字节填充和比特填充的目的

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

两种常见的方法是:

  • **字节填充** - 在消息中填充一个字节以与定界符区分开来。这也被称为面向字符的帧。

  • **比特填充** - 在消息中填充任意长度的比特模式以与定界符区分开来。这也被称为面向比特的帧。

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

数据链路帧包含以下部分:

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

  • **有效载荷字段** - 包含要传送的消息。在比特填充中,它是一个可变的比特序列,而在字节填充中,它是一个可变的数据字节序列。

  • **尾部** - 包含错误检测和纠错位。

  • **标志** - 标志是帧定界符,表示帧的开始和结束。在比特填充中,标志由定义开始位和结束位的比特模式组成。它通常为8位,包含六个或更多连续的1。在字节填充中,标志是一个字节,表示协议相关的特殊字符。

字节填充与比特填充的机制

字节填充机制

如果标志字节的模式存在于消息字节序列中,则应该有一种策略来防止接收方将该模式视为帧的结束。在这里,一个特殊的字节,称为转义字符 (ESC),会在消息中每个与标志字节模式相同的字节之前填充。如果在消息字节中找到ESC序列,则会在其之前填充另一个ESC字节。

比特填充机制

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

更新于:2020年6月27日

18K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告