数据链路层
数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:
.点对点信道。这种信道使用一对一的点对点通信方式。
.广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。为了更直观的研究数据链路层,我们先来看一个例子:下是主机H1与主机H2之间的网络连接,主机H1通过电话线上网,中间经过三个路由器连接到远程主机H可见,主机之间所经过的网络可以是多种的,如电话网,局域网和广域网。当主机H1向H2发送数据时,从协议的层次上来看,数据的流动如下所示,也就是说主机H1和H2都有完整的五层协议栈,但路由器转发分组时只有最下面的三层。数据进入路由器后要先从物理层向上提交至网络层,在转发表中找到下一跳的地址后,再下呈到物理层中被转发出去。数据从主机H1传送到主机H2的过程中,需要在路径中的各节点的协议栈向上和向下流动多次,如上中的箭头所示。
当我们专门研究数据链路层的问题时,许多情况下我们可以只关心在协议栈中水平方向的各数据链路层。于是,当主机H1向主机H2发送数据时,我们可以想象数据就是在数据链路层从左向右沿水平方向传送的:
H1的链路层 → R1的链路层 → R2的链路层 → R3的链路层 → H2的链路层
上指出,从数据链路层来看,H1到H2的通信可以看成由四段不同的链路层通信组成,即H1→RR1→RR2→R3和R3→H这四段不同的链路层可能采用不同的数据链路层协议。
使用点对点信道的数据链路层
数据链路和帧
在讨论数据链路之前,我们首先要明确的一点是“链路”和“数据链路”并不是一回事。
所谓链路就是从一个节点到相邻节点的一段物理线路,而中间没有任何其他的交换节点。而在进行数据通信时,两台主机之间的通信往往要经过许多段这样的链路,可见,链路只是一条路径的组成部分。
数据链路则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层的功能。
三个基本问题——封装成帧,透明传输和差错检测
数据链路层协议有许多种,但有三个基本问题是共同的,这三个基本问题是:封装成帧,透明传输和差错检测。下面分别讨论这三个基本问题。
封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。下表示用帧首部和帧尾部封装成帧的一般概念。
我们知道,分组交换的一个重要概念就是:所有在互联网上传送的数据都以分组为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧,这样的帧就是数据链路层的数据传送单元。
一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是进行帧定界。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。显然,为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。每一种链路层协议都规定了所能传送的帧的数据部分的长度上限—最大传送单元MTU,上给出了帧的首部和尾部的位置,以及帧的数据部分与MTU的关系。
当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。我们知道,ASCII码是7位编码,一共可组合成128个不同的ASCII码,其中可打印的字符有95个0,而不可打印的控制字符有33个。
文章为作者独立观点,不代表股票交易接口观点