定义
高级数据链路控制(HDLC,High-level Data Link Control)是一组用于在网络结点间传送数据的协议。在HDLC中,数据被组成一个个的单元(称为帧)通过网络发送,并由接收方确认收到。HDLC协议也管理数据流和数据发送的间隔时间。HDLC是在数据链路层中最广泛最使用的协议之一,数据链路层是OSI七层网络模型中的第二层,第一层是物理层,负责产生与收发物理电子信号,第三层是网络层,其功能包括通过访问路由表来确定路由。在传送数据时,网络层的数据帧中包含了源节点与目的节点的网络地址,在第二层通过HDLC规范将网络层的数据帧进行封装,增加数据链路控制信息,形成一个新的数据帧。
作为ISO的标准,HDLC是基于IBM的SDLC协议的,SDLC被广泛用于IBM的大型机环境之中。在HDLC中,属于SDLC的被称为普通响应模式(NRM)。在通常响应模式中,基站(通常是大型机)通过专线在多路或多点网络中发送数据给本地或远程的二级站。这种网络并不是我们平时所说的那种,它是一个非公众的封闭网络,网络通信采取半双工。
不同类型的HDLC被用于使用X.25协议的网络和帧中继网络,这种协议可以在局域网或广域网中使用,无论此网是公共的还是私人的。
在X.25版本的HDLC中,数据帧包含了一个数据包。在X.25网络中,数据在发送前先分成若干数据包,然后由路由器检测网络状况来确定路由,各数据包分别传送到目的节点,在目的节点按照正确的顺序合并为初始数据。X.25版本的HDLC采用点对点通信,通信方式采取全双工方式。这种类型的HDLC能够确保帧的差错释放和正确排序,称为LAPB(链路访问过程平衡)。
特点
1.透明传输。高级数据链路控制对任意比特组合的数据均能透明传输。“透明”是一个很重要的术语,它表示:某一个实际存在的事物看起来好象不存在一样。“透明传输”表示经实际电路传送后的数据信息没有发生变化。因此对所传送数据信息来说,由于这个电路并没有对其产生什么影响,可以说数据信息“看不见”这个电路,或者说这个电路对该数据信息来说是透明的。这样任意组合的数据信息都可以在这个电路上传送。
2.可靠性高。在高级数据链路控制规程中,差错控制的范围是除了F标志的整个帧,而基本型传输控制规程中不包括前缀和部分控制字符。另外高级数据链路控制对I帧进行编号传输,有效地防止了帧的重收和漏收。
3.传输效率高。在高级数据链路控制中,额外的开销比特少,允许高效的差错控制和流量控制。
4.适应性强。高级数据链路控制规程能适应各种比特类型的工作站和链路。
5.结构灵活在高级数据链路控制中,传输控制功能和处理功能分离,层次清楚,应用非常灵活。
类型
下面列出了不同类型的高级数据链路控制(HDLC)及其应用范围。
1.普通响应模式(NRM),应用范围:采用SDLC的多点网络;
2.链路访问协议(LAP),应用范围:早期X.25网络;
3.链路访问过程平衡(LAPB),应用范围:X.25网络;
4.ISDN链路访问协议-D信道(LAPD),应用范围:ISDN-D信道以及帧中继;
5.调制解调器链路存取规程(LAPM),应用范围:错误校验;
功能
帧控制
数据链路上传输的基本单位是帧。帧控制功能要求发送站把网络送来的数据信息分成若干码组,在每个码组中加入地址字段、控制字段、校验字段以及帧开始和结束标志,组成帧来发送;要求接收端从收到的帧中去掉标志字段,还原成原始数据信息后送到网络层。
帧同步
在传输过程中必须实现帧同步,以保证对帧中各个字段的正确识别。
差错控制
当数据信息在物理链路中传输出现差错,数据链路控制规程要求接收端能检测出差错并予以恢复,通常采用的方法有自动请求重发ARQ和前向纠错两种。采用ARQ方法时,为了防止帧的重收和漏收,常对帧采用编号发送和接收。当检测出无法恢复的差错时,应通知网络层做相应处理。
流量控制
流量控制用于克服链路的拥塞。它能对链路上信息流量进行调节,确保发送端发送的数据速率与接收端能够接收的数据速率相容。常用的流量控制方法是滑动窗口控制法。
链路管理
数据链路的建立、维持和终止,控制信息的传输方向,显示站的工作状态,这些都属于链路管理的范畴。
透明传输
规程中采用的标志和一些字段必须独立于要传输的信息,这就意味着数据链路能够传输各种各样的数据信息,即传输的透明性。
寻址
在多点链路中,帧必须能到达正确的接收站。
异常状态恢复
当链路发生异常情况时,如收到含义不清的序列或超时收不到响应等,能自动重新启动,恢复到正常工作状态。
操作行为
HDLC的操作就是在两个站点之间交换三种类型的帧的过程,根据帧的功能完成相应的语义,HDLC的操作主要有三个阶段,首先双方中有一方要初始化数据链路,使得帧能够以有序的方式进行交换。在这个阶段,双方需要就各种选项的使用达成一致意见,初始化链路之后,双方交换数据和控制信息,并且实施流量和差错控制。最后,双方中有一方要发出信号来终止操作,也就是断开链路的连接。
建立链路连接
HDLC必须能够初始化链路,即完成链路的连接,在HDLC中使用六个模式设置命令之一请求初始化,这些命令有以下作用和响应;
(1)通知请求对方初始化;(2)指出请求的三种模式中的哪一种;这些模式确定是否一端作为主站并控制交互,或者是否是对等的因此在交互时进行互相协作;(3)指出使用的序号。
如果一方接受这个请求,那么它的HDLC模块向初始化返回一个无编号确认(Unnumbered Acknowledged,UA)。如果这个请求被拒绝,那么它发出一个拆接方式(Disconnected Mode,DM)帧。HDLC协议实体中A向对方B发送SABM命令,并启动一个计时器。如果A收不到B发送的UA,那么在计时器超时的情况下A会重新发送SABM命令。如果A一直收不到B的UA或者DM,那么这一过程将会不断重复,或者在重试了规定的次数后,实体放弃尝试并向管理实体报告操作失败,在这种情况下就需要高层的介入。拆链的过程是某一方发送一个DISC命令,对方用UA确认来响应。就完成了拆链。
数据的传送
数据的传送就是帧的传送,正常的数据交换状态是一种全双工交换方式。当一个实体在没有接收到任何数据的情况下连续发送若干个I帧时,它的接收序号只是在不断的重复。如果实体在没有发出任何帧的情况下连续收到若干个I帧,那么它发出的下一个帧中的接收序号必须反映出这一累积效果。请注意,除了I帧之外,数据交换还可能会涉及到监控帧。也会出现忙碌状态的情况,导致这种状态存在的原因可能是由于HDLC实体处理I帧的速率无法跟上这些帧到达的速率,或者是用户接收数据的速率不如I帧中的数据到达的速率快。无论是哪一种情况,实体的接收缓冲区都会填满,它必须使用RNR命令来阻止进入缓冲区的I帧流。在数据传送的过程中也可能出现用REJ命令进行差错恢复的例子。
拆链
连接中的任何一方的HDLC模块都可以启动拆链操作,可能是由于模块本身因某种错误而引起的中断,也可能是由于高层用户的请求。HDLC通过发送一个拆链(disconnect,DISC)帧宣布连接中止,对方必须用UA做回答,表示接收拆链。