【计算机网络】数据链路层学习笔记(二)差错检测和纠错及汉明码详解

简介: 本文的重点就是掌握典型的码的思想,以触类旁通。
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

参考书籍

  • 《Computer Networks (the fifth edition) 》

(注:由于我看的是英文教材,以下内容为个人理解和翻译的内容,如有不恰当之处,还望多多包涵和指出)

差错检测和纠错

  • 再次提醒!必须要牢记的是:虽然在数据链路层重点讲述了检错纠错,但是它并不仅仅是在该层出现!
  • 检错纠错码要用到比较高深的数学知识,如果不是特别有把握(比如对稀疏矩阵很了解)还是不要去发明创造一个算法,很多现成的协议也是在重重复复用一类码。
  • 本文的重点就是掌握典型的码的思想,以触类旁通。

概述

纠错码和检错码可从冗余信息的长度判断。

加入冗余信息足够多的,有纠错功能;只加适量冗余信息的,仅有识别错误功能。

纠错的一般应用是FEC(forward error correction,前向纠错,用于噪声信道)

对错误的建模

错误的特征:

  • 影响正常信号的 错误 发生几率远大于仅仅是某个无关紧要的位发生了错误发生的几率
  • 错误一般是集中而非分立的
  • 在可擦除信道中,可知道错误的位置(因为可知道是哪一位发生了错误),这比那些直接丢掉位的信道好

纠错码分类

有以下四类:

  • 汉明码
  • 二进制卷积码
  • Reed-Solomon Codes(是个人名,直译不太合适)
  • 低密度奇偶校验码

本文要讨论的码是系统、线性的。
即:数据和冗余码一同被发送,且冗余码长度与数据位长度呈线性关系。

汉明距离

  • 汉明距离:两个码字异或后1的个数
  • 若检测d个错误,需要d+1位
  • 若纠正d个错误,需要2d+1位
  • 缺点:无法纠正2倍数的错误以及侦测4倍数的错误

纠正一位错误的汉明码纠错原理及应用

原理:假设数据正确位有m位,冗余位r位,传输过去的数据是n位

image.png

但实际数据的顺序肯定不是这样的。
如果这m位每一位都发生了错误,每个都需要n+1位去表示。
有如下等式成立:

$(n+1)2^m<=2^n$

又因为n=m+r,所以可推导出如下等式:

$(m+r+1)<=2^r$

汉明码是这么用的:
2的i次方的位为校验位,可以根据一些规则去设置(后面细说);其余位为数据位。

如何确定一个数据位的校验位?

将其拆分为2的i次方相加的形式。

例如:$5=2^2+2^0$,第0位和第2位是该数据位的校验位。

那么这个概念有什么用呢?——————用于设置编码的校验位。

发送方设置发送含纠错信息的编码

前面提到,发送方可以与接收方约定好校验是以奇校验还是偶校验的形式,对于每一个仍待确定的校验位,检查所有能含有该校验位的数据位(用到了这个概念),计算1的数量,如果是偶校验,但是目前1的个数是奇数,说明该校验位还需要补一个1,反之则不能再补,只能填0.

以此类推,把所有的校验位补齐。

整个发送编码也就确定了。

接收方如何纠错

  • 初始置counter为0,检查所有校验位。
  • 如果校验位和奇偶规则不一致,则该校验位有问题,将校验位的值累加值counter。
  • 最后,若counter为0,说明正确;若不为0,counter表示的数值指向的位为错误位。

应用

可以将k个码字按行排列成矩阵,按列发送矩阵,这样每行最多只有一个错误,可以使用该汉明码了。

但是要注意的是:这只适用于错误的总数不超过行数的情况。

看原文书籍和码字都不易,还望大家多多包涵!

相关文章
|
4月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
|
4月前
|
监控 算法 安全
基于 C# 基数树算法的网络屏幕监控敏感词检测技术研究
随着数字化办公和网络交互迅猛发展,网络屏幕监控成为信息安全的关键。基数树(Trie Tree)凭借高效的字符串处理能力,在敏感词检测中表现出色。结合C#语言,可构建高时效、高准确率的敏感词识别模块,提升网络安全防护能力。
130 2
|
7月前
|
SQL 数据采集 人工智能
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
306 12
|
5月前
|
机器学习/深度学习 算法 5G
基于DNN深度神经网络的OFDM+QPSK信号检测与误码率matlab仿真
本内容展示了基于深度神经网络(DNN)的OFDM-QPSK信号检测算法在Matlab2022a中的仿真效果。通过构建包含多层全连接层和ReLU激活函数的DNN模型,结合信号预处理与特征提取,实现了复杂通信环境下的高效信号检测。仿真结果对比了传统LS、MMSE方法与DNN方法在不同信噪比(SNR)条件下的误码率(BER)和符号错误率(SER),验证了DNN方法的优越性能。核心程序涵盖了QPSK调制、导频插入、OFDM发射、信道传输及DNN预测等关键步骤,为现代通信系统提供了可靠的技术支持。
92 0
|
7月前
|
机器学习/深度学习 人工智能 运维
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
258 8
|
8月前
|
机器学习/深度学习 存储 算法
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。
|
8月前
|
机器学习/深度学习 数据采集 算法
基于yolov2和googlenet网络的疲劳驾驶检测算法matlab仿真
本内容展示了基于深度学习的疲劳驾驶检测算法,包括算法运行效果预览(无水印)、Matlab 2022a 软件版本说明、部分核心程序(完整版含中文注释与操作视频)。理论部分详细阐述了疲劳检测原理,通过对比疲劳与正常状态下的特征差异,结合深度学习模型提取驾驶员面部特征变化。具体流程包括数据收集、预处理、模型训练与评估,使用数学公式描述损失函数和推理过程。课题基于 YOLOv2 和 GoogleNet,先用 YOLOv2 定位驾驶员面部区域,再由 GoogleNet 分析特征判断疲劳状态,提供高准确率与鲁棒性的检测方法。
|
12月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
353 11
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
下一篇
oss云网关配置