比特填充的例子

时间:2012-10-04 08:05:28

标签: networking data-link-layer bitstuffing

我正在阅读一个读取

的例子
  

比特填充。假设数据链路层从网络层接收到以下位串:01110111101111101111110。   比特填充后得到的字符串是什么?加粗已添加的每一位。

答案:

0111011110111110011111010
               ^      ^  

这个答案是如何达成的?我的理解是位填充通过在帧的开头和结尾插入特定的位序列(称为标志值)来工作。我没有得到的是:

  1. 我们没有被告知旗帜价值!
  2. 我们没有被告知框架有多大,所以我们怎么知道把旗子放到哪里?
  3. 有条件的信息:我认为这个网络是以太网。

    有条件信息2:位标志为01111110

    老实说,我认为我理解,但答案不完整,因为他们没有将旗帜01111110添加到最后或者be?他们只是在邮件中出现这种位模式时处理。

    其他例子:here他们也这样做。

5 个答案:

答案 0 :(得分:11)

考虑:0111011110111110*0111110*10

在找到0然后连续五个1位后,它会填充0。这假定0位填充是常见的。

答案 1 :(得分:11)

对于数据链路层网络中的帧,有一些方法,面向比特是其中之一。

它应该是一种了解在接收器端的链路上传输的帧的开始和结束的方法,因此有一些像HDLC一样的帧格式。您可以看到this

在许多类型的帧格式中,有乞讨序列(显示帧的开始)和结束序列(显示帧的结束)和作为数据的帧的主体。 可能出现的问题是在正文中出现结束序列,这可能会使帧结束不正确。

为了防止出现这个问题,框架的发送者在身体上稍微有些东西用于解除结尾序列的模式,这种技术被称为 bit stuffing

看看这个例子:

位序列:110101111101011111101011111110(无位填充)

位序列:1101011111 0 01011111 0 101011111 0 110(带位填充)

在连续5个1位后,填充0位。

填充位标记为粗体。

答案 2 :(得分:1)

在问题中没有足够的信息来完全回答“任何”协议,但是以太网例如在5个连续的1比特之后用0比特的帧内容,这似乎是这里的情况

关于框架的其余问题,一个提示是查看应该从数据链路层传递到网络层的内容。它是预先加框的数据还是您正在查看的框架内容?

答案 3 :(得分:1)

比特填充:

输入流:0110111111100111110111111111100000
填充流:01101111101100111110011111011111000000
未填充的流:0110111111100111110111111111100000

答案 4 :(得分:0)

每当您必须执行位填充时,将始终为您提供起始和结束标记FLAG位值 最简单的技巧是删除标志的最后两位并记下新的位序列,每当你在数据中得到相同的序列时,你必须在那里填充一位。 例如 - 鉴于数据为011111011110 这里我的FLAG是0111110所以我的新旗帜将是01111 每当我在数据系列中得到(01111)时,我会稍微填写一下, 因此,填充后的数据将是 - 01111(0)101111(0)0 托架暗示在这里塞满。