计算机网络——差错检测

举报
王同学要努力 发表于 2022/09/21 14:23:16 2022/09/21
【摘要】 计算机网络——差错检测

差错检测

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

  • 在一段时间内,传输错误的比特占所传输比特总数的比特率称之为误码率(Bit Error Rate)
    image.png

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

以太网的v2的MAC帧(最大长度为1518字节)
6字节 6字节 2字节 46-1500字节 4字节
目的地址 源地址 类型 数据载荷 FCS

image.png

  • 奇偶校验
    在待发送的数据后面添加一位奇偶校验位,使整个数据(包括在添加的校验位之内)中"1"的个数为奇数(奇数验)或偶数校验
    如果有奇数个位发生误码,则奇偶性发生变化,可以检测出误码
    如果有偶数个位发生误码,则奇偶性不发生改变,不能检测出误码

    奇校验——传输过程中产生1位误码 "1"数量的奇性改变,可检出错误 奇校验
    奇校验——传输过程中产生2位误码 "1"数量的奇性不改变,无法检出错误 奇校验
    偶校验——传输过程中产生1位误码 "1"数量的偶性改变,无法检出错误 偶校验
    偶校验——传输过程中产生2位误码 "1"数量的奇性不改变,无法检出错误 偶校验

循环冗余校验CRC

  • 收到双方约定好生成一个多项式G(x)
  • 发送基于待发送的数据和生成多项式计算错检测(冗余码),将其添加待传输数据的后面一起传输;
  • 接收方通过生成多项式来计算收到的数据是否产生了误码
    生成多项式举例

G(x) = x^4+ x2 + x + 1
=1 * x^4 +0 * x^3 +1 * x^2 + 1 * x^1 + 1 * x^0

生成多项式各项系数构成的比特串为:10111

差错检测

  • 检错码 只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误

  • 要想纠正错误的差错,可以使用冗余信息更多的纠错码来前向纠错。但纠错码的开销比较大,在计算机网络中较少使用

  • 循环冗余校验CRC有很好的检错能力(漏检率非常低)虽热计算比较复杂,但非常易于用硬件实现,因此被广泛用于数据链路层

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。