3.1 数据链路层概述

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

image-20230318151747940

如图所示,主机 H1 给主机 H2 发送数据,中间要经过三个路由器和电话网、局域网以及广域网等多种网络。从五层协议原理体系结构的角度来看,主机应具有体系结构中的各个层次,而路由器只需具有体系结构中的下面三层,各设备通过物理层下面的传输媒体进行互联。

image-20230318151835907

当主机 H1 向 H2 发送数据时,数据的流动如图所示。

  • 主机 H1 将待发送的数据逐层封装后,通过物理层将构成数据包的各比特转换为电信号发送到传输媒体。

  • 数据包进入路由器后,由下往上逐层解封到网络层。

  • 路由器根据数据包的目的网络地址和自身转发表确定数据包的转发端口,然后从网络层向下逐层封装数据包,并通过物理层将数据包发送到传输媒体。

  • 数据包最终到达主机 H2 时,还要由下往上逐层解封,最终解封出主机 H1 所发送的数据。

当我们专门研究数据链路层的问题时,在大多数情况下,我们可以只关心数据链路层,而不考虑网络体系结构的其他各层。换句话说,我们可以想象,数据包只在数据链路层从左向右沿水平方向传送。

链路、数据链路、帧

链路(Link):从一个结点到相邻结点的一段物理线路,中间没有其他的交换节点

数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,就构成了数据链路

帧:在数据链路层上传输的数据包又称为帧,也就是说数据链路层以帧为单位传输和处理数据

image-20230318152623197

从数据链路层来看,主机 H1 到 H2 的通信可以看成是在四段不同的链路上的通信组成的。所谓链路,就是从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点。要在链路上传输数据,仅有链路还不够,还需要一些通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。在数据链路层上传输的数据包又称为帧,也就是说数据链路层以帧为单位传输和处理数据。

数据链路层的三个重要问题

封装成帧

封装成帧:数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作称为封装成帧

image-20230318154112498

如图所示,两台主机通过一段链路互联,两台主机都会对所发送或接收的数据包进行 5 个层次的封装或解封。

  • 发送方将待发送的数据通过应用层封装成为应用层协议数据单元,然后交付给运输层。

  • 运输层为其添加运输层协议首部,使之成为运输层协议数据单元,然后交付给网络层。

  • 网络层为其添加网络层协议首部,使之成为网络层协议数据单元,然后交付给数据链路层。

  • 数据链路层给网络层协议数据单元添加一个数据链路层协议首部,简称为帧头,还要给其添加一个帧尾。我们将数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作称为封装成帧。添加帧头和帧尾的目的都是为了在链路上以帧为单元来传送数据,也就是为了实现数据链路层本身的功能。例如这是以太网版本 2 的MAC帧格式

image-20230318154011631

差错检测

image-20230318154320895

再来看差错检测,发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇干扰后可能会出现误码,也就是比特 0 可能变成了比特1,反之亦然。那么大家通过动画演示可以很容易看出真在传输过程中出现了误码,但是接收方主机如何判断真在传输过程中是否出现了误码?

这可以通过检错码来发现。发送方在发送帧之前,基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。例如以太网版本 2 的MAC帧的帧尾就是 4 字节的帧检验序列 FCS 字段,要写入该字段的内容,也就是我们所说的检测码。

接收方主机收到帧后,通过检错码和检错算法就可以判断出真在传输过程中是否出现了误码。

可靠传输

可靠传输:即发送方发送什么,接收方最终都能收到什么,就称为可靠传输

对于可靠传输,接收方主机收到有误码的帧后是不会接受该针的,将其丢弃。

  • 如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施。

  • 如果数据链路层向其上层提供的是可靠服务,那么就还需要其他措施来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本。

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

封装成真、差错检测、可靠传输是数据链路层中最基本、最重要的问题。

数据链路层考虑的其他问题

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

需要说明的是,我们在介绍这 3 个问题的时候,使用的是点对点信道的数据链路层来举例的。对于使用广播信道的数据链路层,除了包含这 3 个问题外,还有一些其他需要解决的问题。

image-20230318154803348

如图所示,主机a、b、c、d、 e 通过一根总线进行互联,主机 a 要给主机 c 发送帧,代表帧的信号会通过总线传输到总线上的其他各主机。那么主机b、d、 e 如何知道所收到的帧不是发送给他们的,而主机 c 又如何知道所收到的帧恰恰是发送给自己的?相信大家能够想到地址或者说编址的问题,也就是将帧的目的地址添加在帧中一起传输。例如,这是以太网版本 2 的MAC帧格式,其首部中的三个字段中有两个字段和地址相关,一个是目的地址字段,另一个是源地址字段。

image-20230318154845826

除了编址问题外,再来看下面这个问题。当总线上多台主机同时使用总线来传输帧时,传输信号就会产生碰撞,这是采用广播信道的共享式局域网不可避免的,以太网采用的协调方法是使用一种特殊的协议,CSMA/CD,也就是载波监听多点接入碰撞检测。

交换式局域网

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网,在有限领域已完全取代了共享式局域网。那么网络中的交换机又是如何转发帧的?

无线局域网

另外,由于无线信道的广播天性,无线局域网仍然使用的是共享信道技术。例如 802. 11 局域网采用的媒体接入控制协议是CSMA/CA,也就是载波监听多点接入碰撞避免,他的工作原理又是怎样的?

上述这些内容都是数据链路层中比较重要的问题,我们将在本章的后续课程中逐个进行介绍。

本节小结

image-20230318155435468

站内搜索

没有找到内容!