4.1 数据链路层的基本概念
数据链路层利用不可靠的物理线路向网络层提供可靠的数据链路,并在物理层提供的服务基础上向网络层提供相应服务,其最基本的服务是将源节点网络层传递过来的数据可靠地传送到相邻节点。数据链路层是以帧为单位传输数据,同时具备差错检测、流量控制和透明传输等功能。
4.1.1 数据链路层的定义
1.设置数据链路层的原因
设置数据链路层的主要目的是解决物理层传输的不可靠问题,提供功能上和规程上的方法,以便建立、维护和释放网络实体间的数据链路。设置数据链路层的主要原因如下。
1)尽管物理层采取了一些必要的措施来减少信号传输过程中噪声的干扰,但数据在物理传输过程中仍然可能受到影响,使得物理传输过程中可能会产生差错。
2)由于物理层只关心原始比特流的传送,不考虑所传输信号的意义和信息的结构,即物理层无法识别或判断数据在传输过程中是否发生了变化,因此也无法采取补救措施。
3)物理层无法处理当发送节点的发送速率过快而接收节点的接收速率过慢时可能发生的数据被淹没现象,即物理层不能协调发送节点的发送速率和接收节点的接收速率。
因此,网络仅有物理层的功能是不够的,位于物理层之上的数据链路层就是为了克服物理层的这些不足而设立的。
2.数据链路层的定义
数据链路层利用不可靠的物理链路向网络层提供可靠的数据链路,实现网络中两个相邻节点之间的无差错数据传输。它利用物理层提供的原始比特流传输服务,检测并校正物理层的传输差错,在相邻节点之间构成一条无差错的链路,从而向网络层提供可靠的数据传输服务。将实现通信协议的硬件和软件加到物理链路上所构成的可以通信的链路称为数据链路,又称为逻辑链路。数据链路层模型如图4-1所示。
图4-1 数据链路层模型
4.1.2 数据链路层的主要功能
为了完成在不太可靠的物理链路上实现可靠的数据帧传输任务,数据链路层应具备一定的功能。
1.数据链路层的主要功能
1)成帧。数据链路层把来自网络层的比特流划分成易处理的数据单元(称为帧)。成帧是指将数据划分成帧的方法,即如何界定帧的界限。通常一个帧包括帧首、帧尾、地址信息、控制信息、数据和校验信息等几个部分。帧首和帧尾标志帧的开始和结束;帧的控制信息中含有帧序号,当出现传输差错时,只需要将有差错的帧重传即可,避免了重传全部数据的问题。帧的定界有字符计数法、首尾界符法、首尾标志法等多种方法。
2)帧的透明传输。成帧方法是在帧中增加了一些控制信息,以确定帧的定界,为了保证帧的透明传输,还需要进行一些特殊的处理,否则将不能正确地区分数据与控制信息,而这些特殊的处理对高层来说是透明的。
3)流量控制。如果接收节点接收数据的速率小于发送节点发送的速率,则将会造成接收节点缓冲区溢出现象,从而使接收数据丢失。流量控制就是对发送方发送数据的速度加以控制,以免超过接收方的接收能力而导致数据丢失的机制。
4)差错控制。差错控制就是接收方对接收到的数据帧进行校验,如果发生差错,则应该能够对错误帧进行相应处理。数据链路层一般采用在信息位中添加冗余码的方法进行差错校验,接收方利用冗余码可以检测出接收到的帧是否存在差错,如果有错,既可以采用纠错编码前向纠错,也可以将它丢弃,并通知发送方重传出错的数据帧。差错控制通常在一个帧的结束处增加一个尾部来处理。
5)数据链路管理。如果在数据链路上传送数据采用面向连接的方式,则发送方和接收方之间需要有建立、维持和释放数据链路连接的管理功能。
6)链路访问控制。当两个以上的节点连接到同一条链路上时,数据链路协议必须能决定在任意时刻由哪一个节点来获取对链路的控制权。介质访问控制协议(MAC协议)定义了帧在链路上传输的规则。对于点对点链路,MAC协议比较简单或者不存在;对于多节点共享广播链路,MAC协议用来协调多个节点的帧的传输,属于多址访问问题。
7)物理寻址。在一条点到点直达的链路上不存在寻址问题,在多点连接的情况下,数据链路层可以通过编址及识别相应的地址(一般称为硬件地址)来保证每一帧数据都能传送到规定的目的地,接收方也应能识别出接收到的数据帧来自哪里。
数据链路层的流量控制和差错控制将有差错的物理链路变为无差错的逻辑链路。
2.数据链路层向网络层提供的服务
数据链路管理:当数据链路两端的节点进行通信时,需要根据具体情况配置数据链路层,使之能为网络层提供多种不同类型的服务。主要提供以下3种服务。
1)无确认的无连接服务。无确认的无连接服务简单,适用于低误码率环境中的数据传输。大多数局域网的数据链路层都使用无确认的无连接服务。该服务主要包含以下5个方面。
● 双方无须建立链路连接。
● 每个帧都带有目的地址。
● 各帧相互独立传送。
● 目的节点对收到的帧不做任何应答确认。
● 由高层处理丢失的帧,数据链路层不做处理。
2)有确认的无连接服务。有确认的无连接服务是在无确认的无连接服务基础上增加了确认功能,适用于可靠性不高的通信信道。该服务主要包含以下两个方面。
● 目的节点对接收到的每一帧都要向发送方发送确认帧(ACK)。
● 发送方利用超时机制处理确认帧,每发送一个数据帧的同时启动一个定时器,若在规定时间内未收到对该帧的肯定确认帧,则发送方启动超时重传机制,重传该数据帧。
3)面向连接服务。面向连接服务是指在数据传输之前首先建立数据链路连接,然后所有的数据帧均在该链路中依次按序传输,最后传输结束时再释放该连接,适用于实时传输或对数据传输有较高可靠性要求的环境。面向连接服务主要分为以下3个阶段。
● 连接建立阶段。在传送数据之前,首先利用服务原语在发送方和接收方之间建立一条连接(即建立数据链路)。
● 连接维持阶段。发送方和接收方进行数据帧的透明传输。所有的数据帧都带有自己的编号,传输过程中要求对每一帧进行确认,发送方收到确认帧后才能发送下一帧。
● 连接断开阶段。数据传输结束后,发送方和接收方妥善释放数据链路。