计算机网络之数据链路层
Posted blknemo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络之数据链路层相关的知识,希望对你有一定的参考价值。
功能
数据链路层主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。(物理上肯定有一些差错,但是可以通过修改,改为逻辑上无差错)
任务:负责将数据报通过链路从一个节点传输到相邻的节点
- 三个基本功能:
- 封装成帧
- 透明传输
- 差错检测
封装成帧
基本概念:
将一段数据的前后分别添加首部和尾部,就构成了帧。注意:首部和尾部中含有很多控制信息(如 检验序列等),它们的一个重要作用是确定帧的界限,即帧定界。
透明传输
如果在数据中心恰好出现与帧定界符相同的比特组合,会导致帧提前结束而丢弃后面的数据。所以引入了“透明传输”。
- 基本概念:
透明传输就是不管所传的数据是什么样的比特组合(透明的,看不见里面的数据),都应当能在链路上传送。 - 基本方法:
- 字符计数法:
在帧头部使用一个计数字段来标明帧内字符数。 - 字符填充的首尾定界符法:
- 在特殊字符前面填充一个转义字符(DLE)来加以区分,以实现数据的透明传输。接收方收到转义字符后,就知道其后面紧跟的是数据信息,而不是控制信息。
- 数据中有可能出现转义字符,所以要在转义字符前再插入一个转义字符。
比特填充的首尾标志法:
由于使用01111110(6个1)来标志一帧的开始和结束,故发送方只要在数据中遇到5个连续的“1”时,自动在其后插入一个“0”;接收方每收到5个连续的“1”时,自动删除后面紧跟的“0”,以恢复原信息。比特填充法很容易由硬件来实现,性能优于字符填充法。
- 违规编码法:
- 在物理层进行比特编码时,通常采用违规编码法。
- 例如,曼彻斯特编码方法中“高-高”电平对和“低-低”电平对在数据比特中是违规的(即 没有采用)。可以借用这些违规编码序列来定界帧的起始和终止。
- 局域网IEEE 802标准就采用了这种方法
适用性:
只适用于采用冗余编码的特殊编码环境冗余码是一种所用符号数或信号码元数比表示信息所必需的数目多的代码
常用的组帧方法是比特填充法和违规编码法。
- 字符计数法:
差错控制(检测)
通常利用编码技术进行差错控制,主要有两类:自动重传请求(Automatic Retransmission reQuest, ARQ)和前向纠错(Forward Error Correction, FEC)
在ARQ方式中,接收端检测出差错时,就设法通知发送端重发,直到接收到正确的码字为止。
在FEC方式中,接收端不但能发现差错,而且能确定二进制数码的错误位置,从而加以纠正。
因此,差错控制又可分为检错编码(Error-Detecting Code)和纠错编码(Error-Crrecting Code)
检错编码
检错编码都采用冗余编码技术,其核心思想是在有效数据(信息位)被发送前,先按某种关系附加一定的冗余位,构成一个符合某一规则的码字后再发送。
奇偶校验码:
奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码
- 由n-1位信息元和1位校验元组成。
- 奇(偶)校验码:使n位码字中“1”的个数为奇(偶)数,从而在一个比特改变后检错。
循环冗余码(CRC):
循环冗余码(Cyclic Redundancy Code, CRC)又称多项式码。(1101为\(x^3+x^2+1\))
步骤:
假设一个帧有m位,其对应的多项式为M(x),发送方和接收方事先商定一个r+1位除数,欲求出一个r位的帧检验序列(冗余码)。
- 加0。在帧的低位端加上r个0。
- 模2除(异或运算)。用除数(r+1位)除(m+r)位的帧,可以得出r位的余数R(即为冗余码)
发送数据:数据帧+冗余码(组合起来 不是加减)
在数据后面添加上的冗余码称为帧检验序列(Frame Check Sequence, FCS),CRC与FCS并不等同,FCS可以用CRC这种方法得出,当CRC并非是获得FCS的唯一方法。
检验:
相除余数为0,则没有差错,就接受。注意:仅用CRC差错检测技术只能做到无差错接受(即 接受的帧非常接近于1的概率没有产生差错)(有差错的帧就丢弃而不接受)
要做到“可靠传输”(即 发送什么就收到什么)就必须再加上确认和重传机制。
纠错编码
在数据通信的过程中,解决差错问题的一种方法是在每个要发送的数据块上附加足够的冗余信息,使接收方能够推导出发送方实际送出的应该是什么样比特串。
- 海明码:能发现双比特错,但只能纠正单比特错。
以上是关于计算机网络之数据链路层的主要内容,如果未能解决你的问题,请参考以下文章