3.1、数据链路层概述
3.1.1、数据链路层在网络体系结构中所处的地位
如下所示,主机 H1
给主机 H2
发送数据,中间要经过三个路由器和电话网、局域网以及广域网等多种网络
从五层协议原理体系结构的角度来看:
- 主机应具有体系结构中的各个层次
- 而路由器只需具有体系结构中的下面三层
- 各设备通过物理层下面的传输媒体进行互连
当主机 H1
向 H2
发送数据时
- 主机
H1
将待发送的数据逐层封装后,通过物理层将构成数据包的各比特,转换为电信号发送到传输媒体 - 数据包进入路由器后,由上往下逐层解封到网络层。路由器根据数据包的目的网络地址和自身转发表,确定数据包的转发端口,然后从网络层向下逐层封装数据包,并通过物理层将数据包发送到传输媒体。
- 数据包最终到达主机
H2
时,还要由下往上逐层解封,最终解封出主机H1
所发送的数据
我们可以想象数据包只在数据链路层从左向右沿水平方向传送。
从数据链路层来看,主机 H1
到 H2
的通信,可以看成是在 4
段不同的链路上的通信组成的
链
路
\color{red}链路
链路(Link
)
- 就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
要在链路上传输数据,还需要通信协议来控制这些数据传输
数
据
链
路
\color{red}数据链路
数据链路 (Data Link
)
- 是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
在数据链路层上传输的数据包,又称为帧
数据链路层以
帧
\color{red}帧
帧为单位传输和处理数据
。
3.1.2、三个重要问题
3.1.2.1、封装成帧
如下所示,两台主机通过一段链路相连,两台主机都会对发送或接收的数据包进行五个层次的封装或解封。
-
通过应用层封装成为应用层协议数据单元,然后交付给运输层
-
运输层为其添加运输层协议首部,使之成为运输层协议数据单元,然后交付给网络层
-
网络层为其添加网络层协议首部,使之成为网络层协议数据单元,然后交付给数据链路层
-
数据链路层为其添加数据链路层协议首部(帧头),还要给其添加一个帧尾。
-
我们将数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作,称为
封装成帧
。 -
添加帧头和帧尾的目的,都是为了在链路上以帧为单元来传送数据。
-
也就是为了实现数据链路层本身的功能
-
例如,以太网版本
2
的MAC
帧格式
-
3.1.2.2、差错检测
发送方将封装好的帧通过物理层发送到传输媒体。
帧在传输过程中遭遇干扰后可能会出现误码
- 也就是比特
0
可能变成了比特1
,反之亦然
接受方主机如何判断帧在传输过程中是否出现了误码呢?
-
可以通过检错码来发现
-
发送方在发送帧之前,基于待发送的数据和检错算法计算出
检错码
,并将其封装在帧尾 -
例如:以太网版本 2 的 MAC 的帧尾,就是 4 字节的帧检验序列
FCS
字段,要写入该字段的内容,也就是检测码。
接收方主机收到帧后,就可以判断出帧在传输过程中是否出现了误码
3.1.2.3、可靠传输
接收方主机收到有误码的帧后,是不会接受该帧的,将其丢弃。
-
若数据链路层向上层提供的是
不可靠的服务
,那么丢弃就丢弃了,不会再有更多措施。 -
若数据链路层向上层提供的是
可靠的服务
,那就需要其他措施,来确保接受方主机还可以重新受到被丢弃的这个帧的正确副本
注意:以上内容使用点对点信道的数据链路层
3.1.3、其他需要解决的问题
广播信道的数据链路层(共享式局域网
)
目的地址问题
主机A,B,C,D,E 通过一根总线进行互连。主机 A 要给主机 C 发送帧。
- 代表帧的信号会通过总线传输到总线上的其他各主机
那么主机 B,D,E 如何知道所收到的帧不是发送给它们的,而主机 C 又如何知道所受到的帧恰恰是给自己的呢?
-
就是将帧的目的地址添加在帧中一起传输。
-
例如,以太网版本
2
的MAC
帧格式 -
其首部中的三个字段中,又两个字段和地址相关。一个是
目的地址
字段,一个是源地址
字段
-
源地址问题
当总线上多台主机同时使用总线来传输帧时,传输信号就会产生碰撞。
这是采用广播信道的共享式局域网不回避免的。
以太网采用的协调方法是:使用一种特殊的协议 CSMA/CD
(载波监听多点接入/碰撞检测)
交换式局域网
随着交换技术的成熟和成本的降低,具有更高性能的,使用点对点链路和链路层交换机的交换式局域网,在有线局域网)领域已完全取代了共享局域网
那么网络中的交换机是如何转发帧的呢?
无线局域网
另外,由于无线信道的广播天性,无线局域网仍然使用的是共享信道技术。
例如:802.11
局域网采用的媒体接入控制协议是 CSMA/CA
(载波监听多点接入/碰撞避免)。
其工作原理又是怎样的呢?