从 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 封装成帧
      • 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-3 差错检测

    # 330.3-3 差错检测

    我们知道‍‍实际的通信链路都不是理想的,比特在传输过程中可能会产生差错,1 可能变成 0,‍‍而 0 也可能变成 1,这称为比特差错。

    如图所示,比特流在传输过程中,‍‍由于受到各种干扰,就可能会出现比特差错或称为误码。‍‍在一段时间内‍‍传输错误的比特占所传输比特总数的比率成为误码率 BER。大家可以通过动画演示,‍‍清楚的看到比特在传输过程中出现了错误,但是接收方的数据链路层‍‍又是通过怎样的方法才能知道?

    ​​

    使用差错检测码‍‍来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一

    例如。‍这是以太网版本 2 的 MAC 帧格式,其帧尾中包含了一个长度为 4 字节的帧检验序列 FCS 字段,‍‍其作用就是让接收方的数据链路层检查帧在传输过程中是否产生了误码,‍‍这是点对点协议 PPP 的帧格式,其帧尾中也包含了一个长度为两字节的帧检验序列,‍‍FCS 字段,其作用也是让接收方的数据链路层检查正在传输过程中是否产生了误码。

    ​​ ‍

    # 奇偶校验

    接下来‍‍我们介绍奇偶校验这种比较简单的检测方法,在待发送的数据后面添加一位奇偶校验位,‍‍使整个数据包括所添加的校验位在内中的 1 的个数为基数这称为基教验,或为偶数这称为偶校验。‍‍

    我们来举例说明,这是待发送的数据,假设收发双方约定采用基校验,‍‍那么在数据后面添加的校验位应该为比特 1,使得比特一的总数为基数,‍‍假设传输过程中产生了一位误码,我们用红色表示,接收方对收到的比特流进行基校验,‍‍发现比特 1 的总数为偶数而不是基数,就知道传输过程中发生了误码。‍‍

    ​​ ‍

    • 换句话说,‍‍采用基校验,若比特 1 的数量的基性改变,可以检查出错误,但是‍‍如果传输过程中产生了两位误码,接收方对收到的比特流进行机校验,‍‍发现比特 1 的总数为基数,就误认为传输过程中没有发生误码。换句话说,采用基校验,‍‍若比特 1 的数量的奇性不改变,是无法检查出错误的。‍‍
    • 假设收发双方约定采用偶校验,‍‍那么在数据后面添加的校验位应该为比特 0,使得比特 1 的总数为偶数,‍‍假设传输过程中产生了 1 位误码,接收方对收到的比特流进行偶校验,‍‍发现比特 1 的总数为基数而不是偶数,就知道传输过程中发生了误码。换句话说,采用偶校验‍‍若比特 1 的数量的偶性改变,可以检查出错误,但是如果传输过程中产生了两位误码,接收方对收到的比特流进行偶校验,发现比特 1 的总数为偶数,‍‍就误认为传输过程中没有发生误码。换句话说,采用偶校验,若比特 1 的数量的偶性不改变,‍‍是无法检查出错误的。‍‍

    通过本例可以看出采用奇偶校验,如果有奇数个位发生误码,则奇偶性会发生变化,也就是奇变偶者是偶变奇,这样就可以检查出误码。而如果有偶数各位发生误码,则奇偶性不会发生变化,‍‍这是因为每个误码对奇偶性的影响相互抵消了,这样就要无法检查出误码,也称为漏检。‍‍由于奇偶校验的漏检率比较高,因此计算机网络的数据链路层一般不会采用这种检测方法。‍‍ ‍

    # 循环冗余校验 CRC

    接下来我们介绍循环冗余校验 CRC,这是一种具有很强检测能力的检测方法,漏检率极低:

    • 收发双方约定好一个生成多项式
    • 发送方基于代发送的数据和生成多项式计算出差错检测码,称为冗余码,‍‍并将其添加到带传输数据的后面一起传输
    • 接收方通过生成多项式来计算‍‍收到的数据是否产生了误码 ‍ 我们来看发送方的操作,是用除法来计算冗余吗,待发送的数据作为被除数的一部分,后面添加生成多项式最高次数个 0,已构成被除数,‍‍生成多项式各项系数构成的比特串作为除数进行除法,得到商‍‍和余数,余数就是所计算出的冗余码,将其添加到待发送数据的后面一起发送。‍‍需要注意的是‍‍冗余码的长度与生成多项式最高次数相同,而商仅作为标记,防止计算过程中对错位。‍‍

    再来看接收方的处理,也是做除法,被除数就是接收到的数据,‍‍除数仍是生成多项式各项系数构成的比特串,进行除法,得到商和余数。‍‍如果余数为 0,‍‍可判定传输过程没有产生误码,否则可判定传输过程产生了误码。‍‍

    ​​ ‍

    下面‍‍我们对生成多项式举例说明,这是一个生成多项式,这是该生成多项式的完整形式,‍‍生成多项式各项系数构成的比特串,就是我们做除法时所用到的除数,‍‍这是常用的生成多项式,使用这些生成多项式进行 CRC 校验,可以达到较好的检测效果,‍‍也就是漏检率比较低。需要注意的是 CRC,算法要求生成多项式,必须包含最低次项。‍‍

    ​​ ‍

    接下来‍‍我们来做一个练习,该题给定了待发送的信息和一个生成多项式,要求计算余数。‍‍我们使用之前介绍的除法来计算。

    • 第一步,构造被除数。‍‍在待发送信息后面添加生成多项式最高次数个 0,就可以构造出被除数。这是待发送信息,‍‍这是添加生成多项式最高次数个 0。
    • 第二步,构造除数,‍‍生成多项式各项系数构成的比特串就是除数。
    • 第三步做除法,‍‍在该位做标记,将除数移过来,然后进行异或运算,将该位落下来,‍‍在该位做标记,一表示够除,将除数移过来,然后进行异或运算,‍‍将单位落下来,在单位做标记,零表示不够除,再将单位落下来,在单位做标记,‍‍一表示够除,将除数移过来,然后进行一会运算,‍‍将单位落下来,在该位做标记,零表示不够除,再将单位落下来在单位做标记,‍‍一表示够除,将除数移过来,然后进行异或运算,得到余数为一。‍‍
    • 第四步,‍‍检查余数余数的位数应与生成多项式最高次数相同,如果位数不够,‍‍则在余数前补零来凑足位数,将余数添加到待发送信息的后面

    ​​

    就可以发送了。‍‍我们再来做一个练习。该题给定了接收方收到的信息和一个生成多项式,‍‍要求判断传输过程是否产生了误码。我们给出以下步骤,‍‍请同学们参照之前的除法过程计算余数,然后根据余数是否为 0,‍‍来判断传输过程是否产生了误码

    ​​

    • 检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。‍‍
    • 要想纠正传输中的差错,可以使用冗余信息更多的纠错吗?‍‍进行前向纠错,但纠错码的开销比较大,在计算机网络中较少使用。
    • 循环冗余校验 CRC 有很好的检错能力,漏检率非常低,虽然计算比较复杂,但非常易于用硬件来实现,‍‍因此被广泛应用于计算机网络的数据链路层。
    • 在计算机网络中通常采用我们后续课程中‍‍将要讨论的检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,‍‍这取决于数据链路层向其上层‍‍提供的是可靠传输服务,还是不可靠传输服务。
    上次更新: 2025/6/3 09:31:54
    3-2 封装成帧
    3-4 可靠传输

    ← 3-2 封装成帧 3-4 可靠传输→

    最近更新
    01
    语雀文档一键下载至本地教程
    07-04
    02
    要成功,就不要低估环境对你的影响
    07-03
    03
    血泪教训:电子设备要定期开机
    07-02
    更多文章>
    Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式