计算机网络——数据链路层

概述

数据链路层在网络体系结构中的地位

在这里插入图片描述

  • 链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点
  • 数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
  • 数据链路层以帧为单位传输和处理数据。

使用点对点信道的数据链路层

三个重要问题

分装成帧

两台主机都会对所发送的信息 或接收的数据包进行五个层次的封装和解封

在这里插入图片描述

差错检测

发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇干扰后可能会出现误码。因此,发送方在发送帧之前,基于带发送的数据和检错算法计算出检错码,并将其封装在帧尾。接收方检测到帧后,通过检错码和检错算法判断出帧在传输过程中是否出现了误码。

可靠传输

接收方检测出错误帧后,如果数据链路层向上提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施。反之,那么就需要其他措施,确保接收方主机还可以重新收到被丢弃的这个帧的正确副本。

尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。

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

  • 以太网的媒体接入控制协议CSMA/CD
  • 802.11局域网的媒体接入控制协议CSMA/CA

数据链路层的互连设备

  • 网桥和交换机的工作原理
  • 集线器(物理层互连设备)与交换机的区别

封装成帧

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

    • 帧头和帧尾中包含有重要的控制信息。
    • 帧头和帧尾的作用之一就是帧定界。

    在这里插入图片描述

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

    • 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
    • 面向比特的物理链路使用比特填充的方法实现透明传输。
  • 转义字符是一种特殊含义的字符,其长度为1个字节。

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

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

差错检测

  • 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。
  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
  • 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。

奇偶校验

在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数((奇校验)或偶数(偶校验)。

在这里插入图片描述

  • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
  • 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检);

循环冗余校验

在这里插入图片描述

  • 收发双方约定好一个生成多项式G(x);
  • 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
  • 接收方通过生成多项式来计算收到的数据是否产生了误码;
  • 检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
  • 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
  • 循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。
  • 在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务。

步骤

  • 构造被除数:接收到的信息就是被除数
  • 构造除数:生成多项式各项系数构成的比特串
  • 做“除法”
  • 检查余数:余数为0,可认为传输过程无误码;余数不为0,可认为传输过程产生误码。

可靠传输

基本概念

  • 使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。

  • 数据链路层向上层提供的服务类型

    • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
    • 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。
  • 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。

  • 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。

  • 比特差错只是传输差错中的一种。

  • 从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。

  • 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。

  • 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。

    在这里插入图片描述

可靠传输实现机制——停止等待协议SW(stop and wait)

  • 发送方发送数据分组后,等待接收方发来确认或丢弃的标志码,如果丢弃则重传。

    在这里插入图片描述

  • 接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。

  • 为解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK或NAK,则重传原来的数据分组,这就叫做超时重传。

  • 一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。

    在这里插入图片描述

  • 为避免分组重复这种传输错误,必须给每个分组带上序号。

  • 对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就够了。

    在这里插入图片描述

  • 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。

    在这里插入图片描述

信道利用率

在这里插入图片描述

  • 当往返时延RTT远大于数据帧发送时延Tb时(例如使用卫星链路),信道利用率非常低。
  • 若出现重传,则对于传送有用的数
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

XZY-SUNSHINE

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值