- 链路 就是从一个节点到相邻节点的一段物理线路,而中间没有其他任何交换节点。
- 数据链路 是指实现通信协议的硬件和软件加到链路上,就成了数据链路。
- 数据链路层以帧为单位传输和处理数据。
数据链路层的三个重要问题:
- 封装成帧。
- 差错检测。
- 可靠传输:尽管误码是不能完成避免的,但若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。
一、封装成帧
封装成帧是指数据链路层对上层交付的协议数据单元添加帧头和帧尾使之成为帧。
- 帧头和帧尾中包含重要的控制信息
- 帧头和帧尾的作用之一就是**帧定界**
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
- 面向字节的物理链路使用**字节填充**的方法实现透明传输。
- 面向比特的物理链路使用**比特填充**的方法实现透明传输。
为了提升帧的传输效率,应当使帧的数据部分的长度尽可能大些。
考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maxinum transfer Unit)
二、差错检测
检错码只能检测帧在传输过程中出现了差错,但并不难定位错误,因此无法纠正错误。
想要纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中很少使用。
循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但是非常易于硬件实现,因此被广泛应用于数据链路层。
在计算机网络中通常采用检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向上层提供的是可靠传输服务还是不可靠传输服务。
三、可靠传输
- 使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了无码(比特错误)。
- 数据链路层向上层提供的服务类型:
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务:想办法实现发送端发送什么,接收端就接收什么;
- 一般情况下,有线链路的误码率比较低,为了减小开支,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由上层处理。
- 无线链路易受干扰,误码率比较高,因此要求数据链路层向上层提供可靠传输服务。
- 比特差错只是传输差错中的一种。
- 从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序和分组重复。
- 分组丢失、分组失序和分组重复这些传输差错,一般不会出现在数据链路层,而出现在其上层。
- 可靠传输服务并不仅局限于数据链路层,其他可层均可选择实现可靠传输。
- 可靠传输的实现比较复杂,开销也比较大,是否实现可靠传输取决于应用需求。