📜  数据链路层中的成帧

📅  最后修改于: 2021-09-27 14:59:11             🧑  作者: Mango

帧是数字传输的单位,尤其是在计算机网络和电信中。在光能的情况下,帧类似于称为光子的能量包。帧在时分复用过程中连续使用。
成帧是两台计算机或设备之间的点对点连接,由一根电线组成,其中数据以比特流的形式传输。但是,必须将这些位组成可识别的信息块。成帧是数据链路层的一个函数。它为发送方提供了一种发送一组对接收方有意义的比特的方法。以太网、令牌环、帧中继和其他数据链路层技术都有自己的帧结构。帧的标头包含错误检查代码等信息。

1

在数据链路层,它从发送方提取消息并通过提供发送方和接收方的地址将其提供给接收方。使用帧的优点是数据被分解成可恢复的块,可以很容易地检查损坏情况。

框架问题 –

  • 检测帧的开始:当发送一个帧时,每个站都必须能够检测到它。站点通过查找标记帧开始的特殊位序列来检测帧,即 SFD(起始帧定界符)。
  • 站如何检测帧:每个站通过一个时序电路来监听SFD模式的链路。如果检测到 SFD,时序电路会向站点发出警报。 Station 检查目标地址以接受或拒绝帧。
  • 检测帧尾:何时停止读取帧。

框架类型 – 框架有两种类型:

1. 固定大小——帧是固定大小的,不需要给帧设置边界,帧本身的长度作为定界符。

  • 缺点:如果数据大小小于帧大小,它会受到内部碎片的影响
  • 解决方案:填充

2. 可变大小——这里需要定义帧结束和下一帧开始来区分。这可以通过两种方式完成:

  1. 长度字段——我们可以在帧中引入一个长度字段来指示帧的长度。用于以太网(802.3) 。这样做的问题是有时长度字段可能会损坏。
  2. 结束定界符 (ED) –我们可以引入一个 ED(模式)来指示帧的结束。用于令牌环。这样做的问题是数据中可能会出现 ED。这可以通过以下方式解决: 1.字符/字节填充:当帧由字符组成时使用。如果数据包含 ED,则将字节填充到数据中以将其与 ED 区分开来。

    Let ED = “$” –> 如果数据包含 ‘$’ 任何地方,它可以使用 ‘\O’字符转义。
    –> 如果数据包含 ‘\O$’,则使用 ‘\O\O\O$’($ 使用 \O 转义,\O 使用 \O 转义)。

    2

    缺点 –这是非常昂贵且过时的方法。

    2. 位填充:让 ED = 01111 并且如果数据 = 01111
    –>发件人有点破坏模式,即这里在数据中附加一个 0 = 0111 0 1。
    –>接收器接收帧。
    –>如果数据中包含0111 01,则接收方去除 0 并读取数据。

    3

    例子 –

    • 如果 Data –> 011100011110 和 ED –> 0111 那么,在位填充后找到数据?

      –> 0111 0 000111 0 10

    • 如果 Data –> 110001001 和 ED –> 1000 那么,在位填充后找到数据?

      –> 1100 1 0100 1 1

    • 门CS 2014
    • 门 IT 2004