计算机网络——数据链路层-差错检测(奇偶校验、循环冗余校验CRC)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 计算机网络——数据链路层-差错检测(奇偶校验、循环冗余校验CRC)

我们知道,

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

如下图所示:

比特流在传输过程中由于受到各种干扰就可能会出现比特差错,或称为误码。


  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
  • 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。

例如以太网版本2的MAC帧格式和点对点协议PPP的帧格式,他们帧尾中都包含了帧检验序列FCS字段,其作用就是让接收方的数据链路层检查帧在传输过程中是否产生了误码。

奇偶校验

接下来我们介绍基偶校验这种比较简单的检测方法。

在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。

举例说明:

  • 采用奇偶校验,如果有奇数个位发生误码,则奇偶性会发生变化,也就是奇变偶或者是偶变奇,这样就可以检查出误码
  • 而如果有偶数个位发生误码,则奇偶性不会发生变化,不能检查出误码(漏检)

这是因为:每个误码对奇偶性的影响相互抵消了,这样就无法检查出误码,也称为漏检。


由于奇偶校验的漏检率比较高,因此计算机网络的数据链路层一般不会采用这种检测方法。


循环冗余校验CRC

CRC(Cyclic Redundancy Check)


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

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

发送方操作

使用除法(模二除法)来计算冗余码,

  • 待发送的数据作为被除数的一部分,后面添加生成多项式最高次数个0以构成被除数
  • 生成多项式各项系数构成的比特串作为除数
  • 进行模二除法得到商和余数
  • 余数就是所计算出的冗余码,将其添加到待发送数据的后面一起发送 。

需要注意的是,冗余码的长度与生成多项式最高次数相同,而商仅作为标记防止计算过程中对错位

接收方操作

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

生成多项式

下面我们对生成多项式举例说明,这是一个生成多项式:

这是该生成多项式的完整形式:

生成多项式各项系数构成的比特串就是我们做除法时所用到的除数

这是常用的生成多项式:

使用这些生成多项式进行CRC校验可以达到较好的检测效果,也就是漏检率比较低。

需要注意的是,CRC算法要求生成多项式必须包含最低次项

举例-1

待发送的信息为101001,生成多项式为 ,计算余数。

该题给定了待发送的信息和一个生成多项式,要求计算余数:

第一步构造被除数。在待发送信息后面添加生成多项式最高次数个0,就可以构造出被除数。

这是待发送信息:

这是添加生成多项式最高次数个0:

第二步构造除数。生成多项式各项系数构成的比特串就是除数:

第三步做模二除法,得到余数为1:

第四步检查余数。余数的位数应与生成多项式最高次数相同,如果位数不够,则在余数前补0来凑足位数,将余数添加到待发送信息的后面就可以发送了 :

 

举例-2

再来做一个练习

接收到的信息为101101001,生成多项式为 ,判断传输是否误码?

该题给定了接收方收到的信息和一个生成多项式,要求判断传输过程是否产生了误码:


需要说明的是,

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



END



目录
相关文章
|
12月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
2013 0
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
本研究基于MATLAB 2022a,使用GRU网络对QAM调制信号进行检测。QAM是一种高效调制技术,广泛应用于现代通信系统。传统方法在复杂环境下性能下降,而GRU通过门控机制有效提取时间序列特征,实现16QAM、32QAM、64QAM、128QAM的准确检测。仿真结果显示,GRU在低SNR下表现优异,且训练速度快,参数少。核心程序包括模型预测、误检率和漏检率计算,并绘制准确率图。
436 65
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
|
监控 算法 安全
基于 C# 基数树算法的网络屏幕监控敏感词检测技术研究
随着数字化办公和网络交互迅猛发展,网络屏幕监控成为信息安全的关键。基数树(Trie Tree)凭借高效的字符串处理能力,在敏感词检测中表现出色。结合C#语言,可构建高时效、高准确率的敏感词识别模块,提升网络安全防护能力。
301 2
|
SQL 数据采集 人工智能
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
536 12
|
机器学习/深度学习 人工智能 运维
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
573 8
|
机器学习/深度学习 算法 5G
基于DNN深度神经网络的OFDM+QPSK信号检测与误码率matlab仿真
本内容展示了基于深度神经网络(DNN)的OFDM-QPSK信号检测算法在Matlab2022a中的仿真效果。通过构建包含多层全连接层和ReLU激活函数的DNN模型,结合信号预处理与特征提取,实现了复杂通信环境下的高效信号检测。仿真结果对比了传统LS、MMSE方法与DNN方法在不同信噪比(SNR)条件下的误码率(BER)和符号错误率(SER),验证了DNN方法的优越性能。核心程序涵盖了QPSK调制、导频插入、OFDM发射、信道传输及DNN预测等关键步骤,为现代通信系统提供了可靠的技术支持。
236 0
|
机器学习/深度学习 存储 算法
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。
|
机器学习/深度学习 数据采集 算法
基于yolov2和googlenet网络的疲劳驾驶检测算法matlab仿真
本内容展示了基于深度学习的疲劳驾驶检测算法,包括算法运行效果预览(无水印)、Matlab 2022a 软件版本说明、部分核心程序(完整版含中文注释与操作视频)。理论部分详细阐述了疲劳检测原理,通过对比疲劳与正常状态下的特征差异,结合深度学习模型提取驾驶员面部特征变化。具体流程包括数据收集、预处理、模型训练与评估,使用数学公式描述损失函数和推理过程。课题基于 YOLOv2 和 GoogleNet,先用 YOLOv2 定位驾驶员面部区域,再由 GoogleNet 分析特征判断疲劳状态,提供高准确率与鲁棒性的检测方法。
|
运维 监控 安全
公司监控软件:SAS 数据分析引擎驱动网络异常精准检测
在数字化商业环境中,企业网络系统面临复杂威胁。SAS 数据分析引擎凭借高效处理能力,成为网络异常检测的关键技术。通过统计分析、时间序列分析等方法,SAS 帮助企业及时发现并处理异常流量,确保网络安全和业务连续性。
320 11
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
1048 5

热门文章

最新文章