计算机网络——数据链路层

本文详细介绍了数据链路层的作用,包括数据链路管理、帧同步、流量控制、差错控制和寻址等功能。强调了数据链路层如何通过差错控制方法将物理线路转化为无差错的数据链路,提到了奇偶校验码、循环冗余码(CRC)等检错码的概念,并探讨了ARQ自动请求重发机制在错误纠正中的应用。
摘要由CSDN通过智能技术生成

数据链路层的低层是物理层 相邻高层是网络层

数据链路层在物理层提供的比特流传输服务的基础上,通过建立数据链路,采用差错控制流量控制方法,将有差错的物理线路变成无差错的数据链路

数据链路层的数据传输单位是。(成帧:从物理层的比特流提取出完整的帧)


设计原因:

        物理线路由传输介质和通信设备组成。但实际中物理层传输的误码率高,需要data link层采取差错控制措施才能满足要求。

设计目的:

        在物理线路的基础上,采取差错检测、差错控制和流量控制等方法,将有差错的物理线路改进成无差错的数据链路,以便向网络层提供高质量的数据传输服务。(改善数据传输质量)

数据链路≠链路

链路 = 物理线路 + 通信设备。链路是一段点到点的物理线路,用于比特流传输。

数据链路 = 硬件(物理线路) + 软件(通信协议) + 链路。


数据链路层的功能:

1. 数据链路管理(数据链路层连接的建立、维护和释放过程):

        建立:实现交换必要的信息,构建的是逻辑链路或者数据链路。(发送方必须确知接收方是否已处在准备接收的状态。

        维护:数据传输过程中对数据链路的维护。

        释放:通信结束后释放数据链路。

2.帧同步(成帧——将数据组合成数据块,封装成帧)

        帧:是数据链路层的封装,数据链路层传输数据的数据单位。(物理层的比特流封装中帧中传输

        watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmVhdHIxY2Uu,size_17,color_FFFFFF,t_70,g_se,x_16

        帧同步(成帧):接收方确定收到的比特流中一帧的开始位置与结束位置。

3.流量控制:

        当AB两台设备在发送数据,如果A设备有较高的发送速度,而B设备只有较低的接收速度,那么就会造成不匹配,容易造成传输错误,因此就需要流量控制,使两方面的速率基本匹配。

        数据链路层的流量控制是点对点的。

4.差错控制:

        为了发现和纠正链路上的差错传输,将有差错的物理线路改进成无差错的数据链路,必须提供差错控制。

5.透明传输:

        透明传输,不管传的是什么,所采用的设备只是起一个通道作用,把要传输的内容完好的传到对方。相当于客户只用签收包裹,而不用管包裹如何到达。

6.寻址:

        数据链路层要保证将每帧传送到正确的接收端。所以需要寻址能力。


差错:

        传输差错(差错):接受数据和发送数据不一致的现象。 (差错的产生不可避免

        差错产生原因:数据信号在物理线路上传输时,和噪声信号的叠加所产生的。

        差错的出现具有随机性。

        watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmVhdHIxY2Uu,size_20,color_FFFFFF,t_70,g_se,x_16

物理信道的噪声:1. 热噪声        2. 冲突噪声        (必然存在的)

热噪声:电子热运动                 随机差错

冲突噪声:外界电磁干扰          突发差错

通信过程中的差错由随机差错和突发差错构成。


误码率:二进制比特在数据传输系统中传错的概率。

        误码率的计算:        gif.latex?P_%7Be%7D%20%3D%20%5Cfrac%7BN_%7Be%7D%7D%7BN%7D            (误码率gif.latex?P_%7Be%7D    传错的比特数gif.latex?N_%7Be%7D    传输的二进制比特总数gif.latex?N

        误码率是衡量数据传输系统在正常工作状态下的传输可靠性的参数。

        误码率越低越好?  ×        应根据实际的传输要求提出误码率要求。


差错控制:检测和纠正数据传输错误的方法。 

        目的:减少物理线路上的传输错误。 (目前不可能检测和纠正所有差错。

检错码:只能检查是否有错,不能自动纠错。(但可以通过重传来纠正错误。简单粗暴 很常用。

纠错码:检错 + 纠错 (实现困难 很少采用。

检错码的分类:奇偶检验码、循环冗余码


奇偶检验码(只能检测出奇数个错误):

        奇校验:原始码流+校验位 总共有奇数个1。

        偶校验:原始码流+校验位 总共有偶数个1。

秒懂 奇偶校验码 - 知乎1. 什么是奇偶校验码 英文为:Parity Check 跟前面提到过的CRC校验码一样,奇偶校验码也是一种校验码,它用来检测数据传输过程中是否发生错误,是众多校验码中最为简单的一种。 顾名思义,它有两种校验方法:奇校…https://zhuanlan.zhihu.com/p/26509678


循环冗余码(传输出错则进行重传操作):

        发送端对发送数据进行多项式计算,并将得到的结果R(X)附在帧的后面。

        接收端对接收数据进行多项式计算得到结果R'(X),比对结果R(X)和R'(X)的一致性。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmVhdHIxY2Uu,size_20,color_FFFFFF,t_70,g_se,x_16

        通过循环冗余码可以保证数据传输的正确性和完整性。

CRC校验原理及步骤_夏夕阳的博客-CSDN博客_crc校验什么是CRC校验?CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。CRC校验原理:其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要https://blog.csdn.net/d_leo/article/details/73572373        CRC校验码计算的实质二进制下的小学除法,不过减法运算变成了异或运算。


海明码(利用奇偶性来检错和纠错): 

  1. 海明码只能检测出2位错,纠1位错。
  2. 海明码默认进行偶校验(除非特殊说明使用奇校验)。
  3. 海明码是一串由0和1组成的序列。

海明码的计算过程(以偶校验 01101001 为例):

        1.确定校验码的位数k

        01101001共有8位,所以位数n=8。

        校验码位数k与原数据位数n的关系为:gif.latex?2%5E%7Bk%7D-1%5Cgeq%20n+k

        将k=1,2,3,4,5等代入计算,就求得不等式的最小的满足者k=4。

        (2^k:能指出的位数(指出第几位错误)       n+k+1:海明码总共的位数(加上校验位(校验位也可能出错)))

        2.确定校验码以及原数据的位置

        海明码位数 = 原数据位数 + 校验码位数 = 8 + 4 = 12        列出下表:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmVhdHIxY2Uu,size_20,color_FFFFFF,t_70,g_se,x_16

        校验码求解: 校验码 = 与它相关的所有数据码的异或结果
与它相关: 以求解P1为例: P1在 gif.latex?2%5E%7B0%7D 位

那么有 第3位: gif.latex?3%20%3D%202%5E%7B1%7D+2%5E%7B0%7D     第5位:  gif.latex?5%20%3D%202%5E%7B2%7D%20+%202%5E%7B0%7D             第7位:gif.latex?7%20%3D%202%5E%7B2%7D%20+%202%5E%7B1%7D%20+%202%5E%7B0%7D

            第9位: gif.latex?9%20%3D%202%5E%7B3%7D%20+%202%5E%7B0%7D     第11位:gif.latex?11%20%3D%202%5E%7B3%7D%20+%202%5E%7B1%7D%20+%202%5E%7B0%7D   (就是看二进制的对应位置是否为1)

得到相关位置后,找到对应位置的数据码,即 P1⊕1⊕0⊕1⊕0⊕1 = 0  ==> P1 = 1

        这里解释一下 P1⊕1⊕0⊕1⊕0⊕1 = 0   题目是说偶校验 所以应该有偶数个1。

计算出所有的校验码后,将0/1写入海明码对应位置,即可得到海明码:011001001101

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmVhdHIxY2Uu,size_20,color_FFFFFF,t_70,g_se,x_16

海明码的校验

当所有校验位都为0时,说明海明码无误。
看上述例子可知,海明码有误,则校验纠错的过程为:
  将所有位置形如xxx1, xx1x, x1xx, 1xxx的数据分别异或。
  xxx1: 1⊕1⊕0⊕1⊕0⊕0 = 1
  xx1x: 0⊕1⊕0⊕1⊕1⊕0 = 0
  x1xx: 1⊕0⊕0⊕1⊕0 = 1
  1xxx: 0⊕0⊕1⊕0⊕0 = 0
 那么出错数据的位置为0101,即第五位,这样便可得到出错的位置。

接着我们将第五位取反,重新计算校验码,发现全为0,说明校验成功。

假设同时有两个位置出错,假设位置为1011对应数据由1变成0,位置为1001对应数据由0变成1,则推出校验纠错过程:
  xxx1: 1⊕1⊕0⊕1⊕1⊕0 = 0
  xx1x: 0⊕1⊕0⊕1⊕1⊕0 = 1
  x1xx: 1⊕0⊕0⊕1⊕0 = 0
  1xxx: 0⊕1⊕1⊕0⊕0 = 0
那么校算出的错误位是0010,即第2位;但实际上是第9位和第11位都有错误,说明海明码不能校验两位以上出错的数据,即海明码只能检测并纠正一位错误。

海明距离:两个码字的对应比特取值不同的比特数称为这两个码字的海明距离。 (有几位不同)

        海明距离与海明码的关系: 如果两个码字的海明距离为d,则需要d个单比特错就可以把一个码字转换成另一个码字。(就是替换d个字符可以得到一个新的字符串)

        为了检测d个错误,需要一个海明距离为 d+1 的编码方案。

(因为在距离为d+1的检验码中,只改变d位的值,不可能产生另一个合法码。如奇偶校验码,海明距离为2,能查出单个错。

        为了纠正d个错误,需要一个海明距离为 2d+1 的编码方案。

(因为在这样的编码方案中,合法码字之间的距离足够远,因而即使发生了d位变化,则还是原来的码字离它最近,从而可以确定原来的码字,达到纠错的目的。


差错控制机制:

        通过上面可知,接收端通过检错码来检查数据是否出错。当发现错误时,通常采用自动请求重发ARQ方法来纠正。

ARQ纠错的工作过程如下:

(1)发送端用校验码编码器为数据生成校验字段,并将数据与校验字段一起发送到接收端。为了适应ARQ的需求,发送端要缓存发送数据的副本。

(2)接收端通过校验码译码器判断数据传输中是否出错。如果数据传输正确,接收端向发送端发送ACK(传输正确)。发送端接收到ACK之后,不再保留发送数据的副本。如果数据传输错误.接收端向发送端发送NAK(传输错误)。

(3)发送端接收到NAK之后,将保留的数据副本重新发送,直至接收端正确接收为止。ARQ规定了最大重发次数。如果超过最大重发次数,接收端仍无法正确接收,那么发送端停止重发,并向高层协议报告出错信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值