【计算机网路(考研版)】第三站:数据链路层(一)

目录

一、数据链路层的功能

1.为网络层提供服务

2.数据链路层的简单模型

二、数据链路层的基本问题

1.帧定界和透明传输

2.帧同步

3.差错控制

三、流量控制

1.流量控制与滑动窗口机制

2.滑动窗口的具体实现

3.发送缓存和接收缓存

4.最大信道利用率计算

5.最大带宽计算

6.流量控制总结


一、数据链路层的功能

从 5层模型看,数据链路层的上层是网络层,下层是物理层,从功能上看,要起到承上启下的作用。对上而言,数据链路层要给网络层提供服务:对下来说,数据链路层要解决些比较现实的问题,如确定数据边界、发送方和接收方的流量控制,这些是物理层没有提供的。

1.为网络层提供服务

 对网络层而言,数据链路层的基本任务是将源机器中来自网络层的数据传输到目标机器的网络层,也就是数据链路层的功能是为网络层提供服务,对应的服务有以下几种。

(1)无确认的无连接服务。发送方发送数据帧时不需要先建立链路连接,目的机器收到数据帧时无须发回确认,对出错的帧,数据链路层交给上层处理。该服务的性能最好,但是服务可靠性最差。这个类似男生通过微信向女生用7种语言表白,但是女生不回复收到了表白

(2)有确认的无连接服务。发送方发送数据帧时不需要先建立链路连接,但接收方收到数据帧时必须发回确认。发送方在所规定的时间内没有收到确认信号,就重传丢失的帧,以提高传输的可靠性。这个类似男生通过微信向女生用7种语言表白,但是女生回复收到了表白。

(3)有确认的面向连接服务。顿传输过程分为3 个阶段 : 建立数据链路、传输、释放数据链路。接收方对收到的每一帧都要给出确认,发送方收到确认后才能发送下一个,因而该服务的可靠性最高,但是该服务的性能最差(比较慢 )。这个类似男生通过电话向女生用其中七种语言表白,首先需要接通电话,当然,女生收到了会回复表白

2.数据链路层的简单模型

数据链路层的简单模型如图所示,数据链路层把网络层交下来的数据构成发送到链路上,以及把接收到的帧中的数据取出并上交给网络层,注意,数据链路层传送的是帧。最主要的服务是将数据从源机器的网络层传输到目标机器的网络层,在源机器的网络层有一个实体(称为进程),它将一些比特交给数据链路层,要求传输到目标机器。数据链路层将这些比特传输给目标机器,然后封装成帧,再进一步交付给网络层,实际的传输过程则是沿着图a所示的路径进行的,但很容易将这个过程想象成两个数据链路层的进程使用一个数据链路协议进行通信。站在分层的角度看,数据链路层不必考虑物理层如何实现比特传输的细节,我们还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方,如图 b 所示。数据链路层协议有许多种,但有 4 个基本问题则是共同的,分别是:封装成帧、透明传输和差错检测以及流量控制

 

二、数据链路层的基本问题

基本术语:
        ①帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始与终止。
        ②帧定界:在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧.
首部和尾部的一个重要作用就是进行帧定界(确定帧的界限 )。
        ③透明传输:如果在数据中恰好出现与帧定界符相同的比特组合,不能被误认为“传输结束”而丢弃后面的数据,这就需要采取有效的措施解决这个问题,即透明传输。更确切地说.透明传输就是不管所传数据是什么样的比特组合,都应当能在链路上传送,其中字节填充或字符填充是最常用的透明传输技术,接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

1.帧定界和透明传输

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

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

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

 

(2)字符填充的首尾定界符法。这种数据的顿头填充一个转义控制字符 (Data LinkStart of Text,DLE-STX),在帧的结尾则以DLE-ETX (Data Link Escape-EndEscape -of Text)结束。为了实现透明传输,若帧的数据中出现 DLE 字符,发送方则插入一个“DLE”字符,接收方会删除这个 DLE 字符。
(3)比特填充的首尾定界符法。比特填充的首尾界定符法是以一组特定的比特模式来标志一帧的起始与终止。它的工作原理是在每一帧的开始和结束位置都加上一个特殊的位模式,在数据链路层中一般使用 01111110 作为的起始和终止标志。但是当发送方发送的数据中存在5个“1”时,为了不使数据中出现的比特流01111110被误判为顿的结尾标志,自动在5个“1后填充一个“0”。在接收方,而当收到连续 5个“1”,并且后面的位是“0”时,自动删除该“0”位。比特填充一般由硬件来实现。如图所示,图 (a) 中是原始数据,图(b)中是填充0后的数据,自动在 5个“1”后填充一个“0”;图 (c)是删除填充的0收到的数据,当收到连续5个“1”,并且后面的位是“0”时,自动删除该“0”位。

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

2.帧同步

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

3.差错控制

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

CRC只能发现帧内部的错误,不能发现帧丢失,重复乱序等问题,所以他是不可靠的

循环冗余码又称为多项式码,任何一个由二进制数位串组成的代码都可以和一个只含有0和1两个系数的多项式建立一一对应的关系。一个k 位帧可以看作是从 X(k-1)= 到X(0)的k 次多项式的系数序列,这个多项式的阶数为 k-1,高位是 X(k-1) 的系数,下一位是X(k-2)。的系数,依次类推。给定一个m位的帧或报文,发送器生成一个r位的序列,称为帧检验序列 (FrameCheck 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 位。循环冗余码的运算过程如图所示。

 注意:只需要会算这个余数即可

三、流量控制

由于收发双方各自的工作速率和缓存空间的差异,可能出现发送方发送能力大于接收方接收能力的现象,如果此时不对发送方的发送速率(链路上的信息流量)做适当的限制,前面来不及接收的帧将会被后面不断发送来的帧“淹没”,造成帧的丢失而出错。因此,流量控制就是使接收方直接限制发送方的数据流量,使其发送速率不致超过接收方的接收能力,是一种点(接收方) 对点(发送方) 的控制方式。

1.流量控制与滑动窗口机制

流量控制是让接收方来控制发送方发送数据的速度,便于接收方能够及时接收和处理数据,以免造成数据溢出和丢失。常见的方式有两种:停止- 等待协议和滑动窗口协议。

(1)停止-等待协议

所谓停止 -等待,是指接收方能够简单地通过停止发送确认的方式来阻止数据流的发送。发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧,接收方每接收一帧,都要反馈一个应答信号,表示可以接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待

(2)滑动窗口流量控制。

在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,发送窗口的大小W(t),代表在还没有收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。接收窗口的大小为W(r),用来表示接收方可以接收哪些数据帧。对接收方来说,只有当收到的数据帧的序号落入接收窗口内才允许将该数据帧收下,若接收到的数据帧落在接收窗口之外,则一律丢弃。滑动窗口有以下特性。

 

(3)重传机制。
超时重传是指发送方在发送某一个数据帧以后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。自动重传请求(Auto Repeat reQuest,ARQ),是指接收方请求发送方重传出错的数据来恢复出错的帧,是通信中用于处理信号传输差错的方法之一。传统的自动重传请求分为3 种,即停止一等待后退N顺(Go Back N)及选择性重传 (Selective Repeat)(Stop and Wait)、

2.滑动窗口的具体实现

(1)停止-等待滑动窗口协议

在停止 - 等待协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧。从窗口机制看,停止 -等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。在停止-等待协议中,除了数据顿丢失,还可能出现以下两种差错:

        第一种是接收方接收到的数据帧出现错误,当接收方通过数据校验方法检测到数据帧有错误,就不会发送确认帧。为了应对这种情况,源站配备了计时器。在一个帧发送之后,源站等待确认,如果计时器到时仍未收到确认,那么再次发送相同的帧,如此重复,直到该数据帧准确到达为止。

        第二种可能是数据帧正确而确认帧被破坏,此时接收方已经收到了正确的数据帧,但发送方收不到确认帧,因此发送方会重传已经被接收的数据帧,接收方收到同样的数据帧时会丢弃该帧,并重传一个该帧对应的确认帧。发送的帧交替地用 0 和  1来标识,其中用0表次初次的帧,用1表示重传的帧,相应地,肯定确认则分别用ACK(0),和ACK(1),来表示,当发送方收到 ACK(0),和 ACK(1),时,均表示数据被正确接收。

注意:后退N帧协议支持累计确认,且按收方一般采用累计确认的方式,即接收方对按序到达的最后一个分组发送确认,例如,发送方发送了 0、1、2、3、4、5 号,如果收到3的确认帧就表示编号为 0、1、2、3 的已接收。

3.发送缓存和接收缓存

按序到达目的没有被交付给主机的帧被放在接收缓存而不是接收窗口里。那些不是按序到达的且没有错误的帧一定是放在接收窗口里,因为这些帧不能直接给主机,而放在接收缓存的帧是要直接给主机的,缺少的收到后,再和接收窗口里的帧一起放到接收缓存。但是在考试中,往往把接收缓存默认当成接收窗口来对待。在考试中,接收缓存和接收窗口、发送缓存和发送窗口是同义词,大家注意就可以了。

4.最大信道利用率计算

 信道利用率指的是信道发送数据的时间占总时间的比例

5.最大带宽计算

6.流量控制总结


本节文章暂时先到这里

如果对你有帮助的话,一定要点赞加收藏哦!!!

想获得更多优质内容,一定要关注我哦!!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青色_忘川

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值