(四)计算机网络——数据链路层(上)

第三章 数据链路层

3.1数据链路层的功能

​ 数据链路层在物理层提供服务的基础上向网络层提供服务,最主要的作用就是加强物理层传输原始的比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使得对网络层表现为一条无差错的链路。数据链路层的功能如下:

3.1.1为网络层提供服务

​ 数据链路层的功能是将源机器中来自网络层的数据传输到目标机器中的网络层中,数据链路层提供的服务如下:

  • 无确认的无连接服务。发送数据时不需要建立链路连接,目的机器收到数据帧时不需要发回确认。对于丢失的帧,数据链路层不负责重新发送而交给上层处理,适用于实时通信或者误码率较低的通信信道,如以太网。
  • 有确认的无连接服务。发送数据时不需要建立链路连接,目的机器收到数据帧时必须发回确认。若在规定时间内未能收到确认帧,就重新发送丢失的帧,提高传输的可靠性,适用于误码率较高的通信信道,如无线通信。
  • 有确认的面向连接服务。帧传输过程分为三个阶段,建立连接,传输帧,释放数据帧。目的机器在收到之后每一帧都会发送确认,原机器收到确认后才能发送下一帧,服务的可靠性是最高的,适用于通信要求(实时性,可靠性)较高的场所。
3.1.2链路管理

​ 数据链路层连接的建立,维持和释放过程称为链路管理,主要用于面向连接的服务。

​ 在多个站点共享同一物理信道的情况下,如何在要求通信的站点间分配和管理信道也是属于数据链路层管理的范畴。

3.1.3帧定界,帧同步与透明传输

​ 两台主机之间传输信息的时候,必须将网络层的分组封装成帧,以帧的格式进行传输。在一段数据中添加首部和尾部就组成了帧,首部和尾部有很多控制信息。主要作用就是确定帧的界限,即帧定界。

​ 透明传输:不管传输什么样的比特组合,都应该在链路上传输,这样才能保证数据中若发送的比特组合和控制信息相同,使得接受方不会认为这是一种控制信息。

​ 透明的含义是:对外透明,只负责将数据从发送方传输到接受方,同时保证传输的质量,而不对传输的业务进行处理。

​ 透明传输不用关心下层协议的传输,类似于寄信,你寄一件快递,把快递交给快递含,你不需要知道途中经过了那些站点,只需要考虑最后是否到达了目的地址即可。

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

​ 为了提高帧传输的效率,应该使帧的数据部分的长度尽可能大于首部和尾部的长度,但每种数据链路层协议都规定了帧的数据部分的长度上限——最大传输单元(MTU)。

3.1.4流量控制

​ 由于收发双方各自的工作效率和缓存空间的差异,可能出现发送方的发送能力大于接收方的接受能力,若不限制发送方的发送速率,可能会造成帧丢失的情况。因此流量控制实际上就是限制发送方的数据流量,使其发送速率不超过接收方的接收能力。

​ 流量控制对于数据链路层来说,控制的是相邻两个结点之间数据链路上的流量,对于运输层来说,控制的是从源端到目的端之间的流量。

​ 注意:在OSI体系中数据链路层具有流量控制的功能,在TCP/IP中,流量控制功能被转移到了传输层。

3.1.5差错控制

​ 由于信道噪声等各种原因,帧在传输的过程中可能出现很多的错误。

​ 错位帧通常采用CRC方式发现位错(循环冗余校验),通过自动重传请求方式来重传出错的帧,

​ 帧丢失,错位,失序等通常在数据链路层引入定时器和编号的机制,能保证每一帧最终都能有且仅有一次正确的交付给目的结点。

3.2组帧

​ 数据链路层在出错的时候只重发出错的帧,从而提高了效率,组帧主要解决的是帧定界,帧同步,透明传输等问题。

​ 分组(IP数据报)仅仅是包含在帧中的数据部分,不需要加尾部来界定。以下四种组帧方式:

3.2.1字符计数法

​ 在帧头部使用一个计数字段来表明帧内的字符数,从而确定帧的位置。(计数字符包含一个字节)

​ 这种方法最大的问题在于如果计数字段出错,就会失去了帧边界划分的依据,那么接收方就没有办法判断所传输帧的结束位和下一帧的开始位,首发双方将会失去帧同步。

在这里插入图片描述

3.2.2字符填充的首尾定界符法

​ 字符填充法使用特定字符来定界一帧的开始和结束,控制字符SOH放在帧的最前面,表示帧的首部开始,EOT表示帧的结束,为了使信息位中出现的特殊字符不被误判成为帧的首位定界符,在特殊字符的前面填充一个转义字符(ESC)来加以区分。以此来实现数据的透明传输。

​ 若转义字符ESC中也出现在数据中,在转移字符的前面再插入一个转义字符。

在这里插入图片描述

3.2.3零比特填充的首位标志法

​ 允许数字帧中包含任意个数的比特,也允许每个字符的编码包含任意个数的比特,它使用的是特定的比特模式。它使用特定的比特模式,即01111110来标志一帧的开始和结束。为了不使信息位中出现的比特流被误判成帧的首位标志,发送方的数据链路层在信息位中遇到5个连续的”1“时,将自动在其后面插入一个”0“,接收方则是相反,每收到连续5个”1“时,自动删除后面紧跟的”0“,以恢复原信息。

​ 0比特填充法很容易由硬件来实现,性能优于字符填充法。

3.2.4违规编码法

​ 物理层进行比特编码时,通常采用违规编码法。局域网IEEE802采用的是违规编码法,曼彻斯特编码就是采用的违规编码法,采用一对高低电平对进行编码。

​ 不需要采用任何填充技术,就能够实现数据传输的透明性。

​ 由于字节技术法中计数字节得分脆弱性和字符填充法的复杂性与不兼容性,目前使用较多的组帧方式是比特填充法和违规编码法。

3.3差错控制

​ 差错控制分为检错编码和纠错编码

3.3.1检错编码

​ 这里具体看计算机组成原理,那里会更加详细。

  • 奇偶校验

    ​ 由n-1位信息元和1位校验元组成,如果是奇校验码,在附加一个校验元后,”1“的个数为奇数,如果是偶校验,”1“的个数为偶数。

    ​ 它只能检测奇数位的出错情况,并不知道哪些位错了,不能发现偶数位的出错情况。

  • 循环冗余码

    ​ CRC校验,具有纠错功能,只是数据链路层仅使用它的检错功能,检测到帧出错则直接丢弃。

3.3.2纠错编码

​ 海明码:

3.4流量控制与可靠传输机制

3.4.1流量控制,可靠传输与滑动窗口机制

​ 流量控制是对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每一个帧。

​ 流量控制的基本方法是由接收方控制发送方的发送速率,常见的方式有两种:停止—等待协议和滑动窗口协议。

1.停止-等待协议

​ 发送方每发送一帧,都要等待接收方的应答信号,之后才能发动下一帧,接收方每接收一帧,都有一个反馈信号,表示可以接收下一帧,如果接收方不反馈应答信号,那么发送方必须一致等待。每次只允许发送一帧,然后就陷入等待接收方确认信息中,因而传输效率比较慢。

2.滑动窗口协议

​ 在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口。同时接收方也会维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,而发送窗口用来对发送方进行流量控制,发送窗口的大小WT代表还未收到对方确认信息的情况下发送方最多还可以发送对少个数据帧。在接收方,只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外,则就会丢弃。

​ 滑动窗口协议特性:

(1)只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才一定)向前滑动。

(2)停止—等待协议,后退N帧协议,选择重传协议的区别:

​ 停止—等待协议:发送窗口大小 = 1 ,接收窗口大小 = 1;

​ 后退N帧协议:发送窗口大小 > 1, 接收窗口大小 = 1;

​ 选择重传协议:发送窗口大小 > 1,接收窗口大小 > 1;

(3)接收窗口的大小为1 时,可保证帧的有序接收。

(4)数据链路层的滑动窗口协议中,传输的大小是固定的。

3.可靠传输机制

​ 数据链路层的可靠传输机制通常是使用确认和超时重传两种机制来完成的。确认是一种无数据的控制帧(可以理解为只发送一个控制信息),这种帧可以让发送方知道那些内容可以被正确的接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认

​ 超时重传是指发送方在发送某个数据帧后就将开启一个计时器,在一定的时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。

​ 自动重传请求通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来的差错的方法之一。

​ 自动重传请求分为三种:

​ 停止—等待,后退N帧,选择重传,后两种协议是滑动窗口技术与请求重发技术的结合,又称为连续ARQ协议。

​ 现有的实际有线网络中的数据链路层很少采用可靠传输。

3.4.2单帧滑动窗口与停止-等待协议

​ 在停止 - 等待协议中除了数据帧的丢失外,还可能出现以下两种差错:

​ (1)到达目的站的帧可能已经被破坏,这个时候接收端利用差错检测技术,简单的将该数据帧丢弃。这时候接收方未接收到这个帧,此时就利用超时重传协议,发送方继续发送,直到接收方收到该帧位置。

​ (2)另一种就是数据帧正确,确认帧被破坏,此时接收方已收到正确的数据帧,但是发送方收不到确认帧,因此发送方会重传已被接收的数据帧,接收方收到同样的数据帧时会丢弃该帧,并重传一个确认帧。

​ 连续出现相同发送序号的数据帧时,表明发送端进行了超时重传。

​ 连续出现相同序号的确认帧时,表明接收端收到了重复帧。

​ 因此发送端和接收端出现了一个帧缓冲区。

在这里插入图片描述

3.4.3多帧滑动窗口与后退N帧协议(GBN)

​ 在后退N帧协议中,发送方无须在收到上一个帧的ACk后才能开始发送下一帧,而是可以连续发送帧,当接收方检测出失序的信息帧后,或者说是N个帧之前的一个帧还未收到确认信息,则要求发送方重新发送这个帧序号之后的其余的帧。

​ GBN协议还要求接收端不一定没收到一个正确的数据帧就必须立刻发回一个确认帧,而可以在连续收到多个正确的数据帧后,才对最后一个数据帧发送确认信息,或者就是进行捎带确认

​ 信道传输质量很差导致误码率较大时,后退N帧协议不一定优于停止-等待协议。

GBN协议的工作原理:对出错数据帧的处理

3.4.4多帧滑动窗口与选择重传协议(SR)

​ 为了进一步提高信道的利用率,可以设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便发送序号不连续但是仍然处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并交给主机。这就是选择重传ARQ协议。

​ 在选择重传协议中,每个发送缓冲区对应到一个计时器,当计时器超时时,缓冲区的帧就会重传。该协议使用了比上述其他协议更加有效的差错处理策略,一旦接收方怀疑帧出错,就会发送一个否定帧NAK给发送方,要求发送方对NAK中指定的帧进行重传。

​ 选择重传协议的接收窗口和发送窗口的尺寸都大于1,一次可以发送或接收多个帧。在选择重传协议中,接收窗口和发送窗口大小是相同的(发送窗口大于接收窗口会导致溢出,发送窗口小于接收窗口的话就没有意义),且最大值都为序号范围的一半。

​ 缓冲区的数目等于窗口的大小,而不是序号数目。

​ 信道效率:称为信道利用率,信道效率是对发送方而言的,是指发送方在一个发送周期的时间内,有效的发送数据所需要的时间占整个发送在周期的比率。

​ 发送方从开始发送数据到收到的第一个确认帧为止,称为一个发送周期,设为T,发送方在这个周期内共发送L比特的数据,发送方的数据传输速率为C,则发送方用于发送有效数据的时间为L/C,在这种情况下,信道的利用率为(L/C)/T

​ 信道吞吐量 = 信道利用率 X 发送方的发送速率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值