链路层概述
数据链路层解决的是物理链路直接相连的两个相邻节点(主机或其他网络元素)之间的数据传输。
基本术语:
(1)节点:运行链路层协议的任何设备均称为节点,包括主机、路由器、交换机等。
(2)链路:沿着通信路径连接相邻节点的通信信道。实际上链路可分为物理链路以及数据链路,物理链路指物理层如何通过编码实现每个比特的传输,物理链路包括有线链路、无线链路等;而这里所说的链路为数据链路,指在物理链路之上如何实现链路层帧的传输。
(3)链路层帧(数据帧):在通过特定的链路时,传输节点将网络层数据报封装在链路层帧中,并将该帧传送到链路中。
链路层提供的服务
数据链路层的基本服务是通过一条链路从一个节点向另一个物理链路直接相连的相邻节点传送数据报,但所提供服务的细节能够随着链路层协议的不同而变化。链路层能够提供的可能服务包括:
- 组帧。封装数据报构成数据帧,而且实现帧同步(即如何从物理链路接收的比特流中识别出数据帧,典型做法是在帧的首尾添加帧定界符)。
- 链路接入。如果使用共享介质的链路,需要解决信道接入问题,即所谓多路访问问题。媒体访问控制(Medium Access Control, MAC)协议规定了帧在链路上传输的规则,MAC 协议用于协调多个节点的帧传输。
- 可靠交付。链路层的可靠交付通常是通过确认和重传来实现的。在低误码率的有线链路上很少采用(如光纤、同轴电缆和许多双绞铜线链路),在误码率高的无线链路上需要可靠交付。
- 差错检测和纠正。信号衰减和噪声会引起比特差错,因为没有必要转发一个有差错的数据报,所以许多链路层协议提供差错检测机制。传输层和网络层也提供了有限形式的差错检测,即因特网校验和,而链路层的差错检测通常更复杂,并且用硬件实现。提供可靠数据传输的链路层协议的接收端会通知发送端重传,不提供可靠数据传输的链路层协议的接收端会直接丢弃数据帧。差错纠正类似于差错检测,区别在于接收方不仅能检测帧中出现的比特差错,而且能够准确地确定帧中的差错出现的位置,也称为前向纠错。
- 全双工和半双工通信控制。链路层还需要控制该链路上的通信方式,全双工通信允许链路两端节点同时双向传输,半双工仅允许两端节点交替双向传输。
链路层在何处实现
链路层的主体部分是在网络适配器(network adapter)中实现的,网络适配器有时也称为网络接口卡(Network Interface Card, NIC,即网卡),如以太网网卡、802.11 Wifi网卡。位于网络适配器核心的是链路层控制器,链路层控制器通常是一个实现了许多链路层服务(组帧、链路接入、差错检测等)的专用芯片。因此,链路层控制器的许多功能是用硬件实现的。
部分链路层是在运行于主机 CPU 上的软件中实现的。链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件。所以,链路层是硬件和软件的结合体,链路层也是协议栈中硬件和软件交接的地方。