在计算机网络体系结构中,数据链路层作为物理层之上的第二层,承担着将原始的物理传输线路转变为可靠数据传输链路的关键职责。其核心任务之一,就是为上层(通常是网络层)提供高效、可靠的数据处理服务。本章节将聚焦于数据链路层如何封装、传输和处理数据,确保数据帧在相邻节点间无误传递。
一、数据链路层的基本功能
数据链路层的主要功能是在物理层提供的比特流传输服务基础上,建立、维护和释放数据链路,并通过一系列机制,为网络层提供透明的、可靠的数据传输服务。其核心服务可概括为:
- 成帧:将网络层交付下来的数据包(如IP数据报)封装成帧,添加帧头(包含地址、控制信息等)和帧尾(通常包含差错检测码)。帧是数据链路层传输的基本单位。
- 透明传输:无论上层交付的数据内容如何(即使其中包含了与帧界定符相同的比特组合),数据链路层都能通过字节填充或比特填充等技术,使其能够被正确识别和传输,对上层而言,传输过程是“透明”的。
- 差错控制:利用帧尾的循环冗余检验(CRC) 等差错检测技术,发现数据在传输过程中可能出现的比特差错。对于可靠传输协议(如高级数据链路控制HDLC、PPP协议等),还通过确认和重传机制(ARQ协议)来纠正错误,实现无差错传输。
- 流量控制:通过停止-等待协议、滑动窗口协议等技术,协调发送方与接收方的数据处理速度,防止因接收方缓冲区溢出而导致的数据丢失。
二、数据处理的核心:成帧与透明传输
数据链路层处理数据的首要步骤是成帧。常用的成帧方法有:
- 字符计数法:在帧头用一个字段标明帧内字符数。
- 字符/字节填充法:使用特殊的字符(如SOH, EOT)作为帧的起始和结束标志。若数据中出现相同字符,则在前面插入转义字符(如ESC)。PPP协议采用此方式。
- 比特填充法:使用一个特殊的比特模式(如01111110)作为帧的起始和结束标志。发送时,若数据中连续出现5个“1”,则自动插入一个“0”;接收时,删除连续5个“1”后的“0”。HDLC协议采用此方式,实现了真正的比特级透明传输。
- 物理层编码违禁法:利用物理层信号编码中未使用的电信号来标识帧边界。
三、差错控制:确保数据可靠性
数据在物理链路上传输时,可能因干扰、衰减等原因产生比特错误。数据链路层的差错控制服务主要包括:
- 差错检测:最常用的是循环冗余检验(CRC)。发送方根据待发送数据和生成多项式计算出一个帧检验序列(FCS),置于帧尾。接收方进行同样的计算并比对,以此判断帧是否出错。CRC检错能力强,实现简单。
- 差错纠正:对于可靠性要求极高的点对点链路,数据链路层协议(如HDLC的可靠模式)会结合自动重传请求(ARQ) 机制。基本方式有:
- 停止-等待ARQ:发送方每发送一帧就等待确认,超时未收到确认则重传。简单但效率低。
- 回退N帧ARQ:发送方可连续发送多个帧,接收方累积确认。若某帧出错,则从该帧开始全部重传。
- 选择重传ARQ:只重传出错或丢失的帧,效率最高,但接收方缓存管理更复杂。
四、流量控制:匹配收发速率
流量控制是防止发送方发送数据过快,导致接收方缓冲区溢出的关键服务。数据链路层的典型流量控制协议是滑动窗口协议。
- 发送窗口和接收窗口分别定义了发送方和接收方允许的帧序号范围。
- 窗口大小决定了无需等待确认可连续发送的最大帧数,有效利用了链路带宽。
- 通过确认帧(ACK)携带的窗口信息,动态调整发送速率,实现收发双方的速度匹配。
五、典型协议实例
- 点对点协议(PPP):广泛应用于拨号、宽带接入等场景。它提供简单的成帧、差错检测(CRC)和链路控制功能,但不提供流量控制和序号机制,是一种不可靠传输协议,依赖于上层(如TCP)实现可靠性。其数据处理服务简洁高效。
- 高级数据链路控制(HDLC):一种面向比特的同步数据链路层协议。它提供可靠的、面向连接的服务,完整实现了成帧(比特填充)、差错控制(CRC与ARQ)和流量控制(滑动窗口)。它是许多其他协议(如帧中继的LAPF)的基础。
###
数据链路层的数据处理服务,是网络通信可靠性的第一道坚实屏障。它通过成帧定义了数据的“包裹”格式,通过透明传输确保了数据的完整无歧义,通过差错控制守卫了数据的准确性,再辅以流量控制平衡了传输的节奏。理解这些服务,是掌握局域网技术(如以太网)、广域网接入技术以及后续网络层路由转发的基础。在实际的计算机数据处理服务体系中,数据链路层默默无闻却又至关重要,它确保了比特流能够被准确地组织、校验并交付给正确的本地邻居。