数据链路层(二)--差错控制

1.4 差错控制

在物理层传输过程中,比特的传输可能会产生差错:1可能会变成0,0可能会变成1,这种叫做比特差错。比特差错是传输差错中的一种。传输错误的比特占所传输比特总数的比率称为误码率BER。为了保证数据传输的可靠性,必须采用各种差错检测措施。目前数据链路层广泛使用循环冗余检验CRC的检错技术。

CRC的工作原理:

(1)在发送端,先把数据划分为组,假定每组K个比特。现假设带传送的数据M=101001(K=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。

(2)计算n位的冗余码

1、用二进制的模2运算进行2^n乘M的运算,这相当于在M的后面添加了n个0。(M的各位都跨到了n倍);

2、得到k+n位的数除以收发双方事先商定好的长度为(n+1)位的除数P,得出商Q,余数为R(n位,比P少一位),这个余数R就是冗余码,也叫做FCS(帧检测序列)。

3、将FCS序列加到M上,然后发出去;

(3)在接收端,接收到的数据进行CRC检测,把收到的每一个帧都除以同样的除数P,然后检查得到的余数R,如果余数为0,则表示传输无错误。如果余数不为0,一定有错误。但是,指的注意的是,即使传输出现误码,最后的余数R为0的概率是非常非常小的。

我们通过一个案例来将CRC的整个过程串一下:

假设要发送的数据M=101001,P=1101,n=3

(1)在发送端,每组发送6个比特,现在后面添加3位冗余检测码发送出去;

(2)计算3位的冗余码

1、由M=2^3&M可得,M=101001000

2、M/P

得到余数R=001,将余数R加到M上,得到要的发送的数据帧M=101001001。

3、在发送端,对于接到的每一帧进行产错检验,假设收到的为101001001,P=1101;

M/P

为了方便计算,现在常用生成多项式来表示P,如上面例子的除数P=1101,我们可以用P(X)=x^3+x^2+1来表示,目前常用的生成多项式P(X)由以下几种:

CRC-16=X^16+X^15+X^2+1

CRC-CCITT=X^16+X^12+X65+1

CRC-32=X^32+X^26+X^23+X^22+X^16+X^12+X611+X^10+X^8+X^7+X65+X64+X62+X+1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值