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

一、差错从何而来?

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

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

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

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

  • 位错:比特位出错,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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值