从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂

      • 课程概述
      • 1-1 计算机网络在信息时代的作用
      • 1-2 因特网概述
      • 1-3 三种交换方式
      • 1-4 计算机网络的定义和分类
      • 1-5 计算机网络的性能指标
      • 1-6 计算机体系结构
      • 2-1 物理层的基本概念
      • 2-2 物理层下面的传输媒体
      • 2-3 传输方式
      • 2-4 编码与调制
      • 2-5 信道的极限容量
      • 3-1 概述
      • 3-2 封装成帧
        • 另外以太网还规定了帧间间隔时间为‍‍96 比特的发送时间,因此 MAC 帧并不需要帧结束定界符,需要说明的是‍‍帧间间隔还有其他作用。‍‍我们在后续课程中再进行介绍。 ‍
      • 3-3 差错检测
      • 3-4 可靠传输
      • 3-5 点对点协议 PPP
      • 3-6 媒体接入控制的基本概念
      • 3-7 MAC 地址
      • 3-7 IP 地址
      • 3-7 ARP 协议
      • 3-8 集线器与交换机的区别
      • 3-9 以太网交换机自学习和转发帧的流程
      • 3-10 以太网交换机的生成树协议 STP
      • 3-11 虚拟局域网 VLAN
      • 4-1 网络层概述
      • 4-2 网络层提供的两种服务
      • 4-3 IPv4 地址
      • 4-4 IP 数据报的发送和转发过程
      • 4-5 静态路由配置及其可能产生的路由环路问题
      • 4-6 路由选择
      • 4-7 IPv4 数据报的首部格式
      • 4-8 网际控制报文协议 ICMP
      • 4-9 虚拟专用网 VPN 与网络地址转换 NAT
      • 5-1 运输层概述
      • 5-2 运输层端口号、复用与分用的概念
      • 5-3 UDP 和 TCP 的对比
      • 5-4 TCP 的流量控制
      • 5-5 TCP 的拥塞控制
      • 5.6 TCP 超时重传时间的选择
      • 5-7 TCP 可靠传输的实现
      • 5-8 TCP 的运输连接管理
      • 5-9 TCP 报文段的首部格式
      • 6-1 应用层概述
      • 6-2 客户—服务器方式和对等方式
      • 6-3 动态主机配置协议 DHCP
      • 6-4 域名系统 DNS
      • 6-5 文件传送协议 FTP
      • 6-6 电子邮件
      • 6-7 万维网 WWW
    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机网络
  • 计算机网络微课堂
2023-11-16
目录

3-2 封装成帧

# 320.3-2 封装成帧

‍‍所谓封装成帧就是指数据链路层给上层交付下来的协议数据单元,添加帧头和帧尾,‍‍使之成为帧。

例如下图所示在帧头和帧尾中包含有重要的控制信息,例如‍‍这是以太网版本 2 的 MAC 帧格式,这是上层交付下来的协议数据单元,这是帧头,‍‍这是帧尾,这是点对点协议 PPP 的帧格式,这是上层交付下来的协议数据单元,这是帧头,‍‍这是帧尾。

​​ ‍

发送方的数据链入层将上层交付下来的协议数据单元封装成帧后,还要通过物理层‍‍将构成帧的个比特转换成电信号,发送到传输媒体。‍‍那么接收方的数据链路层‍‍如何从物理层交付的比特流中提取出一个个的帧呢?例如‍‍这一串比特流是一个帧吗?这一串比特流是一个帧吗?实际上‍‍帧头和帧尾的作用之一就是帧定界。

​​ ‍

例如这是 PPP 帧的格式,在其帧头和帧尾中‍‍各包含有一个长度为 1 字节的标志字段,其作用就是帧定界。假设发送方发送的是 PPP 帧,‍‍比特流中红色部分是帧定界标志,那么接收方的数据链路层就可以依据帧定界标志,‍‍从物理层交付的比特流中提取出一个个的帧

​​

需要说明的是‍‍,并不是每一种数据链路层协议的帧都包含有帧定界标志。‍‍

例如这是以太网版本 2 的 MAC 帧格式,‍‍在其帧头和帧尾中并没有包含帧定界标志。那么接收方又是如何从物理层交付的比特流中‍‍提取出一个个的以太网帧?实际上以太网的数据链路层封装好 MAC 帧后将其交付给物理层,‍‍物理层会在 MAC 帧前面添加八字节的前导码,然后再将比特流转换成电信号发送‍‍。前导码中的前 7 个字节为‍‍前同步码,作用是使接收方的时钟同步,之后的 1 字节为帧开始定界符,‍‍表明其后面紧跟着的就是 MAC 帧。‍‍

​​ ‍

# 另外以太网还规定了帧间间隔时间为‍‍96 比特的发送时间,因此 MAC 帧并不需要帧结束定界符,需要说明的是‍‍帧间间隔还有其他作用。‍‍我们在后续课程中再进行介绍。 ‍

接下来我们介绍透明传输的问题,‍‍透明传输是指数据链路层对上层交付的传输数据并没有任何限制,就好像数据链路层不存在一样。‍‍我们来举例说明,这是发送方数据链路层收到其上层交付的协议数据单元,给其添加帧头‍‍和帧尾,使其成为帧。‍‍为了简单起见,我们只画出了帧头和帧尾中的帧定界标志,‍‍帧定界标志也就是一个特定数值。

请大家思考一下,如果在上层交付的协议数据单元中,‍‍恰好也包含了这个特定数值,接收方还能正确接收该帧吗?‍‍回答是否定的。如图所示,接收方在收到第一个帧定界标志时,认为这是帧的开始,‍‍这并没有错误。‍‍当接收方再次接收到帧定界标志时,会误认为帧结束了

​​ ‍

如果数据链路层不采取其他措施,来避免接收方对帧是否结束的误判,就不能称为透明传输。‍‍也就是说数据链入层对上层交付的协议数据单元有限制,其内容不能包含帧定界符,‍‍很显然这样的数据链路层没有什么使用价值。

实际上各种数据链路层协议一定会想办法来解决这个问题。‍‍例如在发送帧之前,‍‍对帧的数据部分进行扫描,每出现一个帧定界符,就在其前面插入一个转义字符,‍‍接收方数据链路层在物理层交付的比特流装提取帧,遇到第一个帧定界符时,认为这是帧的开始。‍‍当遇到转义字符时就知道其后面的一字节内容虽然与帧定界符相同,但它是数据,‍‍而不是帧定界符。

剔除转义字符后,将其后面的内容作为数据继续提取,‍‍对于这个转义字符也是相同的处理。‍‍当再次提取到帧定界符时,表明这是帧的结束。‍‍

请大家再来思考一下这种情况。在上层交付给数据链路层的协议数据单元中,既包含了帧定界符,‍‍又包含了转义字符,应该怎么处理?

方法仍然是在发送帧之前对帧的数据部分进行扫描,‍‍每出现一个帧定界符或转义字符,‍‍就在其前面插入一个转义字符,需要说明的是转义字符是一种特殊的控制字符,‍‍其长度为一个字节,10 进制值为 27,而并不是 E、S 以及 C 这三个字符。‍‍我们刚刚介绍的是面向字节的物理链路,是用字节填充或称字符填充的方法‍‍来实现透明传输。‍‍

对于面向比特的电路,应该使用比特填充的方法来实现透明传输。例如‍‍这是某个点对点协议的帧,‍‍这是帧的数据部分,这是帧的尾部。

为了简单起见,在帧手部和尾部中‍‍仅给出了帧定界标志,而未给出其他控制字段,而帧的数据部分出现了两个帧定界标志,‍‍但它们实际上是数据,而不是帧定界。‍‍在发送前可以采用 0 比特填充法,‍‍对数据部分进行扫描,每 5 个连续的比特 1 后面就插入 1 个比特 0,‍‍这样就确保了帧定界在整个帧中的唯一性,也就可以实现透明传输。接收方的数据链路层,‍‍从物理层交付的比特流中提取帧时,将帧的数据部分中的每 5 个连续的比特 1 后面的比特 0 剔除即可。‍‍

​​

接下来我们来做一个有关 0 比特填充的练习题,这是计算机专业考研全国统考‍‍计算机网络部分,2013 年的题 37。

题目中所给的高级数据链路控制协议 HDLC‍‍采用帧头和帧尾中的标志字段作为帧定界,旗帜为 01111110。‍‍Hdlc 为了实现透明传输,采用 0 比特填充法,也就是每 5 个连续 1 后面插入 1 个比特 0‍‍ 如下所示。因此选项 A 正确

​​ ‍

最后还要提醒大家,为了提高帧的传输效率,‍‍应当使帧的数据部分的长度尽可能大一些。‍‍如图所示帧的数据部分的长度‍‍应远大于帧头和帧尾的程度,这样才能提高帧的传输效率。因为仅层数据链路层来看,‍‍帧的数据部分才是帧正要传输的数据,帧头和帧尾是为了实现数据链路层功能而额外添加的。‍‍当然了,考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,‍‍称为最大传送单元 MTU:

​​ ‍

小结:

​​

上次更新: 2025/6/3 09:31:54
3-1 概述
3-3 差错检测

← 3-1 概述 3-3 差错检测→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式