考点二:数据链路层的基本问题

考点二:数据链路层的基本问题

基本术语:

①帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始与终止。

②帧定界:在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧,首部和尾部的一个重要作用就是进行帧定界(确定帧的界限)。

③透明传输:如果在数据中恰好出现与帧定界符相同的比特组合,不能被误认为“传输结束”而丢弃后面的数据,这就需要采取有效的措施解决这个问题,即透明传输。更确切地说,透明传输就是不管所传数据是什么样的比特组合,都应当能在链路上传送,其中字节填充或字符填充是最常用的透明传输技术,接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

1.帧定界和透明传输

封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。图3-2表示用帧首部和帧尾部封装成帧的一般概念。

图3-2 帧首部和帧尾部封装成帧

在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧,一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是进行帧定界(确定帧的界限)。在发送帧时,是从帧首部开始发送的。具体的帧定界方法如下:

(1)字符计数法。这种帧同步方法是一种面向字节的同步规程,是利用帧头部中的一个域来指定该帧中的字符数,以一个特殊字符表征一帧的起始,并以一个专门字段来标明帧内的字符数,如图3-3(a)所示。这种方法最大的问题在于如果标识帧大小的字段出错,即失去了帧边界划分的依据,带来几乎所有数据的错误。如图3-3(b)所示,当出现错误时,可能数据都出现错误。

图3-3 字符计数法

图3-3 字符计数法(续)

(2)字符填充的首尾定界符法。这种数据帧的帧头填充一个转义控制字符(Data Link Escape-Start of Text,DLE-STX),在帧的结尾则以DLE-ETX(Data Link Escape-End of Text)结束。为了实现透明传输,若帧的数据中出现DLE字符,发送方则插入一个“DLE”字符,接收方会删除这个DLE字符。

(3)比特填充的首尾定界符法。比特填充的首尾界定符法是以一组特定的比特模式来标志一帧的起始与终止。它的工作原理是在每帧的开始和结束位置都加上一个特殊的位模式,在数据链路层中一般使用01111110作为帧的起始和终止标志。但是当发送方发送的数据中存在5个“1”时,为了不使数据中出现的比特流01111110被误判为帧的结尾标志,自动在5个“1” 后填充一个“0”。在接收方,而当收到连续5个“1”,并且后面的位是“0”时,自动删除该“0”位。比特填充一般由硬件来实现。如图3-4所示,图3-4(a)中是原始数据,图3-4(b)中是填充0后的数据,自动在5个“1”后填充一个“0”;图3-4(c)是删除填充的0收到的数据,当收到连续5个“1”,并且后面的位是“0”时,自动删除该“0”位。

图3-4 比特填充的首尾定界符法

(4)违规编码法。该方法在物理层采用特定的比特编码方法时采用。例如,曼彻斯特编码方法,将数据比特“1”编码成“高-低”电平对,将数据比特“0”编码成“低-高”电平对。而“高-高”电平对和“低-低”电平对在数据比特中是违规的。可以借用这些违规编码序列来界定帧的起始与终止。

2.帧同步

帧同步是指接收方应当能从接收到的二进制比特流中区分出帧的起始与终止。计算机网络是让独立的计算机协同工作,就需要确定帧的起始和终止位置,帧同步就是如何确定帧首部和尾部的问题。例如,在PPP通信规程中,用标识位F(01111110)来标识帧的开始和结束。在通信过程中,当检测到帧标识F即认为是帧的开始,再次检测到帧标识F即表示帧的结束。

3.差错控制

在传输过程中可能会产生比特差错,1可能会变成0,而0也可能变成1。在一段时间内,传输错误的比特占所传输比特总数的比称为误码率。误码率与信噪比有很大的关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。数据链路层的差错控制的概念可以定义为两个层次:一个是比特错误;另一个是帧错误,包括丢失、重复、帧乱序等。数据链路层通常采用循环冗余校验(Cyclic Redundancy Check,CRC)方式发现错误,它能以非常接近于1的概率认为帧在传输过程中没有产生比特差错。注意,在考研中CRC只能检测(发现)比特错误,且一般不能提供纠错。

循环冗余码又称为多项式码,任何一个由二进制数位串组成的代码都可以和一个只含有0和1两个系数的多项式建立一一对应的关系。一个k位帧可以看作从Xk-1到X0的k次多项式的系数序列,这个多项式的阶数为k-1,高位是Xk-1的系数,下一位是Xk-2的系数,依次类推。给定一个m位的帧或报文,发送器生成一个r位的序列,称为帧检验序列(Frame Check Sequence,FCS)。这样所形成的帧将由m+r位组成。发送方和接收方事先商定一个多项式G(x)(最高位和最低位必须为1),使这个带检验码的帧刚好能被这个预先确定的多项式G(x)整除。接收方用相同的多项式去除收到的帧,如果无余数,就认为无差错。

假设一个帧有m位,其对应的多项式为M(x),则计算冗余码的步骤如下。

(1)加0。假设G(x)的阶为r。在帧的低位端加上r个0。

(2)模2除法。利用模2除法,用G(x)对应的数据串去除(1)中计算出的数据串,得到的余数即为冗余码(共r位,前面的0不可省略)。多项式以2为模运算,按照模2运算规则,加法不进位,减法不借位,刚好是异或操作。乘除法类似于二进制的运算,只是在做加减法时按模2规则进行。

设G(x)=1101(r=3),待传送数据M=101001(m=6),经模2除法运算后的结果是:商为110101(这个商没什么用),余数为001,所以发送出去的数据为101001001(2rM+FCS),共有m+r位。循环冗余码的运算过程如图3-5所示。

图3-5 循环冗余码的运算过程

政哥应试提醒:结合出题规律和知识点的情况,成帧方法和透明传输是考查的重点,大家需要掌握好不同的成帧方法的特点,结合不同的协议,如PPP和HDLC,区分和掌握不同的透明传输的方法。另外,CRC在自主命题院校中,偶有考查。

难度系数:★

牛刀小试

1.完成将传输比特流划分成帧的处理层是( )。

A.物理层 B.数据链路层 C.传输层  D.网络层

2.一个采用字符计数法的数据链路层的字节流如表3-1所示。

表3-1 字节流

那么这个字节流包含了( )个帧。

A.1 B.2 C.3 D.4

3.在数据链路层的同步功能中,若以一组特定的比特模式来标记一帧的起始与终止,则称这种帧同步法为( )。

A.字符计数法 B.字符填充法 C.比特填充法 D.违规编码法

4.在CRC码计算中,可以将一个二进制位串与一个只含有0或1两个系数的一元多项式建立对应关系。例如,与位串101101对应的多项式为( )。

A.x6+x4+x3+1 B.x5+x3+x2+1 C.x5+x3+x3+1 D.x6+x4+x4+1

5.CRC校验接收端发现差错后采取的措施是( )。

A.自动纠错 B.报告上层协议 C.反馈重发 D.重新生成原始数据

牛刀小试解析

1.B 解析 本题考查数据链路层的成帧功能。数据链路层成帧这个性质应该要牢记。一般说到帧这个概念,都是数据链路层的概念。

2.D 解析 本题考查字符统计法组帧方式。我们从字符计数法的字节流分离出各个帧,如表3-2所示。

表3-2 分离出各个帧

在表3-2中,用阴影部分表示帧的长度。而且,阴影部分表示帧的第一个字节。例如,阴影是4的,表示第一个帧的长度是4。而且,4是第一个字节,所以后面还有3个字节。如此计算下去,得到了上面表格的划分。所以,这个字节流包含了4个帧。

故而,选择D项。

值得注意的是,字符计数法若是字符计数错误,可能导致不止一帧出错。如表3-3所示的正确帧。

表3-3 正确帧

若是字符计数出错,如表3-4所示。

表3-4 帧出错

可以看到,7变成4之后,只有第一个帧对了,后面的帧都错了。

3.C 解析 本题考查比特填充法的基本概念。常用的帧同步方法有:字符计数法、使用字符填充的首尾定界符法、使用比特填充的首尾定界符法、违规编码法。下面介绍4种方法。

(1)字符计数法。这种方法首先用一个特殊字段来表示一帧的开始,然后使用一个字段来标明本帧内的字节数。当目标机的数据链路层读到字符计数值时,就知道了该字节后面跟随的字符数,从而可确定帧结束的位置。

(2)使用字符填充的首尾定界符法。这种方法用一些特定的字符来定界一帧的开始和结束。为了不将信息位中出现的特殊字符被误码判为帧的首尾定界符,可以在前面填充一个转义符(DLE)来区分。

(3)使用比特填充的首尾定界符法。这种方法用一组特定的比特模式(如01111110)来标志一帧的开始和结束(图3-6)。为了不使信息位中出现的该特定模式被误判为帧的首尾标志,可以采用比特填充的方法来解决。

图3-6 标志一帧的开头和结束

故而,本题选择C项。

(4)违规编码法。该方法在物理层采用特定的比特编码方法时采用。例如,采用曼彻斯特编码方法时,将数据比特1编码成高-低电平对,而将数据比特0编码成低-高电平对。高-高或低-低电平对在数据比特的编码中都是违规的,可以借用这些违规编码的序列来定界帧的开始和结束。

4.B 解析 本题考查CRC编码的多项式构造。这个题目算是比较简单的,我们用一个简单的“与运算”方法,用多项式系数a5a4a3a2a1a0=000000与位串101101进行“与运算”,把结果作为新的多项式系数,即a5a4a3a2a1a0=101101。故而,其对应的多项式为x5+x3+x2+1。

5.C 解析 发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端将收到的信息按发送端形成循环冗余码的算法进行校验,若有错,将会丢弃收到的数据,需要重发。