目录

  • 一、差错从何而来?
  • 二、数据链路层的差错控制
    • 检错编码 —— 奇偶校验码
    • 检错编码 —— CRC循环冗余码

一、差错从何而来?

概括来说,传输中的差错都是由于噪声引起的。

  • 全局性噪声:
    产生原因:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的;
    解决办法:提高信噪比来减少或避免干扰,提高信噪比可以对传感器下手。

  • 局部性噪声:
    产生原因:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因;
    解决办法:通常利用编码技术来解决;

造成的差错可以分为以下两种:

  • 位错:比特位出错,1变为0,0变为1;
  • 帧错:(1)某帧丢失;(2)某帧重复;(3)帧失序(帧之间位置发生变换)

链路层为网络层提供服务,无确认无连接服务、有确认无连接服务、有确认面向连接服务。

二、数据链路层的差错控制

差错控制主要强调比特错,主要分为两种,分别为检错编码(奇偶校验码、循环冗余码CRC)、纠错编码(海明码)。

数据链路编码VS物理层编码

数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼切斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程中是否出现了差错。

冗余编码

在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到的码字是否仍符合原规则,从而判断是否出错。

检错编码 —— 奇偶校验码

奇偶校验码由n-1位信息元和1位校验元,奇偶校验码分为奇校验码和偶校验码。

奇校验码:n-1位信息元和1位校验元组成n位比特,n位比特中1的个数为奇数。

偶校验码:n-1位信息元和1位校验元组成n位比特,n位比特中1的个数为偶数。

检错编码 —— CRC循环冗余码


发送端计算得到冗余码FCS之后,发送到接收端的数据为“要发送的数据+帧检验序列FCS”。

计算冗余码方法

  • 加0:假设生成多项式G(x)的阶为r,则加r个0(多项式N位,阶为N-1);
  • 模2除法:数据加0后除以多项式,余数为冗余码/FCS/CRC检验码的比特序列(除法模式为异或,相同返回0,相异返回1);

举个例子:要发送的数据是1101011011,使用CRC校验,生成多项式是10011,那么最终发送的数据应该是?

首先加0,然后进行除法:

接收端检错过程

把收到的每一个帧都除以相同的除数,然后检查得到的余数R。

  • 余数为0,判定这个帧没有错,接受;
  • 余数不为0.判定这个帧有差错(无法确定到位),丢弃;

FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输;

在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接收的帧,我们都能以非常接近1的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。“凡是接收端数据链路层接收的帧均无差错”。

数据链路层使用CRC校验,能够实现无比特差错的传输,但是这还不是可靠传输。可靠传输是指数据链路层发送端发送什么,接收端就收到什么。在使用CRC校验时,接收端只接收无比特差错的帧,有差错的帧会被丢弃,因此这不是可靠传输。

【计算机网络】—— 差错控制(检错编码)相关推荐

  1. 【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 差错来源 | 差错分类 | 冗余编码 )

    文章目录 一. 差错来源 二. 差错分类 三. 差错控制 四. "物理层" 编码 与 "数据链路层" 编码 对比 五. 冗余编码 一. 差错来源 "差 ...

  2. 3.3.1 差错控制(检错编码)

    目录 差错从何而来? 检错编码--奇偶校验码 检错编码--CRC循环冗余码 差错从何而来? 检错编码–奇偶校验码 检错编码–CRC循环冗余码

  3. 【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★

    文章目录 一. 奇偶校验码 二. 奇偶校验码 特点 三. 奇偶校验码 示例 四. CRC 循环冗余码 ( 原理说明 ) 五. CRC 循环冗余码 计算示例 六. CRC 循环冗余码 生成多项式 一. ...

  4. 3.3.2 差错控制(检错编码)

    目录 纠错编码--海明码 1.确认校验码位数 2.确认校验码和数据的位置 3.求校验码的值 4.检错并纠错 总结 纠错编码–海明码 1.确认校验码位数 2.确认校验码和数据的位置 P1=2^(1-1) ...

  5. 计算机网络数据链路层检错编码 --- 循环冗余码CRC

    实例说明 假如要发送的数据是1101 0110 11, 采用CRC校验, 生成多项式是10011, 那么最终发送的数据应该是? 发送端发送过程: 1. 最终发送的数据 = 要发送的数据 + 帧检验序列 ...

  6. 差错控制之检错编码与纠错编码

    差错来源 数据链路层的差错控制 检错编码-奇偶校验码 检错编码–CRC循环冗余码 纠错编码-海明码 海明码:发现双比特错误,纠正单比特错 1.确定校验码的位数r 2.确定校验码和数据的位置 3.求出校 ...

  7. 差错控制(检错编码、纠错编码)

    二战三战都不是事 ,只要心甘情愿,一眨眼就走出考场了 打破 第211 篇文章 文章目录 差错控制 差错来源 数据链路层的差错控制 检错编码--奇偶校验码 检错编码一一CRC循环冗余码 纠错编码一一海明 ...

  8. 【计算机网络复习 数据链路层】3.3.1 差错控制(检错编码)

    差错控制(检错编码) 一.差错从何而来? 二.数据链路层的差错控制 2.1 奇偶校验码 2.2 CRC循环冗余码 一.差错从何而来? 概括来说,传输中的差错都是由于噪声引起的. 全局性:由于线路本身电 ...

  9. 3.3差错控制(检错编码、纠错编码)

    目录 差错从何而来? 传输中的差错都是由于噪声引起的. 1.检错编码--奇偶校验码 2.检错编码--CRC循环冗余码 3.纠错编码--海明码 总结 差错从何而来? 传输中的差错都是由于噪声引起的. 全 ...

最新文章

  1. 你正在用的API网关,真的起到了它该有的作用?
  2. qc linux mysql 安装教程_linux下安装mysql
  3. 实验6_MPEG音频编码实验
  4. [diary]极度自恋?
  5. python核心数据类型_Python核心数据类型——字符串
  6. 串口 浮点数 结构体_组态软件与串口服务器的配置
  7. 2019 ,我的新年Flag
  8. CTR 预估模型简介--非深度学习篇
  9. vs2019安装包显示网络未链接_BBO最新5.19版下载及WBF世界网络赛指引
  10. 【元胞自动机】基于matlab元胞自动机双边教室疏散【含Matlab源码 1208期】
  11. k2p 官方固件纯净版
  12. 将读书笔记自动生成思维导图(Markdown)
  13. 概率论基础-严士健 第二版 习题与补充3.3答案
  14. 二手房房价影响因素分析案例
  15. Python 判断无向图是否存在环
  16. 介绍理想工作计算机 英语作文,我的理想工作(My Ideal Job)
  17. Linux-vim设置
  18. Java Class类文件的结构
  19. html5统计鼠标点击的次数,怎么实现js统计鼠标点击次数
  20. 《文渊阁四库全书》书目

热门文章

  1. 35.NO module named zlib
  2. OpenCV 入门级一
  3. Visio中如何画正弦波
  4. 【转】怎样成为优秀的软件模型设计者(文末提供下载)
  5. DataGuard常用命令及DG主备库开关顺序
  6. MinIO存储桶通知指南 ​​​​​​​
  7. 分布式系统面试 - 幂等性设计
  8. 截屏状态监听 - iOS
  9. 通过Android反编译技术研究国内陌生人社交即时通讯的技术方案
  10. 设计模式之单例模式(一)