数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。
简介数据链路层定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。数据链路层必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧,帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
物理链路(物理线路):是由传输介质与设备组成的。原始的物理传输线路是指没有采用高层差错控制的基本的物理传输介质与设备。
数据链路(逻辑线路):在一条物理线路之上,通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路,从数据发送点到数据接收点所经过的传输途径。当采用复用技术时,一条物理链路上可以有多条数据链路。
基本功能数据链路层主要有两个功能 :帧编码和误差纠正控制。帧编码意味着定义一个包含信息频率、位同步、源地址、目标地址以及其他控制信息的数据包。数据链路层协议又被分为两个子层 :逻辑链路控制(LLC)协议和媒体访问控制(MAC)协议。1
数据链路层的最基本的功能是向该层用户提供透明的和可靠的数据传送基本服务。透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。在物理层中这些情况都可能发生,在数据链路层中必须用纠错码来检错与纠错。数据链路层是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。
帧同步为了使传输中发生差错后只将有错的有限数据进行重发,数据链路层将比特流组合成以帧为单位传送。每个帧除了要传送的数据外,还包括校验码,以使接收方能发现传输中的差错。帧的组织结构必须设计成使接收方能够 明确地从物理层收到的比特流中对其进行识别,也即能从比特流中区分出帧的起始与终止,这就是帧同步要解决的问题。
(1)字节计数法:这是一种以一个特殊字符表示一帧的起始并以一个专门字段来标明帧内字节数的帧同步方法。接收方可以通过对该特殊字符的识别从比特流中区分出帧的起始并从专门字段中获知该帧中随后跟随的数据字节数,从而可确定出帧的终止位置。面向字节计数的同步规程的典型代表是DEC公司的数字数据通信报文协议DDCMP(Digital Data Communications Message Protocol)。
控制字符SOH标志数据帧的起始。实际传输中,SOH前还要以两个或更多个同步字符来确定一帧的起始,有时也允许本帧的头紧接着上帧的尾,此时两帧间就不必再加同步字符。count字段共有14位,用以指示帧中数据段中数据的字节数,14位二进制数的最大值为16383,所以数据最大长度为131064。DDCMP协议就是靠这个字节计数来确定帧的终止位置的。DDCMP帧格式中的ACK、SEG、ADDR及FLAG中的第2位CRC1、CRC2分别对标题部分和数据部分进行双重校验,强调标题部分单独校验的原因是,一旦标题部分中的CONUT字段出错,即失却了帧边界划分的依据。由于采用字符计数方法来确定帧的终止边界不会引起数据及其它信息的混淆,因而不必采用任何措施便可实现数据的透明性(即任何数据均可不受限制地传输)。
(2)使用字符填充的首尾定界符法:该法用一些特定的字符来定界一帧的起始与终止,为了不使数据信息位中出现的与特定字符相同的字符被误判为帧的首尾定界符,可以在这种数据字符前填充一个转义控制字符(DLE)以示区别,从而达到数据的透明性。但这种方法使用起来比较麻烦,而且所用的特定字符过份依赖于所采用的字符编码集,兼容性比较差。
(3)使用比特填充的首尾标志法:该法以一组特定的比特模式来标志一帧的起始与终止。
(4)违法编码法:该法在物理层采用特定的比特编码方法时采用。例如,一种被称作曼彻斯特编码的方法,是将数据比特“1”编码成“高-低”电平对,而将数据比特“0”编码成“低-高”电平对。而“高-高”电平对和“低-低”电平对在数据比特中是违法的。可以借用这些违法编码序列来定界帧的起始与终止。局域网IEEE 802标准中就采用了这种方法。违法编码法不需要任何填充技术,便能实现数据的透明性,但它只适用于采用冗余编码的特殊编码环境。由于字节计数法中COUNT字段的脆弱性以及字符填充法实现上的复杂性和不兼容性,较普遍使用的帧同步法是比特填充和违法编码法。2
差错控制一个实用的通信系统必须具备发现(即检测)这种差错的能力,并采取某种措施纠正之,使差错被控制在所能允许的尽可能小的范围内,这就是差错控制过程,也是数据链路层的主要功能之一。对差错编码(如奇偶校验码,检查和或CRC)的检查,可以判定一帧在传输过程中是否发生了错误。一旦发现错误,一般可以采用反馈重发的方法来纠正。这就要求接收方收完一帧后,向发送方反馈一个接收是否正确的信息,使发送方所在此作出是不需要重新发送的决定,也即发送方仅当收到接收方已正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需要重新发送直至正确为止。物理信道的突发噪声可能完全“淹没”一帧,即使得整个数据帧或反馈信息帧丢失,这将导致发送方永远收不到接收方发来的反馈信息,从而使传输过程停滞.为了避免出现这种情况,通常引入计时器(Timer)来限定接收方发回反馈信息的时间间隔,当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反馈信息,即计时器超时(Timeout),则可认为传的帧已出错或丢失,继而要重新发送。由于同一帧数据可能被重复发送多次。为了防止发生这种危险,可以采用对发送的帧编号的方法,即赋予每帧一个信号,从而使接收方能从该序号来区分是新发送来的帧还是已经接收但又重新发送来的帧,以此来确定要不要将接收到的帧递交给网络层。数据链路层通过使用计数器和序号来保证每帧最终都被正确地递交给目标网络层一次。
流量控制流量控制并不是数据链路层所特有的功能,许多高层协议中也提供流时控功能,只不过流量控制的对象不同而已。比如,对于数据链路层来说,控制的是相邻两节点之间数据链路上的流量,而对于传输层来说,控制的则是从源到最终目的之间端的流量。由于收发双方各自使用的设备工作速率和缓冲存储的空间的差异,可能出现发送方发送能力大于接收方接收能力的现象,如若此时不对发送方的发送速率(也即链路上的信息流量)作适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”,从而造成帧的丢失而出错。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送率不致超过接收方所能承受的能力。这个过程需要通过某种反馈机制使发送方知道接收方是否能跟上发送方,也即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后继续发送。
链路管理链路管理功能主要用于面向连接的服务。当链路两端的节点要进行通信前,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接,在传输过程中则要能维持该连接。如果出现差错,需要重新初始化,重新自动建立连接。传输完毕后则要释放连接。数据连路层连接的建立维持和释放就称作链路管理。在多个站点共享同一物理信道的情况下(例如在LAN中)如何在要求通信的站点间分配和管理信道也属于数据链路层管理的范畴。
相关协议数据链路控制协议也称链路通信规程,也就是OSI参考模型中的数据链路层协议。链路控制协议可分为异步协议和同步协议两大类。
数据链路层的主要协议有:
(1)点对点协议(Point-to-Point Protocol);
(2)以太网(Ethernet);
(3)高级数据链路协议(High-Level Data Link Protocol);
(4) 帧中继(Frame Relay);
(5) 异步传输模式(Asynchronous Transfer Mode);
异步协议以字符为独立的信息传输单位,在每个字符的起始处开始对字符内的比特实现同步,但字符与字符之间的间隔时间是不固定的(即字符之间是异步的)。由于发送器和接收器中近似于同 一频率的两个约定时钟,能够在一段较短的时间内保持同步,所以可以用字符起始处同步的时钟来采样该字符中的各比特,而不需要每个比特再用其它方法同步。异步协议中因为每个传输字符都要添加诸如起始位、校验位及停止位等冗余位,故信道利用率很低,一般用于数据速率较低的场合。
同步协议同步协议是以许多字符或许多比特组织成的数据块——帧为传输单位,在帧的起始处同步,使帧内维持固定的时钟。实际上该固定时钟是发送端通过某种技术将其混合在数据中一并发送出去的,供接收端从输入数据中分离出时钟来,实现起来比较复杂,这个功能通常是由解调器来完成。由于采用帧为传输单位,所以同步协议能更有效地利用信道,也便于实现差错控制、流量控制等功能。同步协议又可分为面向字符的同步协议、面向比特的同步协议及面向字节计数的同步协议三种类型。
HDLCHDLC是通用的数据链路控制协议,当开始建立数据链路时,允许选用特定的操作方式。所谓链路操作方式,通俗地讲就是某站点以主站方式操作,还是以从站方式操作,或者是二者兼备。在链路上用于控制目的站称为主站,其它的受主站控制的站称为从站。主站负责对数据流进行组织,半且对链路上的差错实施恢复。由主站发往从站的帧称为命令帧,而由由站返回主站的帧称响应帧。连有多个站点的链路通常使用轮询技术,轮询其它站的站称为主站,而在点到点燃链路中每个站均可为主站。主站需要比从站有更多的逻辑功能,所以当终端与主机相连时,主机一般总是主站。
操作方式HDLC中常用的操作方式有以下三种:
(1)正常响应方式NRM是一种非平衡数据链路操作方式,有时也称非平衡正常响应方式。该操作方式适用于面向终端的点到点或一点与多点的链路。在这种操作方式,传输过程由主站启动,从站只有收到主站某个命令帧后,才能作为响应向主站传输信息。响应信息可以由一个或多个帧组成,若信息 由多个帧组成,则应指出哪一个是最后一帧。主站负责管理整个链路,且具有轮询、选择从站及向从站发送命令的权利,同时也负责对超时、重发及各类恢复操作的控制。
(2)异步响应方式ARM,异步响应方式ARM也是一种非平衡数据链路操作方式,与NRM不同的是,ARM的传输过程由从站启动。从站主动发送给主站的一个或一组帧中可包含有信息,也可以是仅以控制为目的而发的帧。在这种操作方式下,由从站来控制超时和重发。该方式对采用轮询方式的多站莲路来说是必不可少的。ARM操作方式见图3.7(b)。
(3)异步平衡方式ABM,异步平衡方式ABM是一种允许任何节点来启动传输的操作方式。为了提高链路传输效率,节点之间在两个方向上都需要的较高的信息传输量。在这种操作方式下任何时候任何站都能启动传输操作,每个站既可作为主站又可作为从站,每个站都是组合站。各站都有相同的一组协议,任何站都可以发送或接收命令,也可以给出应答,并且各站对差错恢复过程都负有相同的责任。
帧格式在HDLC中,数据和控制报文均以帧的标准格式传送。HDLC中的帧类似于BSC的字符块,但BSC协议中的数据报文和控制报文是独立传输的,而HDLC中的命令应以统一的格式按帧传输。HDLC的完整的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成。
(1)标志字段(F):标志字段为01111110的比特模式,用以标志帧的起始和前一帧的终止。标志字段也可以作为帧与帧之间的填充字符。通常,在不进行帧传送的时刻,信道仍处于激活状态,在这种状态下,发方不断地发送标志字段,便可认为一个新的帧传送已经开始。采用“0比特插入法”可以实现0数据的透明传输。
(2)地址字段(A):地址字段的内容取决于所采用的操作方式。在操作方式中,有主站、从站、组合站之分。每一个从站和组合站都被分配一个唯一的地址。命令帧中的地址字段携带的是对方站的地址,而响应帧中的地址字段所携带的地址是本站的地址。某一地址也可分配给不止一个站,这种地址称为组地址,利用一个组地址传输的帧能被组内所有拥有该组一焉的站接收。但当一个站或组合站发送响应时,它仍应当用它唯一的地址。还可用全“1”地址来表示包含所有站的地址,称为广播地址,含有广播地址的帧传送给链路上所有的站。另外,还规定全“0”地址为无站地址,这种地址不分配给任何站,仅作作测试。
(3)控制字段(C):控制字段用于构成各种命令和响应,以便对链路进行监视和控制。发送方主站或组合站利用控制字段来通知被寻址的从站或组合站执行约定的操作;相反,从站用该字段作对命令的响应,报告已完成的操作或状态的变化。该字段是HDLC的关键。控制字段中的第一位或第一、第二位表示传送帧的类型,HDLC中有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)三种不同类型的帧。控制字段的第五位是P/F位,即轮询/终止(Poll/Final)位。
(4)信息字段(I):信息字段可以是任意的二进制比特串。比特串长度未作限定,其上限由FCS字段或通信站的缓冲器容量来决定,国际上用得较多的是1000~2000比特;而下限可以为0,即无信息字段。但是,监控帧(S帧)中规定不可有信息字段。
(5)帧校验序列字段(FCS):帧校验序列字段可以使用16位CRC,对两个标志字段之间的整个帧的内容进行校验。2
帧类型HDLC有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)三种不同类型的帧。
(1)信息帧(I帧):信息帧用于传送有效信息或数据,通常简称I帧。I帧以控制字第一位为“0”来标志。信息帧的控制字段中的N(S)用于存放发送帧序号,以使发送方不必等待确认而连续发送多帧。N(R)用于存放接收方下一个预期要接收的帧的序号,N(R)=5,即表示接收方下一帧要接收5号帧,换言之,5号帧前的各帧接收到。
(2)监控帧(S帧):监控帧用于差错控制和流量控制,通常简称S帧。S帧以控制字段第一、二位为“10”来标志。S帧带信息字段,只有6个字节即48个比特。S帧的控制字段的第三、四位为S帧类型编码,共有四种不同编码,分别表示:
00——接收就绪(RR),由主站或从站发送。主站可以使用RR型S帧来轮询从站,从站传输编号为N(R)的I帧,若存在这样的帧,便进行传输;从站也可用RR型S帧来作响应,表示从站希望从主站那里接收的下一个I帧的编号是N(R)。
01——拒绝(REJ),由主站或从站发送,用以要求发送方对从编号为N(R)开始的帧及其以后所有的帧进行重发,这也暗示N(R)以前的I帧已被正确接收。
10——接收未就绪(RNR),表示编号小于N(R)的I帧已被收到,但正处于忙状态,尚未准备好接收编号为N(R)的I帧,这可用来对链路流量进行控制。
11——选择拒绝(SREJ),它要求发送方发送编号为N(R)单个I帧,并暗示它编号的I帧已全部确认
(3)无编号帧(U帧):无编号帧因其控制字段中不包含编号N(S)和N(R)而得名,简称U帧。U帧用于提供对链路的建立、拆除以及多种控制功能,这些控制功能5个M位(M1、M2、M3、M4、M5,也称修正位)来定义。5个M位可以定义32种附加的命令功能或32种应答功能,但许多是空缺的。2
逻辑链路控制层在逻辑链路控制子层,我们通过执行一个停止或等待自动重复检索(ARQ)协议来检测误差和请求重传错误帧。源节点A在发送下一帧数据之前等待一个来自目标节点B的回执(ACK)。如果在预置暂停时间内没接收到回执,A重传这帧数据。在数据帧来回传播的时间段内,信道保持空闲。在全双工通信链路,如果节点 A 在等待 ACK 时连续传送相同的数据帧,网络吞吐量可以增大。1
DLSL层子系统依功能可划分为:DLSL初始化模块、DLSL状态机模块、DLSL数据服务模块、DLSL管理服务模块、DLSL处理MAC 层消息模块、通信调度模块、信道跳频模块和安全模块。3
媒介访问控制子层数据链路层最关键的技术就是媒体访问控制(MAC)。它的作用是平均分配存在竞争和高吞 吐量节点之间的信道资源。带冲突避免的多址接入(MACA)协议利用两个叫做请求 / 发送(RTS) 和清除 / 发送(CTS)的信号帧来检测冲突。它是 MAC 子层的常用协议。当源节点A想要发送信息到目标节点B时,它会首先发出一个 RTS命令。如果节点B收到RTS,它则会发送回一个CTS命令。如果节点A没有在预定时间内接收到CTS,它将重新发送 RTS。只要节点 A 一收到CTS,它就立刻开 始传输数据帧。任何监听到CTS的其他节点将会延迟一个数据包长度的时间来避免冲突。
MACAW协议是MACA协议的改良版 ,它提高了UAN 的性能和可靠性。1
MAC层子系统依功能可划分为:MAC层初始化模块、MAC层状态机模块、MAC层数据服务功能模块、MAC 层管理服务功能模块、MAC层处理RF消息模块、时隙处理模块和时间同步模块。3
本词条内容贡献者为:
徐恒山 - 讲师 - 西北农林科技大学