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

article/2025/8/26 23:05:59

文章目录

  • 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.hkcw.cn/article/XjPiAaGryI.shtml

相关文章

VLC-QT 网页播放RTSP

先看效果图,代码在文章末尾,包含源码,vlc-qt完整的库 环境说明:VS 2017 QTQt5.13.0 MSVC2017 32位 将vlc_install 目录下的bin,include,lib里所有的东西分别放在qt目录下 bin -> C:\Qt\Qt5.13.0\5.13.0\msvc2017\bin include->C:\Qt\Qt5.13.0\5.13.0\msvc201…

塔能科技:为多行业工厂量身定制精准节能方案

在当今追求可持续发展的时代,工厂能耗精准节能成为众多企业关注的焦点。塔能科技凭借先进的技术和丰富的经验,服务于广泛的行业客户,其中55.5%来自世界500强和上市公司。针对不同行业工厂的特点和需求,塔能提供了一系列行之有效的…

Qt font + ToolTip + focusPolicy + styleSheet属性(5)

文章目录 font属性API接口直接在Qt Designer编辑图形化界面通过纯代码的方式修改文字属性 ToolTip属性API接口代码演示 focusPolicy属性概念理解API接口通过编辑图形化界面演示 styleSheet属性概念理解通过编辑图形化界面展示代码 图形化界面的方式展示(夜间/日间模…

lwip_setsockopt设置地址复用出错(lwip默认不打开,lwip_bindu也会提示端口被占用)

/* 3. 设置地址复用 */ flags lwip_setsockopt(new_sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); if (flags < 0) {NET_DEBUG_PRINT("[NET] SO_REUSEADDR failed: %s\n", strerror(errno));int opt_err errno;// 详细错误分析switch(opt_err) {c…

力扣面试150题--二叉树的右视图

Day 53 题目描述 思路 采取层序遍历&#xff0c;利用一个high的队列来保存每个节点的高度&#xff0c;highb和y记录上一个节点的高度和节点&#xff0c;在队列中&#xff0c;如果队列中顶部元素的高度大于上一个节点的高度&#xff0c;说明上一个节点就是上一层中最右边的元素…

Powerbuilder 连接达梦数据库(ODBC 和 JDBC)

一、ODBC PB只支持32位驱动&#xff0c;可以同时安装64和32位驱动&#xff0c;分别下载64和32位安装包安装 1、选择DMB ODBC DRIVER驱动 2、不描述&#xff0c;看图输信息即可 3、连接代码 SQLCA.DBMS "ODBC" SQLCA.AutoCommit False SQLCA.DBParm "Conne…

美化显示GDB调试的数据结构

笔者在前面的博文记一次pdf转Word的技术经历中有使用到mupdf库&#xff0c;该库是使用C语言写的一个操作PDF文件的库&#xff0c;同时提供了Python接口&#xff0c;Java接口和JavaScript接口。 在使用该库时&#xff0c;如果想要更高的性能&#xff0c;使用C语言接口是不二的选…

从融智学视角对决策态度进行定理级提炼,结合三标准数学建模

摘要&#xff1a;本文从融智学视角提出"决策态度定理"&#xff0c;构建了态度三要素&#xff08;化繁为简、迎难而上、乐在其中&#xff09;的数学模型。定理将人生轨迹表述为复平面路径积分&#xff1a;命运∫[态度⊗选择]dt&#xff0c;证明三要素协同作用可使决策…

秋招Day11 - JVM - 类加载机制

了解类的加载机制吗&#xff1f; JVM是运行Java字节码&#xff0c;也就是运行.class文件的虚拟机&#xff0c;JVM把.class文件中描述类的数据结构加载到内存中&#xff0c;并对数据进行校验&#xff0c;解析和初始化&#xff0c;最终转化为JVM可以使用的类型&#xff08;Klass…

纵览网丨病毒学领域的 AI 变局:机遇、隐忧与监管之路

纵览网&#xff08;www.zonglan.com&#xff09;人工智能AI正在各个领域高歌猛进&#xff0c;特别是在病毒学领域。最近在一项病毒学诊断的研究测试中&#xff0c;有着天才水平称号的OpenAI的o3模型&#xff0c;平均得分已经能够达到43.8%&#xff0c;而拥有学位的人类病毒博士…

从实验室到商用!铁电液晶如何改写显示技术格局?

一、显示技术瓶颈&#xff1a;传统液晶的「成长烦恼」 在 VR 游戏中&#xff0c;快速转动头部时画面拖影让人眩晕&#xff1b;高端投影在强光下画质模糊&#xff1b;医用显示器难以呈现 CT 影像的细微层次…… 这些困扰背后&#xff0c;是传统液晶技术在刷新率、分辨率和环境适…

电网中三相不平衡治理的全面解析

在现代电力系统中&#xff0c;三相平衡是保障电网高效、稳定运行的关键要素。然而&#xff0c;三相不平衡现象却时有发生&#xff0c;给电网的可靠供电和用电设备的安全运行带来诸多挑战。深入了解三相不平衡治理的相关知识&#xff0c;对于提升电网运行水平、保障电力供应质量…

2023年6级第一套长篇阅读

画名词概念&#xff0c;动词概念 多处定位原词加同义改写 画关键词&#xff0c;多处定位直接就可以选A了 没有定位的句子先比没匹配到的段落&#xff0c;再匹配长的段落先易后难

Opencv实用操作5 图像腐蚀膨胀

相关函数 腐蚀函数 img1_erosion cv2.erode(img1,kernel,iterations1) &#xff08;图片&#xff0c;卷积核&#xff0c;次数&#xff09; 膨胀函数 img_dilate cv2.dilate(img2,kernel1,iterations1) &#xff08;图片&#xff0c;卷积核&#xff0c;次数&#xff09;…

lua的注意事项2

总之&#xff0c;下面的返回值不是10&#xff0c;a&#xff0c;b 而且

vr中风--数据处理模型搭建与训练

# -*- coding: utf-8 -*- """ MUSED-I康复评估系统&#xff08;增强版&#xff09; 包含&#xff1a;多通道sEMG数据增强、混合模型架构、标准化处理 """ import numpy as np import pandas as pd from sklearn.model_selection import train_te…

【Oracle】DCL语言

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. DCL概述1.1 什么是DCL&#xff1f;1.2 DCL的核心功能 2. 用户管理2.1 创建用户2.2 修改用户2.3 删除用户2.4 用户信息查询 3. 权限管理3.1 系统权限3.1.1 授予系统权限3.1.2 撤销系统权限 3.2 对象权限3.2.1…

使用Redisson实现分布式锁发现的【订阅超时】Subscribe timeout: (7500ms)

背景 使用 redisson 实现分布式锁&#xff0c;出现的异常&#xff1a; org.redisson.client.RedisTimeoutException: Subscribe timeout: (7500ms). Increase ‘subscriptionsPerConnection’ and/or ‘subscriptionConnectionPoolSize’ parameters 从异常信息读的出来一些东…

异步上传石墨文件进度条前端展示记录(采用Redis中String数据结构实现-苏东坡版本)

昔者&#xff0c;有客临门&#xff0c;亟需自石墨文库中撷取卷帙若干。此等文册&#xff0c;非止一卷&#xff0c;乃累牍连篇&#xff0c;亟需批量转置。然吾辈虑及用户体验&#xff0c;当效东坡"腹有诗书气自华"之雅意&#xff0c;使操作如行云流水&#xff0c;遂定…

数据可视化--使用matplotlib绘制高级图表

目录 一、绘制等高线图 contour() 二、绘制矢量场流线图 streamplot() 三、绘制棉棒图 stem() 四、绘制哑铃图 五、绘制甘特图 六、绘制人口金字塔图 barh() 七、绘制漏斗图 简易版漏斗图 八、绘制桑基图 Sankey()---创建桑基图 add()---添加桑基图的选项 finish()…