数据链路层是计算机网络中的一个重要层次,负责在两个相邻节点间可靠地传输数据,它在物理层之上,网络层之下。数据链路层的主要功能包括:为网络层提供服务,比如虚拟通信和实际通信;将来自物理层的比特流组装成帧;错误检测与校正;以及流量控制。
数据链路层提供的服务可以分为三类:
1. 无确认无连接服务:发送方无需建立连接即可发送独立的数据帧,接收方也不需要对收到的帧进行确认。
2. 无确认有连接服务:发送方无需建立连接即可发送独立的数据帧,但接收方需要对收到的帧进行确认。
3. 有确认有连接服务:在通信前,发送方和接收方需要建立连接,每个帧都有编号,并确保帧的正确接收和唯一接收,通信完成后断开连接。
帧的形成是数据链路层的关键任务,通过几种不同的方法实现:
1. 字符计数:在帧的头部包含表示帧长度的计数值,但这种方法的缺点是帧头错误会波及后续帧。
2. 字符标志:使用特定的字符序列来标识帧的开始和结束,如开始和结束字符。
3. 位标志:利用特殊的位序列,如连续5个1后跟1个0,来标识帧的边界,这种技术称为位填充(bit stuffing),用于避免标志与数据混淆。
4. 物理层编码:在物理层使用多于一位来表示一位数据,例如,使用1.5或2位物理信号来表示0或1,从而定义帧的边界。
错误检测和校正通常通过检验和、循环冗余校验(CRC)等机制实现,确保数据在传输过程中不受损坏。当提供有确认的服务时,接收方会通过返回特定的确认信息来确认帧的正确接收,如果接收错误,发送方会重传数据。
此外,数据链路层还有流量控制的功能,以防止发送方过快发送数据导致接收方无法处理,常见的流量控制机制包括停等协议、滑动窗口协议等。滑动窗口协议允许发送方在等待确认之前发送多个帧,提高了效率,但也需要管理多个未确认的帧状态。
在互联网中,数据链路层协议如PPP(Point-to-Point Protocol)和HDLC(High-Level Data Link Control)广泛应用于点对点通信,它们提供了连接建立、数据传输和连接拆除的完整过程,确保了数据的可靠性传输。
总结来说,数据链路层是确保网络中数据可靠传输的关键层,它通过成帧、错误检测与校正、流量控制以及不同类型的通信服务,保证了网络层数据包的有效传递。