14、数据链路层(三)

本文详细介绍了数据链路层的差错检测服务,包括由热噪声和脉冲噪声引起的两种错误类型。讨论了奇偶校验码的简单检错方式,但其无法纠错;接着介绍了海明码,一种既能检错又能纠错的复杂方法;最后讲解了最常用的CRC码,及其计算过程。通过这些方法,数据链路层确保了在网络层上交无差错的数据。
摘要由CSDN通过智能技术生成

之前的两节内容,我们详细地阐述了数据链路层的两大基本服务,分别是封装成帧和透明传输,并且介绍了方法原理。这一节的内容,我们继续学习数据链路层的第三大基本服务——差错检测。

数据在通信过程中会产生什么样的差错呢,为什么会引起来差错呢?

对于这个问题,通信领域研究出来的结果可以分为两大类,一类是由热噪声引起的随机错误,另一类是由脉冲噪声引起的突发错误

随机错误的特点是:错误具有随机性,影响个别数据位,断断续续的存在;突发错误的特点是:时间短而幅度大,往往会引起一个位串的出错

在学习具体的知识点之前,我们还要明确的是,数据链路层本来是应该为网络层提供可靠的服务,即数据链路层上交给网络层的数据必须是无差错的。

但是后来,随着底层通信技术发展的极大进步,我们的有线传输媒体的质量都很可靠,所以慢慢的就不要求数据链路层向上提供可靠服务了。但是数据链路层仍要负责检错,检测出来的错误怎么改正呢,改正的工作就交给上层的协议来处理

当然,在一些无线通信的环境下,有可能通信质量比较差,这时候也需要数据链路层来提供检错并且纠错的工作,但是无线通信又属于另一个单独的体系,在这里我们不单独研究。

下面,我们介绍数据链路层的三种检错方法,以及它们的特点。


奇偶校验码

奇偶校验的方法是差错检测中最简单的一种方法,就是在原始的二进制数据流后面加上一位校验位,实际应用起来分为奇校验和偶校验。

当使用奇校验的时候,原始的数据后面加上一位校验位以后,使得1的个数为奇数。比如原始数据为1001,这时候要添加的校验位就应该是1,即10011,这样1的个数是3个;如果原始数据是1000,那么这种情况下,要添加的校验位就是0,即10000,保证1的个数为奇数个。

同理,偶校验就是在原始的数据后面添加校验位以后,使得1的个数为偶数个

正是由于上面的原理,使得奇偶校验实现起来很简单,但是这种方法只能应对少量的随机错误,并且只能检错,不能纠错,因为它不知道错在哪里,所以奇偶校验现在用的已经很少了。


海明码

海明码是一种复杂的检错码,不仅具有检错的功能,还具有简单的纠错功能,它的内部的原理特别复杂,而且这也不是网络方向要具体研究的内容,它是属于通信领域要研究的知识,而我们只需要知道它怎么用,以及海明码距的概念即可。

首先,我们给出海明码距的概念:码距指的是两个不同的比特位串之间不同的位数

举个例子,1011和1101,这两串数字,第一位和第四位是一样的,都是1,第二位和第三位不同,两串数字中由两位是不同的,那么我们就说这两个比特位串的码距就是2。

另外,我们需要知道关于海明码的一个重要公式:若信息位为m位,那么至少要增加k位的校验位,使得满足公式m+k+1<=2^k,才能检测并纠正出错误。

码距的概念和上面的公式,是通信和网络工程师考试当中,通常是必考的内容。


循环冗余校验码

我们通常称之为CRC码,是目前数据链路层中最常用的检错码,也是各种考试的重点内容,必须要掌握它的计算方法。

计算的过程,大概可以分为这样几个步骤:第一,根据生成多项式写出除数;第二,根据生成多项式,按照最高次幂在原始数据后面添0;第三,做除法运算;最后,得出的余数即为CRC码。

举一个详细的题目来说明,题目中给出原始数据是11001010101,生成多项式是X^4+X^3+X+1。

按照我们的步骤,首先,根据生成多项式,写出除数为11011(原因是:生成多项式中有四次方,所以最高位是1,有三次方,所以次高位是1,没有二次方,所以第三位是0,有一次方,所以倒数第二位是1,把多项式中最后的+1,看作是X的零次方,所以最后一位也是1)。

第二步,在原始数据后面添0,添几个0呢?要看生成多项式的最高次幂,也就是4,所以添4个0。

第三步,原始数据后面添4个0,作为被除数,然后和我们得出来的除数开始做除法运算,如下:

 在这里请注意,这个除法运算,和正常的数学运算是不一样的。仔细观察会发现,每一步得出来的余数,它是上下两串数据进行异或得出来的。

算到最后,得出来最后的余数,是0011,这就是我们的CRC码,把这个码连同原始数据一起发送出去,接收端收到后,再进行CRC检验,检查得到的余数就可以知道数据在传输过程中有没有出错了。

到这里,我们的数据链路层的三大基本服务的内容就全部学完了。下一节开始,我们学习以太网的相关知识。


参考教材:张亮《现代数据通信技术与应用》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值