• 3.2、封装成帧


    1、封装成帧

    • 数据链路层给上层交付的协议数据单元添加帧头帧尾使之成为

    在帧头和帧尾中包含有重要的控制信息

    image-20221124002950161

    数据链路层将上层交付下来的协议数据单元封装成帧后,通过物理层将构成帧的各比特转换成电信号发送到传输媒体

    那么接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?

    image-20221124003714517

    帧头和帧尾的作用之一就是 帧 定 界 \color{red}帧定界

    例如:image-20221124003916929

    • 标志段其作用就是帧定界

    假设发送方发送的是 PPP 帧,比特流中红色部分是帧定界标志。那么接收方的数据链路层就可以依据帧定界标志从物理层交付的比特流中提取出一个个的帧

    image-20221124004409070

    例如,以太网版本 2MAC 帧格式

    image-20221123233653082

    那么,接收方又是如何从物理层交付的比特流中提取出一个个的以太网帧呢?

    • 实际上,以太网的数据链路层封装好 MAC 帧后,将其交付给物理层。

    • 物理层会在 MAC 帧前面添加 8 8 8 字节的前导码,然后再将比特流转换成电信号发送

      image-20221124005039495

    • 前导码中的前 7 7 7 各字节为前同步码

      • 其作用是使接收方的时钟同步
    • 前导码之后的 1 1 1 字节为帧开始定界符

      • 表明其后面紧跟着的就是 MAC 帧。

    另外,以太网还规定了帧间间隔时间为 96 96 96 比特时间。

    • 因此,MAC 帧并不需要帧结束定界符

    image-20221124005329727

    2、透明传输

    透明传输

    • 是指 数 据 链 路 层 对 上 层 交 付 的 传 输 数 据 没 有 任 何 限 制 \color{red}数据链路层对上层交付的传输数据没有任何限制 ,就好像数据链路层不存在一样。

    例如:这是发送方数据链路层收到其上层交付的协议数据单元,给其添加帧头和帧尾使其成为帧。

    帧定界标志也就是一个特定数值

    • 若在上层交付的协议数据单元中,敲好也包含了这个特定数值,接收方还能正确接收该帧么?

      image-20221124011302999

      • 否定的
    • 接收方在收到第一个帧定界标志时,认为这是帧的开始,这并没有错误。

    • 当接收方在收到第二个帧定界标志时,会误认为帧结束了。

    若数据链路层不采取其他措施来避免接收方对帧是否结束的误判,就不能成为透明传输

    • 数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符

    很显然,这样的数据链路层没有什么使用价值。


    实际上,各种数据链路层协议,一定会想办法来解决这个何题。

    例如:

    • 在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符,就会在其前面添加一个转移字符

    image-20221124011842697

    • 接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符,认为这是帧的开始
    • 当遇到转移字符时就知道,其后面的 1 1 1字节内容虽然与帧定界符相同,但他是数据不是定界符。
    • 剔除转移字符后将其后面的内容作为数据继续提取,对于这个转义字符也是同理。
    • 当再次提取到帧定界符时,表明这是帧的结束。

    若在上层交付给数据链路层的协议数据单元中,既包含了帧定界符,又包含了转移字符,该如何处理?

    • 方法仍然是在发送帧之前对帧的数据部分进行扫描,每出现一个帧定界符或转义字符,就会在其前面添加一个转移字符

      image-20221124012400714


    刚刚说明的是面向字节的物理链路。

    面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。

    面向比特的物理链路使用比特填充的方法实现透明传输

    例如:某个点对点协议的帧。这里仅处理帧定界标志,未给出其他控制字段。而帧的数据部分,出现了两个帧定界标志,而实际上是数据。

    image-20221124013444052

    • 在发送时候,可以采用零比特填充法,每 5 5 5连续的比特 1 1 1 后面就插入 1 1 1 个比特 0 0 0。这样就确保了帧定界在整个帧中的唯一性。也就可以实现透明传输

      image-20221124013705798

    • 接收方从物理层中交付的比特流中提取帧时,将帧的数据部分中的每 5 5 5 个连续的比特后面的那个比特 0 0 0 剔除即可。

    3、真题

    image-20221124014016297

    解析:

    • 高级数据链路控制协议 HDLC 采用帧头和帧尾中的标志字段作为帧定界符,其值为 01111110 01111110 01111110;

    • HDLC 为了实现“透明传输”,采用 “零比特填充法” (每 5 5 5 个连续 1 1 1 后面插入一个比特 0 0 0 );

      image-20221124014229017

    答案 A

    4、注意

    为了提高帧的传输效率,应当使 帧 的 数 据 部 分 的 长 度 尽 可 能 大 些 \color{red}帧的数据部分的长度尽可能大些

    image-20221124014329064

    • 仅从数据链路层来看,帧的数据部分才是真正要传输的数据。

    • 帧头帧尾是为了实现数据链路层功能而额外添加的。

    考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限

    • 即最大传送单元 MTU(Maximum Transfer Unit)。

    image-20221124015112474

  • 相关阅读:
    三台centos7部署redis6.2版本集群
    Linux基本指令(中)
    Abp 项目中接入开源日志面板LogDashboard (2)
    探索无界知识:用 ChatGPT 的原理学习任何事物!
    黑马JVM总结(五)
    mongo数据同步的三种方案
    网页自动化截图接口推送到手机(截图维格表数据)
    Servlet开发步骤
    前端部分知识点总结
    Vue3响应式原理初探
  • 原文地址:https://blog.csdn.net/qq_67720621/article/details/128010562