在OSI/RM中明确定义: 数据链路层是在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧在信道上的“透明”传输。
2. 基本概率 (1) 链路(link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 一条链路只是一条通路的一个组成部分。
除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
数据链路 = 链路 + 协议 链路中通信双方的信道使用形式不同,会相应有不同的控制协议。1. 点对点信道。
这种信道使用一对一的点对点通信方式。
2. 广播信道
这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
仅从数据链路层观察帧的流动(绿色箭头)
1. 封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,确定帧的界限,也就是进行帧定界。因为在物理层中数据都会转化为比特流,帧定界后就可以在比特流中确定一段数据的开始和结束。
定界方法举例:用特殊的控制字符
正常情况下,收到完整的帧;
出错情况下,丢弃不完整的帧。
2. 透明传输
当一个数据在发送的时候,这个数据也是用比特流呈现的,所以数据中可能会出现和定界控制符一样的编码,尤其在多媒体的数据里边,会出现这样的情况。一旦出现这样的状况,此数据就会出现数据丢失等情况,造成数据错误的解读。(内容相关性冲突——不透明)
3. 差错控制
数据传输并不总是一帆风顺,总有时候会出现差错,如下图所示。
在现有网络实现中,数据链路层只提供比特差错检测。主要因为:
(1) 一旦发生比特差错,很难自动恢复。
(2) 中间通信设备不掌握全部通信内容,所以对帧丢失、重复、失序等问题可能不了解。