精华内容
下载资源
问答
  • 写个博客,搞通计算计网络(自顶向下)链路层的差错检测这一节 先看,差错检测何来 现实的通信链路不理想 传输的bit 0-1 会发生错误转换,即比特差错 于是就有了误码率(BER,Bit Error Rate) 一说: 一段时间内,...

    写个博客,巩固一下计算计网络(自顶向下)链路层的差错检测这一节



    先看,差错检测何来

    • 现实的通信链路不理想
    • 传输的bit 0-1 会发生错误转换,即比特差错
    • 于是就有了误码率(BER,Bit Error Rate) 一说:
      一段时间内,发生比特差错的比特占传输比特总数的比率。

    误码率和信噪比有很大关系,实际情况下,误码率无法为 0

    那如何是好。

    那就差错检测:利用 差错检测码EDC(Error Detecting Code)


    EDC,差错检测码

    所谓差错检测码:

    发送方(Sender),采用某种差错检测算法f,用发送的数据D,计算出EDC = f(D),并且将EDC随数据一起发给接收方(Receiver)
    接着,
    接收方(Receiver)收到了数据D’差错检测码EDC’,同样用f计算f(D’)
    倘若 f(D’) ≠ EDC’,则传输中出现了差错即检测出错

    图示如下:
    在这里插入图片描述


    FCS,帧检验序列

    在数据链路层(Data Link level)
    每一帧都有一个字段:帧检验序列Frame Check Sequence,FCS

    • 为的是,便于硬件检测差错
    • 在帧的尾部的差错检测字段
    • 内容是帧首部和数据部分的差错检测码

    在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC(Cyclic Redundancy Check) 的检错技术。


    CRC,循环冗余检验

    先举例子:

    在发送端,先把数据划分为组。假定每组 k 个比特。
    假设待传送的一组数据 M = 101001(那么 k = 6)
    在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。


    设 k = 6, M = 101001。
    设 n = 3, 除数 P = 1101 (n+1位,且首尾位都是1,算法要求),
    被除数是 2nM = 101001000。
    模 2 运算的结果是:商 Q = 110101,
    余数 R = 001。
    把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2nM + R
    即:101001001,共 (k + n) 位。

    原理如图:在这里插入图片描述


    CRC编码又名多项式编码

    因为,该编码能将要发送的比特串看作是系数为0和1的一个多项式
    对比特串的 模2运算被解释为多项式算术
    如: 生成多项式G(X) = X3+X2+1 课表示为生成式G=1101(上图中的除数P)


    几点说明:

    • 用二进制的模 2 运算进行 2n 乘 M 的运算,
      这相当于在 M 后面添加 n 个 0
    • 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P
    • 商是 Q 而余数是 R,余数 R 比除数 P 少1 位,即 R 是 n 位。
    • 接收方,若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)
    • 接收方若余数 R ≠ 0,则判定这个帧有差错,就丢弃
    • 虽然,显然CRC不能确定究竟是哪一个或哪几个比特出现了差错
    • 但是,只要经过严格的挑选,并使用位数足够多的除数 P,
      那么出现检测不到的差错的概率就很小很小。

    小结: CRC与FCS

    • 1.循环冗余检验 CRC 帧检验序列 FCS
    • 2.CRC 是一种常用的检错方法
    • 3.FCS 是添加在数据后面的冗余码
    • 4.FCS 可以用 CRC 这种方法得出,
      但 CRC 并非用来获得 FCS 的唯一方法
    • CRC易于用硬件实现,
      所以在数据链路层,发送端帧的检验序列FCS的生成

      以及在接收端CRC检验,完全用硬件完成,处理很快。
    展开全文
  • 差错检测循环冗余校验CRC

    千次阅读 2018-11-21 14:22:39
    差错检测循环冗余校验CRC 帧检验序列FCS(Frame Check Sequence):为了进行差错检验而添加的冗余码。 模2运算:即按位异或运算,不考虑进位与借位,相同为0,不同为1(做除法时每一步余数的首位逢一商一 逢零商...

      现实中通信链路都不会是理想的,比特在传输的过程中可能会出现差错,1可能变成0,0也可能变成1,这就叫做比特差错。比特差错是传输差错的一种,因此为了保证数据传输的可靠性,在计算网络传输数据时,必须采用各种检验措施来处理比特差错。目前在数据链路层广泛使用了循环冗余的CRC的检错技术

    • 帧检验序列FCS(Frame Check Sequence):为了进行差错检验而添加的冗余码。
    • 模2运算:即按位异或运算,不考虑进位与借位,相同为0,不同为1(做除法时每一步余数的首位逢一商一 逢零商零)
    • 发送方和接收方事先商定的长度为(n+1)位的除数P,用多项式 P(x) 表示更为方便,又称生成多项式。
    • 由(k-1)次多项式表示的 k 位比特消息 M(X),每一比特位的值为 对应其每项多项式的系数,且从为高位比特开始。如一个8比特10011010对应的多项式为 M(x)=x^7 +x^4 +x^3 +x^1。
    • n位冗余码:用二进制的模2运算进行2^n乘以M 的运算,相当于在M的后面添加n个0。

    循环冗余检验的原理:在发送端,先把数据划分成组,假定每组k个比特并作为M,CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧(k+n)位 并发送出去。将得到的(k+n)位的数除以收发双方事先商定的(n+1)位的除数P,得出的商是Q,而余数是R(n位,比P少一位)。在接收端把接受到的数据以帧为单位进行CRC检验:即把收到的每一个帧都除以P(模2运算),然后检查得到的余数R,如果传输无差错,那么R肯定是0,就接受;如果R≠0,则判定这个帧有差错(无法确定是哪几位出现差错),就丢弃。

    有效信息为1010001101,生成多项式p(x)=110101 , 求其CRC编码? 

    答:如图所示(模2运算)

    余数为01110,CRC编码为101000110101110

     

    展开全文
  • 差错检测循环冗余检验crc

    千次阅读 2015-02-08 10:36:56
    差错检测 传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)。 误码率与信噪比有很大的关系。 为了保证...

    差错检测

    传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。

    在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)。

    误码率与信噪比有很大的关系。

    为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。


    循环冗余检验 CRC

    在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
    在发送端,先把数据划分为组。假定每组 k 个比特。 
    假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
    冗余码的计算
    用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
    得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少1 位,即 R 是 n 位。




    冗余码的计算举例
    现在 k = 6, M = 101001。
    设 n = 3, 除数 P = 1101,
    被除数是 2nM = 101001000。 
    模 2 运算的结果是:商 Q = 110101,
               余数 R = 001。
    把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2nM + R 
       即:101001001,共 (k + n) 位。


    注:可以用生成多项式来表示循环冗余的除数,例P(X)=X3+X2+1可以表示1101这个除数。
    练:101101的生成多项式P(X)=?


    帧检验序列 FCS
    在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
    循环冗余检验 CRC 和帧检验序列 FCS并不等同。
    CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
    FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。



    接收端对收到的每一帧进行 CRC 检验
    检验:
    若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。
    若余数 R  0,则判定这个帧有差错,就丢弃。


    特点:
    但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
    只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。


    仅用循环冗余检验CRC 差错检测技术只能做到无差错接受(accept)。

    “无差错接受”是指:“凡是接受的帧(即 不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。

    要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认重传机制。

    考虑:帧重复、帧丢失、帧乱序的情况

    可以说“CRC是一种无比特差错,而不是无传输差错的检测机制”

    OSI/RM 模型的观点:数据链路层要做成无传输差错的!但这种理念目前不被接受!





    循环冗余检验CRC

    展开全文
  • 在数据链路层,为了便于硬件检测差错,通常在帧的尾部设置一个差错检验字段存放整个帧的差错检验码,这个差错检验字段常称之为帧检验序列。 CRC理解: 需要的知识储备有: 模2除法运算:二进制下的除法,实际上就是...

    需求用处:
    现实中的通信链路都不是理想的,比特在传输中可能会产生差错:1可能会变成0,0可能会变成1。我们称之为比特差错,所以我们要对传输的数据进行差错检验,减小误码率。在数据链路层,为了便于硬件检测差错,通常在帧的尾部设置一个差错检验字段存放整个帧的差错检验码,这个差错检验字段常称之为帧检验序列。
    CRC理解:
    需要的知识储备有:
    模2除法运算:二进制下的除法,实际上就是按位异或运算,也就是同位比较后,两者对应位相同则结果为“0”,不同则结果为“1”。
    多项式编码(CRC编码):用来生成除数G,CRC生成多项式也与一组二进制数相对应,例如,题中,CRC生成多项式为:x^4 +x^2 +x^1+1 (常数项1是x^0)
    就是:2^4 + 2^2+ 2^1+1,对应指数位为1,否则为0,所以对应的二进制是:10111
    算法要求G的最高位和最低位的比特为1。

    CRC差错检验运算步骤
    1、发送方和接收方协商一个 r+1位的比特生成G.
    2、发送方选择一个合适的r比特冗余码R(即检错码),并将它附加到D(要发送的数据)上,使得到的d+r比特模式异或运算后恰好能被除数G整除。

    说明:要计算这个冗余码R,则在数据后加上除数个数减1个0(生成多项式最高项次个0),进行异或运算,得到同位数个比特的余数R,那么,将这个余数加到要发送的数据后得到的二进制数,与除数 G进行异或运算后,必然可以整除,这时,我们看结果,余数为0,则数据串里没有比特差错,否则,发生的比特位的变化。(就这么个过程,必须理解)

    发送方的处理
    接收方的处理

    在这里插入图片描述

    接下来看例子:
    在这里插入图片描述
    步骤
    在这里插入图片描述
    所以,最终发送的形式是:
    在这里插入图片描述
    上题是如何计算冗余码,下面来一道判断冗余码的题:
    在这里插入图片描述
    在这里插入图片描述
    说明:商 没有什么用,只是我们计算过程中的标记作用,指示算到了第几位,同时,为1时,说明够除,被除数下一位,为0时,说明不够除,此时标记0,再往后借位去除。
    教材上(谢希仁第5版)的 商 一般都全是1,但在运算过程中会进行与0异或,使向后移动。

    好啦,就这些。考试稳了。
    (以上图片来源于湖南科技大学计算机网络课老师.B站有本问题视频)

    展开全文
  • 数据链路层差错检测循环冗余检验CRC 引用https://blog.csdn.net/wenqiang1208/article/details/71641414 为什么引入CRC 现实的通信链路都不会是理想的。这就是说,比特在传输的过程中可能会产生...
  • 1、循环冗余检验(CRC): 在发送端,先把数据划分为祖,假定每组K个比特。现假定待传送的数据M = 101001(k=6)。CRC运算就是在数据M后面添加提供差错检测的n位冗余码,然后构成一个帧发送出去,一共发送(k+n )位...
  • 【占坑】
  • 差错检测和纠错技术 奇偶校验 单个比特的奇偶校验  单个比特的奇偶校验是指在要发送的数据最后附加一个奇偶校验位.奇校验的意思就是整个编码中的1的个数要是奇数.偶校验就是1的个数是偶数. 显然如果有偶数个比特...
  • 循环冗余校验CRC(Cyclic Redundancy Check) 收发双方约定好一个生成多项式G(x); 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输; 接收方通过生成多项式来计算...
  • CRC循环冗余检测

    2020-05-21 18:38:32
    CRC循环冗余检测 CRC循环冗余检测技术用于解决数据链路层的差错检测,可以实现无比特位差错检测。 CRC生成多项式 CRC生成多项式表示的是二进制除数。 例如P(X)= X2+1,X2表示二进制的第三位是1,1表示二进制第一位...
  • 数据链路层CRC(循环冗余码)差错校验码详解 CRC差错校验码是数据链路层用来进行差错校验的一个码。 CRC编码过程 假设要编码的数据D,有d个比特,发送节点要将它发送给接收节点。发送方和接收方要先协商一个r + 1比特...
  • 帧 帧头 帧尾 物理层地址 校验值 ...3、差错检测 检查101001 一、添加101001000,除数比添加数多一位 二、除法,不进位加法,商和位数一致为6,余数为fcs 三、收到后,补上fcs,除法,余0无差错 ...
  • 差错检测和纠错技术

    2021-08-04 10:59:16
    一、差错检测和纠错技术简单介绍 本篇讲的差错检测和纠错技术主要是针对比特错误。 对一个节点发送到一个相邻节点的帧,检测是否出现比特差错,并纠正。相关技术有很多,下图为差错检测和纠正的过程。 在发送节点,...
  • CRC循环冗余检测 目的:接收端通过检测检测收到的的数据是否有差错,如果有差错,丢弃帧,没有差错,接受帧。 一、例:发送一个数据为1101011011,采用CRC生成多项***式P(X)=x^4+x+1。试求应添加在数据后的余数。 ...
  • 数据链路层CRC差错检测技术

    千次阅读 2020-11-19 17:47:15
    最近看到这块了,根据自己的理解在这里记录CRC差错检测技术。 现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错:1可能会变成0,0也可能会变成1。这就叫做比特差错。比特差错是传输差错中的...
  • 详细介绍了CAN总线中循环冗余校验码的差错控制原理及其实现方法。  关键词:循环冗余校验 差错控制 报文 在CAN系统中为保证报文传输的正确性,需要对通信过程进行差错控制。目前常用的方法是反馈重发,即一旦...
  • 计算机网络下循环冗余检测(CRC)

    千次阅读 2017-07-19 12:43:52
      CRC即循环冗余校验码(Cyclic Redundancy Check[1]):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式...
  • 差错检验与纠正: 循环冗余校验与汉明码 对于信号传输过程种出现错误是很正常的 我们提供了两种策略 添加只能使对方推测出有无错误的冗余信息,检错码 添加使对方推测出没有出错前的数据的冗余信息,纠错码 两种...
  • 一般的检测算法都是使用特定的运算规则E,看输入的自变量和得到的因变量是否相对应 但是如果自变量和因变量在传输过程中都发生了改变,那么即使数据错误,也不能查验出来。 所以,暂时没有100%能查出错误的技术 ...
  • 循环冗余检验CRC

    2017-05-15 17:05:06
    为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在链路层广泛使用循环冗余检验(CRC)的检错技术
  • CRC循环冗余校验

    2017-06-19 23:49:48
    循环冗余校验码具有良好的数学结构,易于实现,发送端编码器和接受器端检测译码器的实现较为简单;同时,具有十分强的检错能力,特别适合于检测突发性的错误。 计算主要用到两个多项式:f(x) 和G(x)。f(x)是一...
  • 差错检测教案

    2017-12-08 22:16:55
    本资源是《计算机网络》(第七版)第三章数据链路层中数据链路层协议的三个基本问题中的差错检测,先从比特差错的概念引出教学重点循环冗余检验(CRC)的概念原理,在通过例题讲解的教学方法讲解CRC中冗余码的生成,...
  • CRC循环冗余检验算法

    千次阅读 2017-06-12 14:38:18
    为了保证传输数据的可靠性,在计算机网络传输时,必须采用各种差错检测措施; CRC是我们运用在数据链路层的差错检验算法;2.CRC循环冗余检验算法的原理举例说明如何得到帧检验序列FCS 假设待传输的数据M=101001(k=...
  • 一、 奇偶校验码、 二、 奇偶校验码 特点、 三、 奇偶校验码 示例、 四、 CRC 循环冗余码 ( 原理说明 )、 五、 CRC 循环冗余码 计算示例、
  • 比特级差错检测和纠正 1.奇偶校验 2.校验和方法 3.循环冗余检测
  • 循环冗余检验CRC(Cyclic Redundancy Check)

    千次阅读 2016-01-30 22:21:24
    循环冗余检验CRC(Cyclic Redundancy Check) 1. 循环冗余检验CRC的原理 在发送端,先把数据划分为组,假定每组k个比特。现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,...
  • CRC循环冗余检验

    2017-05-11 18:55:54
    CRC循环冗余检验:是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。 以上CRC的概念...
  • 传输差错控制 计算机内部 / 网络 传递信息时对产生的差错进行控制 (1)自动重发请求(Automatic Retransmission Request,ARQ),接收端检测到错误就通知发送端重发,直至正确---------------------检错编码 (2)前向...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,978
精华内容 2,391
关键字:

循环冗余差错检测技术