第三章:数据链路层(二)

来源:互联网 发布:运动文胸 知乎 编辑:程序博客网 时间:2024/06/06 02:23

但是缓冲区容量总是有限的,如果接收方不能以发送方的发送速率处理接收到的帧,则还是可能用完缓冲容量而暂时过载。为此,可引入类似于空闲RQ控制方案的调整措施,其本质是在收到一确定帧之前,对发送方可发送的帧的数目加以限制。这是由发送方调整保留在重发表中的待确认帧的数目来实现的。如果接收方来不及时对心到的帧进行处理,则便停发确认信息,此时发送方的重发送方的重发表就会增长,当达到重发表限度时,发送方就不再发送新帧,直至再次收到确认信息为止。
  不了实现此方案,发送方存放待确认帧的重发表中,应设置待确认帧数目的最大限度,这一限度被称为链路的发送窗口。显然,如果窗口设置为1,即发送方缓冲能力仅为一个帧,则传输控制方案就回到了空闲RQ方案,此时传输效率很低。故窗口限度应选为使接收方尽量能处理或接受收到的所有帧。当然选择时还必须考虑诸如帧的最大长度、可使用的缓冲存空间以及传输速率等因素。
  重发表是一个连续序号的列表,对应发送方已发送但尚未确认的那些帧。这些帧的序号有一个最大值,这个最大值即发送窗口的限度。所谓发送窗口就是指示发送方已发送但尚未确认的帧序号队列的界,其上、下界分别称为发送窗口的上、下沿,上、下沿的部距称为窗口尺寸。接收方类似地也有接收窗口,它批示允许接收和帧的序号。
  发送方每次发送一帧后,待确认帧的数目便增1,每收到一个确认信息后,待确认帧的数目便减1。当重发表长度计数值,即待确认帧的数目等于发送窗口尺寸时,便停止发送新的帧。
  一般帧号只取有限位二进制数,到一定时间后就又反复循环。若帧号配3位二进制数,则帧号在0~7间循环。如果发送窗口尺寸取值为2。则发送如图3.15所示。图中发送方阴影部分表示打开的发送窗口,接收方阴影部分则表示打开的接收窗口。当传送过程进行时,打开的窗口位置一直在滑动,所以也称为滑动窗口(Slidding Window),或简称为滑窗。



图3.15 滑动窗口状态变化过程

  图3.15中的滑动窗口变化过程可叙述如下(假设发送窗口尺寸为2,接收窗口尺寸为1):
  ①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,表示等待接收0号帧;
  ②发送方已发送0号帧,此时发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态同前,仍等待接收0号帧;
  ③发送方在未收到0号帧的确认返器信息前,继续发送1号帧。此时,1号窗口打开,表示1号帧也属等待确认之列。至昆,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变;
  ④接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变;
  ⑤发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变;
  ⑥发送方继续发送2号帧,2号窗口打开,表示2号帧也纳入待确认之列。至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;
  ⑦接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变;
  ⑧发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。
  一般来说,凡是在一定范围内到达的帧,即使它们不按顺序,接收方也要接收下来。若把这个范围看成是接收窗口的话,由接收窗口的大小也应该是大于1的。而Go-back-N正是接收窗口等于1的一个特例,选择重发也可以看做是一种滑动窗口协议,只不过其发送窗口和接收窗口都大于1。若从滑动窗口的观点来统一看待空闲RQ、Go-back-N及选择重发三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已:
  空闲RQ:  发送窗口=1,接收窗口=1;
  Go-back-N: 发窗口>1,接收窗口>1;
  选择重发: 发送窗口>1,接收窗口>1。
  若帧序号采用3位二进制编码,由最大序号为Smax=2^3-1=7。对于有序接收方式,发送窗口最大尺寸选为Smax;对于无序接收方式,发送窗口最大尺寸至多是序号范围的一半。发送方管理超时控制的计时器数应等于缓冲器数,而不是序号空间的大小。

 3.3.4 数据链路控制协议举例

  数据链路控制协议也称链路通信规程,也就是OSI参考模型中的数据链路层协议。链路控制协议可分为异步协议和同步协议两大类。
  异步协议以字符为独立的信息传输单位,在每个字符的起始处开始对字符内的比特实现同步,但字符与字符之间的间隔时间是不固定的(即字符之间是异步的)。由于发送器和接收器中近似于同一频率的两个约定时钟,能够在一段较短的时间内保持同步,所以可以用字符起始处同步的时钟来采样该字符中的各比特,而不需要每个比特再用其他方法同步。前面介绍过的“起—止”式通信规程便是异步协议的典型,它是靠起始为(逻辑0)和停止位(逻辑1)来实现字符的定界及字符内比特的同步的。异步协议中由于每个传输字符都要添加诸如起始位、校验位、停止位等冗余位,故信道利用率很低,一般用于数据速率较低的场合。
  同步协议是以许多字符或许多比特组织成的数据块——帧为传输单位,在帧的起始处同步,使帧内维持固定的时钟。由于采用帧为传输单位,所以同步协议能更有效地利用信道,也便于实现差错控制、流量控制等功能。
  同步协议又可分为面向字符的同步协议、面向比特的同步协议及面向字节计数的同步协议三种类型。其中面向字节计数的同步协议在本节前面的帧同步功能中已做了较详细的介绍,下面介绍另两种同步协议。

 1.面向字符的同步控制协议
  面向字符的同步协议是最早提出的同步协议,其典型代表是IBM的二进同步通信BSC(Binary Synchronous Communication)协议。随后ANSI和ISO都提出了类似的相应标准。
  任何链路层协议均可由链路建立、数据传输和链路拆除三部分组成。位实现建链、拆链等链路管理以及同步等各种功能,除了正常传输的数据块和报文外,还需要一些控制字符。BSC协议用ASCII和EBCDIC字符集定义的传输控制字符来实现相应的功能。这些传输控制字符的标记、名字及ASCII码值和EBCDIC码值见表3.3。

表3.3

传输控制字符

 标记SOHSTXETXEOTENQACKDELNAKSYNETB名称序始文始文终送毕询问确认转义否认同步块终ASCII码值01H02H03H04H05H06H10H15H16H17HEBCDIC码值01H02H03H37H2DH2EH10H3DH32H26H

  各传输控制字符的功能如下:
  SOH(START OF hEAD):序始,用于表示报文的标题信息或报头的开始。
  STX(Start of test):文始,标志标题信息的结束和报关文本的开始。
  ETX(End of Text):文终,标志报文文本的结束。
  EOT(End of Transmission):送毕,用以表示一个或多个文本的结束,并拆除链路。
  ENQ(Enquire):询问,用以请求远程站给出响应,响应可能包括站的身份或状态。
  ACK(Acknowledge):确认,由接收方发出的作为对正确接收到报文的响应。
  DLE(Data Link Escape):转义,用以修改紧跟其后的有限个字符的意义。在BSC中
实现透明方式的数据传输,或者当10个传输控制字符不够用时提供新的转义伟输控制字符。
  NAK(Negative Acknowledge):否认,由接收方发出的作为对未正确接收的报文的响应。
  SYN(Synchronous):同步字符,在同步协议中,用以实现节点之间的字符同步,或用于
在无数据传输时保持该同步。
  ETB(End of transmission Block):块终或组终,用以表示当报文分成多个数据块的结束。
  BSC协议将在链路上传输的信息分为数据和监控报文两类。监控报文又可分为正向监控和反向监控两种。每一种报文中至少包括一个传输控制字符,用以确定报文中信息的性质或实现某种控制作用。
  数据报文一般由报头和文本组成。文本是要传送的有效数据信息,而报头是与文本传送及处理有关的辅助信息,报头有时也可不用。对于不超过长度限制的报文可只用一个数据块发送,对较长的报文则分作多块发送,对较长的报文则分作多块发送,每一个数据块作为一个传输单位。接收方对于每一个收到的数据块都要给以确认,发送方收到反回的确认后,才能发送下一个数据块。
  BSC协议的数据块有如下四种格式:

  (1)不带报头的单块报文或分块传输中的最后一块报文:┈┈SYNSYNSTX报文ETXBCC  (2)带报头的单块报文:┈┈SYNSYNSOH报头STX报文ETXBCC  (3)分块传输中的第一块报文:┈┈SYNSYNSOH报头STX报文ETBBCC  (4)分块传输中的中间报文:┈┈SYNSYNSTX报文ETBBCC

  BSC协议中所有发送的数据均跟在至少两个SYN字符之后,发使接收方能实现字符同步。报头字段的包识别符及地址。所有数据块在块终限定符(ETX或ETB)之后还有块校验字符BCC(block check character),bcc可以是垂直奇偶校验或者说16位CRC,校验范围从STX开始到ETX或ETB为止。
  当发送的报文是二进制数据库而不是字符串时,二进制数据中形同传输控制字符的比特串将会引起传输混乱。为使二进制数据中允许出现与传输控制字符相同的数据(即数据的透明性),可在各帧中真正的传输控制字符(SYN除外)前加上DLE转义字符,在发送时,若文本中也出现与DLE字符相同的二进制比特串,则可插入一个外加以标记。在接收端则进行同样的检测,若发现单个的DLE字符,则可知其后为传输控制字符;若发现连续两个DLE字符,则知其后的DLE为数据,在进一步处理前将其中一个删去。
  正、反向监控报文有如下四种:

 (1)肯定确认和选择响应:(2)否定确认和选择响应: SYNSYNACKSYNSYNNAK (3)轮询/选择请求:(4)拆链: SYNSYNP/S前缀站地址ENQSYNSYNEOT

  监控报文一般由单个传输控制字符或由若干个其它字符引导的单个传输控制字符组成。引导字符统称为前缀,它包含识别符(序号)、地址信息、状态信息以及其它所需信息。ACK和NAK监控报文的作用,首先是作为对先前所发数据块是否正确接收的响应,因而包含识别符(序号);其次,用做对选择监控信息的响应,以ACK表示所选站能接收数据块,而NAK不能接收。ENQ用作轮询和选择监控报文,在多站结构中,轮询或选择的地址在ENQ字符前。EOT监控报文用以标志报文交换的结束,并在两站点间拆除逻辑链路。
  由于BSC协议与特定的字符编码集关系过于密切,故兼容性较差。为满足数据透明性而采用的字符填充法,实现起来比较麻烦,且依赖于所采用的字符编码集。另外,由于BSC是一个半双工协议,它的链路伟传输效率很低。不过,由于BSC协议需要的缓冲存储空间较小,因而在面向终端的网络系统中仍然被广泛使用。

 2、面向比特的同步协议
  这里以ISO的高级数据链路控制规程HDLC协议为例,来讨论面向比特的同步控制协议的一般原理与操作过程。面向比特的数据链路控制协议的典型,HDLC具有发以下特点:协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现;全双工通信,不必等待确认便可连续发送数据,有较高的数据链路传输效率;所有帧均采用CRC校验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高;传输控制功能与处理功能分离,具有较大的灵活性。由于以上特点,目前网络设计普遍使用HDLC数据链路控制协议。
  (1)HDLC的操作方式。HDLC是通用的数据链路控制协议,在开始建立数据链路时,允许选用特定的操作方式。所谓操作方式,通俗地讲就是某站点是以主站点方式操作还是以从站方式操作,或者是二者兼备。      链路上用于控制目的的站称为主站,其它的受主站控制的站称为从站。主站对数据流进行组织,并且对链路上的差错实施恢复。由主站发往从站的帧称为命令帧,而从从站返回主站的帧称为响应帧。连有多个站点的链路通常使用轮询技术,轮询其它站的站称为主站,而在点-点链路中每个站均可为主站。主站需要比从站有更多的逻辑功能,所以当终端与主机相连时,主机一般总是主站。在一个站连接多个链路的情况下,该站对于一些链路而言可能是主站,而对于一些链路而言又可能是从站。有些站可兼备主站和从站的功能,这种站称为组合站,用于组合站之间信息传输的协议是对称的,即在链路上主、从站具有同样的传输控制功能,这又称作平衡操作。相对的,那种操作时有主站、从站之分的,且各自功能不同的操作,称为非平衡操作。
  HDLC中常有的操作方式有以下三种:
  ①正常响应方式NRM(Norma Responses Model) 。这是一非平衡数据链路方式,有时也称非平衡正常响应方式。该操作方式适用于面向终端的点—点或一点与多点的链路。在这种操作方式中,传输过程由主站启动,从站只有收到主站某个命令帧后,才能作出响应向主站传输信息。响应信息可以由一个或多个帧组成,若信息由多个帧组成,则应指出哪一个是最后一帧 。主站负责整个链路,且具有轮询、选择从站及向从站发送命令的权利,同时也负责对超时、重发及各类恢复操作的控制。
  ②异步响应方式ARM Asynchronous Responses Mode)这也是一种非平衡数据链路操作方式,与NRM不同的是,ARM下的传输过程由从站启动。从站主的动发送给主站的一个或一组帧中可包含有信息,也可以是仅以控制为目的而发的帧。在这种操作方式,与NRM不同的是,ARM下的传输过程由从站启动。从站主的动发送给主站的一个或一组帧中可包含有信息,也可以是仅以控制为目的而发的帧。在这种操作方式下,由从站来控制超时和重发。该方式对采用轮询方式的多站链路来说是必不可少的。
  ③异步平衡方式ABM(Asynchronous Balanced Mode).这是一种允许任何节点来启动传输的操作方式。为了提高链路传输效率,节点之间在两个方向上都需要有较高的信息传输量。在这种操作方式下,任何时候任何站点都能启动传输操作,每个站点既可作为主站又可作为从站,即每个站都是组合站。各站都有相同的一组协议,任何站点都可以发送或接收命令,也可以给出应答,并且各站对差错恢复过程都负有相同的责任。
  (2)HDLC的帧格式。在HDLC中,数据和控制报文均以帧的标准格式传送。HDLC中的帧类似于BSC字符块,但BSC协议中的数据报文和控制报文是独立传输的,而HDLC中命令和响应以统一的格式按帧传输。完整的HDLC帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成,其格式如下:

标志

地址控制信息帧校验序列标志

F
01111110

A
8位

C
8位

I
N位

FCS
16位

F
01111110

  ①标志字段(F):标志字段01111110的比特模式,用以标志帧的起始和前一帧的终止。通常,在不进行帧传送的时刻,信道仍处于激活状态。标志字段也可以作为帧与帧之间的填充字符。在这种状态下,发送方不断地发送标志字段,而接收方则检测每一个收到的标志字段,一旦发现某个标志字段后面不再是一个标志字段,便可认为一个新的帧传送已经开始。采用“0比特插入法”可以实现数据的透明传输,该法在发送端检测除标志码以外的所有字段,若发现连续5个“1”出现时,便在其后添插1个“0”,然后继续发送后面的比特流;在接收端同样检测除标志码以外所有字段,若发现连续5个“1”后是“0”,则将其删除以恢复比特流的原貌。
  ②地址字段(A):地址字段的内容取决于所采用的操作方式。在操作方式中,有主站、从站、组合站之分,每一个从站和组合站都被分配一个惟一的地址。命令帧中的地址字段携带的地址是对方站的地址,而响应帧中的地址字段所携带的地址是本站的地址。某一地址也可分配给不止一个站,这种地址称为组地址,利用一个组地址传输的帧能被组内所有拥有该组地址的站接收,但当一个从站或组合站发送响应时,它仍应当用它惟一的地址。还可以用全“1”地址来表示包含所有站的地址,这种地址称为广播地址,含有广播地址的帧传送给链路上所有的站。另外,还规定全“1”地址为无站地址,这种地址不分配给任何站,仅用做测试。
  ③控制字段(C):控制字段用于构成各种命令和响应,以便对链路进行监视和控制。发送方主站或组合站利用控制字段来通知被寻址的从站或组合站执行约定的操作;相反,从站用该字段作为对命令的响应,报告已完成的操作或状态的变化。该字段是HDLC的关键,下面还将详细介绍。
  ④信息字段(I):信息字段可以是任意的二进制比特串。比特串长度未做严格限定,其上限由FCS字段或站点的缓冲器容量来确定,目前用得最较多的是1000~2000比特;而下限可以为0 ,即无信息字段。但是,监控帧(S帧)中规定不可有信息字段。
  ⑤帧校验序列字段(FCS):帧校验序列字段可以使用16位CRC,对两个标志字段之间的整个帧的内容进行校验。FCS的生成多项式由CCITT V.41建议规定为 X16+X12+X5+1。
  (3)HDLC的帧类型。HDLC有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)三种不同类型的帧,各类帧中控制字段的格式及比特定义如下表3.4:

控制字段位12345678I格式0N(S)PN(R)S格式1   0S1  S2P/FN(R)U格式1   1M1  M2P/FM3  M4  M5

  控制字段中的第1位或第1、第2位表示传送帧的类型。第七位是P/K位,即轮询/终止(Poll/Final)位。当P/F位用于命令帧(由主站发出)时,起轮询的作用,即当该位为“1”时,要求被轮询的从站给出响应,所以此时P/F位可称轮询位(或P);当P/F位用于响应帧(由从站发出)时,称为终止位(或F位),当其为“1”时,表示接收方确认的结束。为了进行连续传输,需要对帧进行编号,所以控制字段中严寒包括了帧的编号。
  ①信息帧(I帧):信息帧用于传送有效信息或数据,通常简称I帧。I帧以控制字段第三者位为“0”来标志。信息帧控制字段宫的N(S)用于存放发送帧序号,以使发送方不必等待确认而连续发送多帧。N(R)用于存放接收方下一个预期要接收的帧的序号,如N(R)=5,即表示接收方下一帧要接收5号帧,换言之,5号帧前的各帧接收方都已正确接收到。N(S)和N(R)均为3位二进制编码,可取值0~7。
  ②临控帧(S帧):监控帧 用于差错控制和流量控制,通常简称S帧。S帧以控制字段第1、2位为“10”来标志。S帧不带信息字段,帧长只有6个字节即使8个比特。S帧的控 制字段的第3、4位为S帧类型编码,共有四种不同组合,分别表示:
  “00”—接收就绪(RR),由主站可以使用RR型S帧来轮询从站,即希望从站传输编号为N(R)的I帧,若存在这样的帧,便进行传输;从站也可用RR型S帧来做响应,表示从站期望接收的下一帧的编号是N(S)。
  “01”—拒绝(REJ),由主站或从站发送,用以要求发送方对从编号为N(R)开始的帧及其以后所有的帧进行重发,这也暗示N(R)以前的I帧已被正确接收。
  “10”—接收未就绪(RNR),表示编号小于N(R)的I帧已被收到,但目前正处于忙状态,尚未准备好接收编号为N(R)的I帧,这可用来对链路流量进行控制。
  “11”—选择拒绝(SREJ),它要求发送方发送编号为N(R)的单个I帧,并暗示其它编号的I帧已全部确认。
  可以看出,接收就绪RR型S帧和接收未就绪RNR型S帧有有两个主要功能:首先,这两种类型的S帧用来表示从站已准备好或未就准备好接收信息;其次,确认编号小于N(R)的所有接收到的I帧。拒绝REJ和选择拒绝SREJ型S帧,用于向对方站反指出发生了差错。REJ帧对应Go-back-N策略,用以请求重发N(R)起始的所有帧,而N(R)以前的帧已被确认,当收到一个N(S)等于REJ型S帧的N(R)的I帧后,REJ状态即可清除。SREJ帧对应选择重发策略,当收到一个N(S)等于SREJ帧的N(R)的I帧时,SREJ状态即应消除。
  ③无编号帧(U帧):无编号帧因其控制字段中不包含编号N(S)和N(R)而得名,简称U帧。U帧用于提供对链路的建立、拆除以及多种控制功能,这些控制功能用于个M位(M1~M5,也称修正位)来定义,可以定义气32种附加的命令或应答功能


原创粉丝点击