3. 数据链路层概述(1/4)

3.1 数据链路层概述

在这里插入图片描述

  • 数据链路层的三个重要问题(点对点的形式)

    • 封装成帧

      增加帧头和帧尾。

    • 差错检测

      使用帧尾作为检错码。例如以太网V2的MAC帧,帧尾为4字节的FCS。

    • 可靠传输

      尽管误码不可避免,但只要实现发送方发送什么,接收方就能收到什么,这个就称为可靠传输。

  • 使用广播信道的数据链路层

    还需要考虑,

    • 编址用于区分谁应该接收帧,谁不应该接收

    • 多主机发送的碰撞问题

      例如以太网的媒体接入控制协议CSMA/CD(载波监听多点接入/碰撞检测)。

  • 交换式局域网

    目前基本已经不使用总线式网络。

    • 交换机转发帧
  • 无线局域网

    无线局域网不可避免会共享信道。802.11局域网采用的媒体接入协议为CSMA/CA(载波监听多点接入/碰撞避免)。

3.2 封装成帧

数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

帧头和帧尾中包含重要的控制信息。

透明传输是指,数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

为了提高帧的传输效率,应当使帧的数据部分的长度尽量大。

最大传输单元MTU(Maximum Transfer Unit):考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限。

3.3 差错检测

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率

使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。

例如以太网V2的MAC帧的FCS,PPP帧的FCS。

  • 奇偶校验

    添加一位,使得整个数据(包含校验位)的“1”的个数为奇数(奇校验)或偶数(偶校验)。

    奇偶校验的漏检率较高,因此计算机网络的数据链路层一般不采用奇偶校验。

  • 循环冗余校验CRC

    收发双方约定好一个生成多项书G(x);

    发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;

    接收方通过生成多项式来计算收到的数据是否产生了误码。

    CRC算法要求生成多项式必须包含最低次项,即最终要有 “+1”。

检错码只能检测帧在传输过程中出现了差错,但是不能定位错误,因此无法纠正错误。

要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错,但纠错码的开销较大,在计算机网络中较少使用。

CRC有很好的检错能力,漏检率很低,虽然计算比较复杂,但是非常易于用硬件实现,因此被广泛应用于数据链路层。

计算机网络中,通常采用检错重传方式来纠正传输中的差错,或者直接丢弃检测到差错的帧,这取决于数据链路层向上提供的是可靠传输服务还是不可靠传输服务。

3.4 可靠传输与不可靠传输

如果接收方检出帧传输差错,那么根据数据链路层向上提供的服务类型,

  • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么都不做;

  • 可靠传输服务:想办法实现,发送端发送什么,接收方就收到什么。

3.4.1 可靠传输的基本概念

传输差错包含:

  • 比特差错

  • 分组丢失

  • 分组失序

  • 分组重复

分组丢失、分组失序和分组重复一般不出现在数据链路层,一般出现在其上层。

因此可靠传输服务不仅局限于数据链路层。

例如802.11无线局域网要求数据链路层实现可靠传输。以太网不要求数据链路层实现可靠传输。

TCP/IP四层架构体系中,IP向上层提供无连接、不可靠传输服务。

TCP向上层提供面向连接的可靠传输服务,UDP向上层提供无连接、不可靠传输服务。

可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。

下面介绍3种可靠传输的实现机制,这3种机制并不仅限于数据链路层,可以应用到各层协议中。

3.4.2 可靠传输的实现机制 - 停止-等待协议SW

发送分组数据,等待接收端返回ACK分组。那么发送端在收到ACK分组之前,不能删掉缓存中的分组数据。

接收方收到误码时,发送NAK分组,发送端收到这个NAK分组后,应该重传数据分组。

如果数据分组在发送过程中丢失,那么接收端就不会发送ACK分组,如何解决?
在这里插入图片描述
数据分组有可能丢失,那么确认分组也有可能丢失,但是接收端已经收到了第1个数据分组,在超时条件满足后,发送端仍然没有收到确认分组,就会重发这个数据分组,这就导致了接收端收到2个一样的数据分组,如何解决?给数据分组增加序号,因为停止-等待协议的特点,仅需1bit的序号就足够了。
在这里插入图片描述
如果确认分组路上延误了,导致发送端收到ACK的时间已经超过了超时时间,发送端就会重发数据分组DATA0,重发过程中,收到了迟到的确认分组,发送端发送新的数据分组DATA1。接收端收到重发的数据分组DATA0,又回复了一次确认分组,因此发送端会收到一次确认分组,此时发送端已经无法分辨这个确认分组是重发的DATA0的确认分组还是新的DATA1的确认分组。解决办法是给确认分组也增加1bit的编号。

综上,停等协议有如下注意事项,
在这里插入图片描述
停止等待协议的重传机制称为自动请求重传(Automatic Repeat reQuest, ARQ),指重传的请求是自动进行的,不需要接收方显式的请求发送方重传某个出错的分组。

停止等待协议的信道利用率

当往返时间RTT远大于数据帧发送时延Td时,例如卫星链路,信道利用率非常低。

若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。

为了克服停止等待协议信道利用率很低的缺点,就出现了后退N帧协议GBN和选择重传协议SR。

3.4.3 可靠传输的实现机制 - 回退N帧协议GBN

如果使用停止-等待协议,每发送一个数据分组,就要等待一个确认分组,这样信道利用率很低,如果是卫星链路,传播时延很长,信道利用率极低,碰上超时重传,信道利用率会进一步降低。

发送方可以在收到确认分组前,流水线式的连续发送数据分组,可提高信道利用率。
在这里插入图片描述
回退N帧协议在流水线发送的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数。

假设采用3个bit给分组编序号,即0-7;

发送方维持一个发送窗口,序号落在发送窗口内的数据分组可被连续发送,而不必等收到接收方的相应确认分组后再发送;

发送窗口的尺寸记为 W T W_T WT,取值范围为$ 1 < W_T <= 2^3-1 $,其中3为分组编号的bit数;

如果 W T = 1 W_T=1 WT=1就是停止等待协议,超过上限就会导致严重错误;

假设 W T = 5 W_T=5 WT=5,那么发送方的0-4号数据分组可以连续发送,而其余分组不允许发送;

对于接收方,接收窗口的尺寸 W R W_R WR只能为1,这一点同停止等待协议。

在这里插入图片描述

  • 无差错情况

    发送方发送了0-4号数据分组,经过互联网,到达了接收方,没有出现乱序和误码,接收方按序接收它们,每接收1个,接收窗口就向前滑动一个位置,并给发送方发送所接收分组的确认分组。

    0-4号确认分组经过互联网到达发送方,发送方每接收一个确认分组,发送窗口就向前滑动一个位置,这样就有新的序号落入发送窗口,发送方可以将收到确认分组的数据分组从缓存中删除了。

    • 累计确认

      使用回退N帧协议的接收方,可以采用累计确认的方式,即不一定对收到的每个数据分组都发送确认,而是可以在收到几个数据分组后,对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及之前的数据分组都已经正确接收。

      上图中的例子,接收方按序正确接收过程中,接收了了0-1号数据分组后,发送了ACK1,接收2-4号数据分组后,发送了ACK4。在确认分组传输过程中,ACK1丢失,ACK4正确到达发送方,发送方就可以直到序号4的数据分组及之前的数据分组都已经正确发送了。发送窗口可以直接滑动5个位置。

      这就是回退N帧协议的一个优点,即使确认分组丢失,也可能不必重传。

  • 有差错情况

    假设0-4号已经正确传输,现在发送方发送了5,6,7,0和1号数据分组。5号出错,接收方丢失该分组,而后续到达的4个分组与接收窗口中的序号不匹配,接收方同样不接收它们。并对先前最后一个接收的数据分组进行确认,即发送ACK4,每丢弃一个数据分组,就发送一个ACK4。

    这个例子中,尽管6,7,0,1正确到达接收方,但由于5号数据分组误码不被接收,它们也受到牵连而被丢弃,发送方还要重传这些数据分组,这就是所谓的Go-back N。
    在这里插入图片描述
    总结一下GBN,

在这里插入图片描述

3.4.4 可靠传输的实现机制 - 选择重传协议SR

GBN的接收窗口的尺寸只能为1,因此接收方只能按序接收正确到达的数据分组。

一个数据分组的误码就会导致其后多个数据分组不能被接收方按序接收而丢弃,尽管它们无乱序和误码,这就造成了发送方对这些数据分组的重传,显然是对通信资源的浪费。

为了进一步提高性能,可设法只重传出现误码的数据分组。扩大 W R W_R WR,以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再上交,这就是选择重传协议SR。

注意: SR协议为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认,而需要对每个正确接收的数据分组进行逐一确认。

举例如下,

发送窗口尺寸为4,接收窗口尺寸一般与发送窗口一致。发送方连续发送0-3号数据分组,经过互联网传输,2号丢失,接收方接收0和1号数据分组,分别发送确认分组,接收窗口滑动2个位置。接收方接收3号数据分组,发送3号确认分组,但是不能滑动接收窗口,因为3号数据分组是未按序到达的数据分组。

这些确认分组到达发送方,发送方每按序收到一个确认分组,发送窗口就滑动一个位置,本例中,发送方收到0号和1号确认分组,就向前滑动2个位置,那么新的数据分组4和5就会落入发送窗口,并发送出去。发送方可以将0号和1号从缓存中删除。发送方接收3号确认分组,但是发送窗口不能向前滑动,因为这是一个未按序到达的确认分组。发送方记录一下3号确认分组已收到,这样就不会超时重发3号数据分组。直到发送方针对2号数据分组的重传计时器超时,发送方重传2号。
在这里插入图片描述
发送窗口和接收窗口的尺寸问题,

在这里插入图片描述
SR协议工作原理的小结,

在这里插入图片描述
注意SR的窗口范围与GBN不同,GBN的范围是 1 < W T < = 2 n − 1 1 < W_T <= 2^n-1 1<WT<=2n1,而SR的范围是 1 < W T < = 2 n − 1 1 < W_T <= 2^{n-1} 1<WT<=2n1

3.5 点对点协议PPP

Point-to-Point Protocol,目前使用最广泛的点对点数据链路层协议。

PPP协议为点对点链路传输各种协议数据报提供了一个标准方法,主要包含3部分,

  • 对各种协议数据包的封装方法,即封装成帧

  • 链路控制协议LCP,用于建立、配置以及测试数据链路的连接

  • 一套网络控制协议NCPs,其中的每一个协议支持不同的网络层协议

帧格式如下,

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值