计算机网络(13)—— 差错控制

差错从何而来?

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

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

局部性的噪声:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。

在这里插入图片描述
由于通信线路的改善,所以现在因特网的通信采取更加灵活的通信方法:不同的网段会采取不同的通信策略。

在这里插入图片描述

数据链路层的差错控制

数据链路层的差错控制可以较早的发现错误,节省资源。差错控制的方法见图。

在这里插入图片描述
注意:数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。

检错编码–奇偶校验码

奇偶校验码的定义和区别见图:

在这里插入图片描述
注意:奇偶校验码的准确率为0.5,如果原数据有1个1,若它的1变为偶数个,可以检验出来,若变为计数个,则无法检验出来,即奇偶校验码只能检查出奇数个比特错误。

检错编码—CRC循环冗余码

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

文字描述较为困难,此处引述他人文档。

CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2****除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2****除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。

【说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。如100101除以1110,结果得到商为11,余数为1,如图5-9左图所示。如11×11=101,如图5-9右图所示。

imgimg

图5-9 “模2除法”和“模2乘法”示例

具体来说,CRC校验原理就是以下几个步骤:

(1)先选择(可以随机选择,也可按标准选择,具体在后面介绍)一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比较特串,通常是以多项方式表示,所以CRC又称多项式编码方法,这个多项式也称之为“生成多项式”)。

(2)看所选定的除数二进制位数(假设为k位),然后在要发送的数据帧(假设为m位)后面加上k-1位“0”,然后以这个加了k-1个“0“的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数,所得到的余数(也是二进制的比特串)就是该帧的CRC校验码,也称之为FCS(帧校验序列)。但要注意的是,余数的位数一定要是比除数位数只能少一位,哪怕前面位是0,甚至是全为0**(附带好整除时)也都不能省略**。

(3)再把这个校验码附加在原数据帧(就是m位的帧,注意不是在后面形成的m+k-1位的帧)后面,构建一个新帧发送到接收端;最后在接收端再把这个新帧以“模2除法”方式除以前面选择的除数,如果没有余数,则表明该帧在传输过程中没出错,否则出现了差错。

通过以上介绍,大家一定可以理解CRC校验的原理,并且不再认为很复杂吧。

从上面可以看出,CRC校验中有两个关键点:一是要预先确定一个发送端和接收端都用来作为除数的二进制比特串(或多项式);二是把原始帧与上面选定的除进行二进制除法运算,计算出FCS。前者可以随机选择,也可按国际上通行的标准选择,但最高位和最低位必须均为“1,如在IBM的SDLC(同步数据链路控制)规程中使用的CRC-16(也就是这个除数一共是17位)生成多项式g(x)= x16 + x15 + x2 +1(对应二进制比特串为:11000000000000101);而在ISO HDLC(高级数据链路控制)规程、ITU的SDLC、X.25、V.34、V.41、V.42等中使用CCITT-16生成多项式g(x)= x16 + x15 + x5 +1(对应二进制比特串为:11000000000100001)。

2. CRC校验码的计算示例

由以上分析可知,既然除数是随机,或者按标准选定的,所以CRC校验的关键是如何求出余数,也就是校验码(CRC校验码)。

下面以一个例子来具体说明整个过程。现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出二进制序列10110011的CRC校验码。下面是具体的计算过程:

(1)首先把生成多项式转换成二进制数,由G(X) = X4 + X3 + 1可以知道(,它一共是5位(总位数等于最高位的幂次加1,即4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0)很快就可得到它的二进制比特串为11001

(2)因为生成多项式的位数为5,根据前面的介绍,得知CRC校验码的位数为4(校验码的位数比生成多项式的位数少1)。因为原数据帧10110011,在它后面再加4个0,得到101100110000,然后把这个数以“模2除法”方式除以生成多项式,得到的余数(即CRC码)为0100,如图5-10所示。注意参考前面介绍的“模2除法”运算法则。

img

图5-10 CRC校验码计算示例

(3)把上步计算得到的CRC校验0100替换原始帧101100110000后面的四个“0”,得到新帧101100110100。再把这个新帧发送到接收端。

(4)当以上新帧到达接收端后,接收端会把这个新帧再用上面选定的除数11001以“模2除法”方式去除,验证余数是否为0,如果为0,则证明该帧数据在传输过程中没有出现差错,否则出现了差错。

笔记总结于王道网课,图片截取自视频,希望对大家有所帮助!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第三章 数据链路层 1 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第1页。 主要内容 案例引入 数据链路层的基本概念 点对点协议PPP 多路访问控制协议 以太网 局域网扩展及VLAN 2 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第2页。 知识目标 数据链路层的三个基本问题 C PPP协议 C CSMA/CD的工作原理 C 以太网MAC层和MAC帧 K 局域网的扩展方式 K VLAN的搭建和划分方法 A 3 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第3页。 案例引入 背景 Alice给Bob的消息可以通过连接在网卡上的网线发送出去了。网线的一头连接在Alice的计算机(的网卡)上,另一头连接在交换机的一个端口上。 4 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第4页。 案例引入 问题 1,当网卡源源不断的发送比特串时,如果网线中的物理信号受到干扰,导致交换机端口接收到信号与发送的信号不同,进而导致转换出来的01比特位发生错误了,该怎么办? 2,更严重的情况,由于突发的噪声,导致交换机端口完全没有收到网卡发送过来的比特串,该怎么办? 3,Alice发送的消息太多,交换机的端口来不及处理怎么办? 5 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第5页。 案例引入 如何解决? 将传输的比特数据流分解成帧,对发生错误的帧进行重传或纠错 引入一种差错控制的机制,让接收方在收到数据后向发送方发送确认消息 引入流量控制的机制,避免发送方发送过多、过快的数据 6 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第6页。 案例引入 结论 需要引入一个新的协议层—数据链路层,屏蔽掉底层(物理层)的差错,从而为上层(网络层)提供良好的服务。 7 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第7页。 主要内容 案例引入 数据链路层的基本概念 点对点协议PPP 多路访问控制协议 以太网 局域网扩展及VLAN 8 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第8页。 数据链路层的基本概念 名词 一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 在相邻结点间的一条链路上的通信称为点到点通信 从源结点(source node)到目的结点(destination node)的通信称为端到端通信,通信路径(path)可能由多个链路组成。 数据链路(data link) : 协议+链路 9 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第9页。 数据链路层的基本概念 名词 在两个对等的数据链路层之间画出一个数字管道,其中所传输的数据单位是帧。 成帧:将原始的比特流分解成若干离散的"段"中。 结点 结点 帧 帧 10 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第10页。 数据链路层的基本概念 名词 IP 数据报 1010… …0110 帧 取出 数据 链路层 网络层 链路 结点 A 结点 B 物理层 数据 链路层 结点 A 结点 B 帧 (a) (b) 发送 帧 接收 链路 IP 数据报 1010… …0110 帧 装入 数据链路层传送的是帧 11 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第11页。 数据链路层的基本概念 简单模型 广域网 广域网 Alice 主机 H1 Bob 主机 H2 路由器 R1 路由器 R2 路由器 R3 LAN WLAN Alice 向Bob发送数据 链路层 应用层 运输层 网络层 物理层 链路层 应用层 运输层 网络层 物理层 链路层 网络层 物理层 链路层 网络层 物理层 链路层 网络层 物理层 R1 R2 R3 H1 H2 从层次上来看数据的流动 12 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第12页。 数据链路层的基本概念 简单模型 广域网 广域网 Alice 主机 H1 Bob 主机 H2 路由器 R1 路由器 R2 路由器 R3 LAN WLAN Alice 向Bob发送数据 链路层 应用层 运输层 网络层 物理层 链路层 应用层 运输层 网络层 物理层 链路层 网络层 物理层 链路层 网络层 物理层 链路层 网络层 物理层 R1 R2 R3 H1 H2 仅从数据链路层观察帧的流动 13 [课程讲义]计算机网络第三章数据链路层详解全文共110页,当前为第13页。 数据链路层的基本概念 数据链路层的目标 在物理层提供比特流传输服务的基础上,数据链路层(Data Link Layer)通过在通信的实体之间建立数据链路连接,传送以"帧"为单位的数据,使有差错的物理线路变成无

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值