CRC校验

数据链路层有三个基本问题:

(1)封装成帧;

(2)透明传输;

(3)差错检测:

在差错检测中,传输差错中分为两大类:

1.比特差错:比特在传输过程中产生差错:1可能变为0,0可能变为1.

   在一段时间内,传输错误的比特占所传输总数的比特总数的比率称为误码率.

2.帧丢失、帧重复或帧失序:如

//3个帧   [#1]-[#2]-[#3]
[#1]-[#3]             //帧丢失[#2]
[#1]-[#2]-[#2]-[#3]   //帧重复[#2]
[#1]-[#3]-[#2]       //帧失序

所以在数据链路层中则采用循环冗余校验CRC(Cyclic Redundancy Cheak)的检错技术来实现无比特差错的传输。即CRC校验并不能保证可靠传输,只是做到对帧的无差错接受(凡是接收端数据链路层接受的每一个帧均无比特差错).


校验方法:

1.在发送端,先把数据划分为组,假定每组K个比特,假定发送数据M=101001(k=6);

2.生成冗余码,在数据M后面添加差错检测用的n位冗余码,方法:

 (1)首先将对M进行乘以2^n的运算,即在M后面补n个0;

 (2)以多项式系数确定n+1位长度的除数P;

 (3)得到(k+n)位的数除以除数P(模2运算==异或运算),最后得到余数R;

 (4)将这个余数R作为冗余码相加(拼接)在数据M的后面.(将这种为了进行检错而添加的冗余码称为帧检验序列FCS(Frame Cheak Sequence)).

3.构成一个帧发送出去,一共发送(k+n)位;

4.接收端接收到的数据以帧为单位进行CRC检验:收到的每一个帧都除以同样的除数P(模2运算(异或)),然后检查得到余数R

 (1)若R=0,则判定这个帧没有差错,就接受;

 (2)若R!=0,则判定这个帧有差错,直接丢弃.


以上除数一般以多项式系数表示:用多项式P(X)=X^3+X^2+1,则P=1101(n+1位,即n==3),多项式P(x)称为生成多项式.

以上面的步骤和M=101001(k=6)举例:

(1)M*2^3=101001000;

(2)除以除数P:


(3)101001000+001=101001001,构成一个帧发送出去......

(4)接收端接收检测.......


以上CRC检验是一种广泛应用的多项式编码,其又称多项式码,具有良好的数学结构,易于实现,发送端编码器和接收端检测译码器实现较为简单,具有十分强的检错能力,其中FCS的生成与CRC检验其依靠这些硬件处理很迅速,不会延误数据的传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值