当前位置: 首页 > news >正文

计算机网络之差错控制中的 CRC(循环冗余校验码)

文章目录

  • 1 概述
    • 1.1 简介
    • 1.2 特点
    • 1.3 基本原则
  • 2 实现步骤
  • 3 例题

1 概述

修改中,请稍等。。。

1.1 简介

  • CRC:Cyclic Redundancy Check(循环冗余校验)是计算机网络中常用的一种差错控制编码方法,用于检测数据传输或存储过程中可能出现的错误。

1.2 特点

特点描述
检错能力强检错,但不能 纠错
计算效率高可用硬件快速实现
广泛应用以太网(CRC-32)、磁盘存储、无线通信等

1.3 基本原则

CRC 基于 多项式除法原理

  1. 发送方和接收方预先商定一个生成多项式 G(x)
  2. 发送方在 原始数据后 附加CRC校验码,使整个数据能被 G(x) 整除
  3. 接收方用同样的 G(x) 去除接收到的数据,若 余数为 0 则认为数据正确

2 实现步骤

假设数据信息为 1100,生成多项式为 G(x) = X3 + X + 1,问:CRC校验码 和 CRC编码 分别是多少?

CRC 编码 = CRC 校验位 + CRC 数据位

序号步骤描述
1获取【校验位】位数 M对应生成多项式的 最高次方 的数值,即:示例中的 M = 3
2【数据位】后补 M 个 0数据位 后补充 校验位 M 个 0。即示例中的:1100 000
3提取生成多项式的系数 G ( x ) = X 3 + X + 1 G(x) = X^3 + X + 1 G(x)=X3+X+1
= 1 ∗ X 3 + 0 ∗ X 2 + 1 ∗ X 1 + 1 ∗ X 0 = 1*X^3 + 0*X^2 + 1*X^1 + 1*X^0 =1X3+0X2+1X1+1X0
= 1 0 1 1
4模 2 除法,取余数,得校验码步骤 2 的结果 除以 步骤 3 的结果,进行 异或运算(相同为 0,不同为 1),取余数。
余数 就是 CRC 校验码,余数的位数 = 校验位位数,若余数位不够校验位数,前面补 0

3 例题

【例题1】 在采用CRC校验时,若生成多项式为 G ( X ) = X 5 + X 2 + X + 1 G(X)=X^5+X^2+X+1 GX=X5+X2+X+1,传输数据为1011110010101时,生成的帧检验序列为() 。
A.10101
B.01101
C.00000
D.11100

参考答案:C
① 判断校验位数。G(X) 的最高次方为 5,则校验位为 5 位,都满足题意
② 补齐数据位后的 0。1011110010101 00000
③ 提取生成多项式的系数。100111
④ 步骤 ② 的结果 除以 步骤③ 的结果,取余数。101111 001010 100000 / 101111,余数位
在这里插入图片描述

【例题2】以下关于采用一位奇校验方法的叙述中,正确的是( )。
A.若所有奇数位出错,则可以检测出该错误但无法纠正错误
B.若所有偶数位出错,则可以检测出该错误并加以纠正
C.若有奇数个数据位出错,则可以检测出该错误但无法纠正错误
D.若有偶数个数据位出错,则可以检测出该错误并加以纠正

参考答案:C

【例题3】CRC是链路层常用的检错码,若生成多项式为 X 5 + X 3 + 1 X^5+X^3+1 X5+X3+1,传输数据10101110,得到的CRC校验码是( )。
A.01000
B.01001
C.1001
D.1000

参考答案:A
① 判断校验位位数。 X 5 + X 3 + 1 X^5+X^3+1 X5+X3+1,最高项是几,校验位位数就是几。推出 5,排除 C,D
② 补齐数据位(传输数据 + 校验位:补 0)。1010111000000
③ 提取生成多项式的系数。101001
④ 步骤 ② 除以 步骤 ③(异或运算,余数位不够,前面补 0)。得到 A

http://www.xdnf.cn/news/704071.html

相关文章:

  • 软件工程 3.0:智能驱动的软件新时代
  • LVS+Keepalived高可用集群
  • Nat Commun项目文章 ▏小麦CUTTag助力解析转录因子TaTCP6调控小麦氮磷高效利用机制
  • LVS + Keepalived 高可用群集
  • Redis Stack常见拓展
  • K6 是什么
  • ubuntu24 安装MongoDB-6.0.24 数据库操作步骤和配置参数说明
  • QuickBASIC QB64 支持 64 位系统和跨平台Linux/MAC OS
  • 使用Redisson实现分布式锁发现的【订阅超时】Subscribe timeout: (7500ms)
  • AI绘画:Stable Diffusion从入门到精通(系列教程)
  • ONLYOFFICE文档API:编辑器的品牌定制化
  • 算法训练第二天
  • 【AI智能体】Coze 插件从使用到实战详解
  • 从法律层面剖析危化品证书:两证一证背后的安全逻辑
  • Perforce P4产品简介:无限扩展+全球协作+安全管控+工具集成(附下载)
  • Android 异步编程中协程的完整实战示例
  • OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景
  • C++23 std::fstreams基础回顾
  • 【25软考网工】第九章(2)网络管理命令
  • Vue-Router 基础使用
  • 结构性设计模式之Bridge(桥接)
  • 如何处理 Python 入门难以进步的现象
  • 常见路由协议解析:从原理到应用场景
  • 深入解析 Spring @Transactional 的事务开启机制
  • 谈谈iostat
  • 企业信息化/数字化项目管理办法V3.0
  • 红棉花板材亮相德国科隆展 东方智造赋能全球家居未来
  • 二重积分 -- 立体的体积
  • C++与Java类和对象的异同
  • 依赖nacos实例动态创建线程池并监听服务上下线