4.2.3 数据链路层协议
OSI参考模型数据链路层的功能比较多,需要进行差错控制(包括检错和纠错)、流量控制等,所以其协议复杂,称为数据链路传输控制规程。
1.数据链路传输控制规程
(1)数据链路传输控制规程的概念
第1章介绍过,数据链路由数据电路和两端的传输控制器(在DTE内)构成,如图4-5所示。数据链路是在数据电路已建立的基础上,通过两端的控制装置使发送方和接收方之间交换握手信号,双方确认后可开始传输数据信号。
图4-5 传输信道、数据电路与数据链路
为了在DTE与网络之间或DTE与DTE之间有效、可靠地传输数据信息,必须在数据链路这一层次上采取必要的控制手段对数据信息的传输进行控制,即传输控制。传输控制是遵照数据链路层协议来完成的,习惯上把数据链路层协议称为数据链路传输控制规程。
(2)数据链路传输控制规程的功能
概括起来,数据链路传输控制规程应具备以下功能。
①帧控制
在数据链路中,数据以“帧”为单位进行传送。“帧”是具有一定长度和一定格式的信息块。在不同的应用中,帧的长度和格式可以不同。帧控制功能要求发送方把从上层来的数据信息分为若干组,并分别在各组中加入开始与结束标志、地址字段、必要的控制信息字段以及校验字段,组成一帧;要求接收方在接收到的帧中去掉帧标志和地址等字段,还原成原始数据信息后送到上层。
②透明传送
在所传输的信息中,若出现了与帧开始、结束标志等相同的字符序列,在组帧过程中要采取措施打乱这些序列,以区别以上各种标志字符等,这样可保证用户传输的信息不受限制,即不必考虑可能出现的任何比特组合的含义(详见后述)。
③差错控制
数据链路传输控制规程应能采用纠错编码技术(如水平和垂直冗余校验、循环冗余校验等)进行差错检测,同时对正确接收的帧进行认可,对接收有差错的帧要求发方重发。为了防止帧的重收和漏收,发送时必须对帧进行编号,接收时按编号认可。
④流量控制
为了避免链路阻塞,数据链路传输控制规程应能对数据链路上的信息流量进行调节,能够决定暂停、停止或继续接收信息。
⑤链路管理
链路管理包括控制信息的传输方向,建立和结束链路的逻辑连接,显示数据终端设备的工作状态等。
⑥异常状态的恢复
当链路发生异常情况时,如收到含义不清的序列、数据帧不完整或超时收不到响应时,能够自动地重新启动恢复到正常工作状态。
(3)数据链路传输控制规程的种类
目前已采用的传输控制规程基本上分为两大类:基本型控制规程和高级数据链路控制规程。
基本型控制规程是面向字符型的传输控制规程,具有如下特征:
·以字符作为传输信息的基本单位,并规定了10个控制字符用于传输控制。
·差错控制方式采用检错重发(ARQ),具体重发方式是停止等待发送,即发送端在送出一组信息之后要等待对方的应答,收到肯定应答后,再发送下一组信息,不然则重发刚才发送的信息。
·多半采用半双工通信方式,这样在双方在进行通信时往往有多次收发状态的转换,会影响线路和通道的利用率。
·可以采用异步(起止式)和同步传输方式。
·传输代码采用国际5号码。
·一般采用二维奇偶监督码(即水平垂直奇偶监督码)检错。
基本型控制规程与高级数据链路控制规程相比,可靠性和传输效率均较低,所以高级数据链路控制规程应用较广泛。下面重点介绍高级数据链路控制规程(HDLC)。
2.高级数据链路控制规程
(1)HDLC的特征
HDLC是面向比特的传输控制规程,以帧为单位传输数据信息和控制信息,其发送方式为连续发送(一边发一边等对方的回答),传输效率比较高;而且HDLC采用循环码进行差错校验,可靠性高。
(2)HDLC帧结构
HDLC帧的基本格式(帧结构)如图4-6所示。
图4-6 HDLC帧的基本格式
各字段的作用如下。
①标志字段(F)
HDLC规程指定采用8 bit组01111110为标志序列,称为F标志,用于帧同步,表示一帧的开始和结束。相邻两帧之间的F,既可作为前一帧的结束,又可作为下一帧的开始。标志序列也可作帧间填充字符,因而在数据链路上的各个数据站(数据终端)都要不断地搜索F标志,以判断帧的开始和结束。
因为F的特殊作用,若一帧内两个F之间的其他各字段A、C、I、FCS中出现类似标志序列的比特组合,接收端则会错误地认为一帧结束,即过早地终止帧。必须避免这种现象发生,所以在一帧内两个F之间的各宇段A、C、I、FCS不允许出现类似标志序列的比特组合,但又要保证数据信号的透明传输(所谓透明传输是针对终端而言的,即对终端发出的数据序列不加以任何限制),这显然是矛盾的。
为了解决这个矛盾,HDLC规程所采取的措施是“0”插入和删除技术。即在发送端将数据信息和控制信息组成帧后,检查两个F之间的字段,若有5个连“1”,就在第5个“1”之后插入一个“0”。在接收端根据F识别出一个帧的开始和结束后,对接收帧的比特序列进行检查,当发现起始标志和结束标志之间的比特序列中有连续5个“1”时,自动将其后的“0”删去,如图4-7所示。这样使HDLC帧所传送的用户信息内容不受任何限制,从而达到数据信号的透明传输,又可避免过早地终止帧。
图4-7 “0”比特插入和删除示意图
②地址字段(A)
地址字段表示数据链路上发送终端和接收终端的地址,一般为8 bit,共可表示28=256个终端的地址。
当终端的个数大于256个时,可使用扩充字段,扩充为两个字节。这时,每个地址字节的最低比特位用作扩充指示,即最低位置“0”,表示后续字节为扩充字段;最低位为“1”时,后续字节不是扩充字段。扩充的8 bit字节格式和基本地址的8 bit格式一样,这样就扩展了地址范围。当然,每一组8 bit可表示的地址只有27=128个。
③控制字段(C)
控制字段为8 bit,用于表示帧类型、帧编号以及命令、响应等。根据C字段的构成不同,可以把HDLC帧分成3种类型:信息帧(简称I帧)、监控帧(简称S帧)和无编号帧(简称U帧)。另外,C字段也可扩充到2个字节。
④信息字段(I)
信息字段包含了用户的数据信息和来自上层的控制信息,它不受格式或内容的限制,其长度没有具体规定,但必须是8 bit的整倍数,而且最大长度受限。在实际应用中,信息长度受收发终端缓冲存储区大小和信道差错率的限制。
⑤帧校验字段(FCS)
帧校验字段(FCS)用于对帧进行循环冗余校验,校验的范围包括除标志字段之外的所有字段,但为了进行透明传输而插入的“0”不在校验范围内。该字段一般为16 bit,其生成多项式为x 16+x 12+x 5+1。对于要求较高的场合,FCS可以用32 bit,其生成多项式为
x 32+x 26+x 23+x 22+x 16+x 12+x 11+x 10+x 8+x 7+x 5+x 4+x 2+x+1。