哪个银行分布最广泛区域极为广泛的企业采用怎样的网络体系结构

sponsored links
计算机网络体系结构及协议
http://www./NetworkTheory/41.htm
网络体系结构及OSI基本参考模型 3.1.1& 协议及体系结构  通过通信信道和设备互连起来的多个不同地理位置的计算机系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。 1.网络协议(Protocol)  为进行计算机网络中的数据交换而建立的规则、标准或约定的集合。协议总是指某一层协议,准确地说,它是对同等实体之间的通信制定的有关通信规则约定的集合。  网络协议的三个要素:  1)语义(Semantics)。涉及用于协调与差错处理的控制信息。  2)语法(Syntax)。涉及数据及控制信息的格式、编码及信号电平等。  3)定时(Timing)。涉及速度匹配和排序等。 2.网络的体系结构及其划分所遵循的原则  计算机网络系统是一个十分复杂的系统。将一个复杂系统分解为若干个容易处理的子系统,然后“分而治之”,这种结构化设计方法是工程设计中常见的手段。分层就是系统分解的最好方法之一。  在(图3.1)所示的一般分层结构中,n 层是n-1层的用户,又是n+1层的服务提供者。n+1层虽然只直接使用了n层提供的服务,实际上它通过n层还间接地使用了n-1层以及以下所有各层的服务。
图3.1 层次模型
  层次结构的好处在于使每一层实现一种相对独立的功能。分层结构还有利于交流、理解和标准化。  所谓网络的体系结构(Architecture)就是计算机网络各层次及其协议的集合。层次结构一般以垂直分层模型来表示(图3.2)。
图3.2 计算机网络的层次模型
  层次结构的要点:  1)除了在物理媒体上进行的是实通信之外,其余各对等实体间进行的都是虚通信。  2)对等层的虚通信必须遵循该层的协议。  3)n层的虚通信是通过n/n-1层间接口处n-1层提供的服务以及n-1层的通信(通常也是虚通信)来实现的。  层次结构划分的原则:  1)每层的功能应是明确的,并且是相互独立的。当某一层的具体实现方法更新时,只要保持上、下层的接口不变,便不会对邻居产生影响。  2)层间接口必须清晰,跨越接口的信息量应尽可能少。  3)层数应适中。若层数太少,则造成每一层的协议太复杂;若层数太多,则体系结构过于复杂,使描述和实现各层功能变得困难。  网络的体系结构的特点是:  1)以功能作为划分层次的基础。  2)第n层的实体在实现自身定义的功能时,只能使用第n-1层提供的服务。  3)第n层在向第n+1层提供的服务时,此服务不仅包含第n层本身的功能,还包含由下层服务提供的功能。  4)仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽。 3.1.2& OSI基本参考模型 1.开放系统互连(Open System Interconnection)基本参考模型是由国际标准化组织(ISO)制定的标准化开放式计算机网络层次结构模型,又称ISO's OSI参考模型。“开放”这个词表示能使任何两个遵守参考模型和有关标准的系统进行互连。  OSI包括了体系结构、服务定义和协议规范三级抽象。OSI的体系结构定义了一个七层模型,用以进行进程间的通信,并作为一个框架来协调各层标准的制定;OSI的服务定义描述了各层所提供的服务,以及层与层之间的抽象接口和交互用的服务原语;OSI各层的协议规范,精确地定义了应当发送何种控制信息及何种过程来解释该控制信息。  需要强调的是,OSI参考模型并非具体实现的描述,它只是一个为制定标准机而提供的概念性框架。在OSI中,只有各种协议是可以实现的,网络中的设备只有与OSI和有关协议相一致时才能互连。  如图形3.3所示,OSI七层模型从下到上分别为物理层(Physical Layer,PH)、数据链路层(Data Link Layer,DL)、网络层(Network Layer,N)、运输层(Transport Layer,T)、会话层(Session Layer,S)、表示层(Presentation Layer,P)和应用层(Application Layer,A)。
图3.3 ISO's OSI参考模型
  从图中可见,整个开放系统环境由作为信源和信宿的端开放系统及若干中继开放系统通过物理媒体连接构成。这里的端开放系统和中继开放系统,都是国际标准OSI7498中使用的术语。通俗地说,它们变相当于资源子网中的主机和通信子网中的节点机(IMP)。只有在主机中才可能需要包含所有七层的功能,而在通信子网中的IMP一般只需要最低三层甚至只要最低两层的功能就可以了。 2.层次结构模型中数据的实际传送过程如图3.4所示。图中发送进程送给接收进程和数据,实际上是经过发送方各层从上到下传递到物理媒体;通过物理媒体传输到接收方后,再经过从下到上各层的传递,最后到达接收进程。  在发送方从上到下逐层传递的过程中,每层都要加上适当的控制信息,即图中和H7、H6、...、H1,统称为报头。到最底层成为由“0”或“1”组成和数据比特流,然后再转换为电信号在物理媒体上传输至接收方。接收方在向上传递时过程正好相反,要逐层剥去发送方相应层加上的控制信息。  因接收方的某一层不会收到底下各层的控制信息,而高层的控制信息对于它来说又只是透明的数据,所以它只阅读和去除本层的控制信息,并进行相应的协议操作。发送方和接收方的对等实体看到的信息是相同的,就好像这些信息通过虚通信直接给了对方一样。
图3.4 数据的实际传递过程
  各层功能简要介绍:  (1)物理层----定义了为建立、维护和拆除物理链路所需的机械的、电气的、功能的和规程的特性,其作用是使原始的数据比特流能在物理媒体上传输。具体涉及接插件的规格、“0”、“1”信号的电平表示、收发双方的协调等内容。  (2)数据链路层----比特流被组织成数据链路协议数据单元(通常称为帧),并以其为单位进行传输,帧中包含地址、控制、数据及校验码等信息。数据链路层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路改造成对网络层来说无差错的数据链路。数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞。  (3)网络层----数据以网络协议数据单元(分组)为单位进行传输。网络层关心的是通信子网的运行控制,主要解决如何使数据分组跨越通信子网从源传送到目的地的问题,这就需要在通信子网中进行路由选择。另外,为避免通信子网中出现过多的分组而造成网络阻塞,需要对流入的分组数量进行控制。当分组要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。  (4)运输层----是第一个端--端,也即主机--主机的层次。运输层提供的端到端的透明数据运输服务,使高层用户不必关心通信子网的存在,由此用统一的运输原语书写的高层软件便可运行于任何通信子网上。运输层还要处理端到端的差错控制和流量控制问题。  (5)会话层----是进程--进程的层次,其主要功能是组织和同步不同的主机上各种进程间的通信(也称为对话)。会话层负责在两个会话层实体之间进行对话连接的建立和拆除。在半双工情况下,会话层提供一种数据权标来控制某一方何时有权发送数据。会话层还提供在数据流中插入同步点的机制,使得数据传输因网络故障而中断后,可以不必从头开始而仅重传最近一个同步点以后的数据。  (6)表示层----为上层用户提供共同的数据或信息的语法表示变换。为了让采用不同编码方法的计算机在通信中能相互理解数据的内容,可以采用抽象的标准方法来定义数据结构,并采用标准的编码表示形式。表示层管理这些抽象的数据结构,并将计算机内部的表示形式转换成网络通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的表示变换功能。  (7)应用层是开放系统互连环境的最高层。不同的应用层为特定类型的网络应用提供访问OSI环境的手段。网络环境下不同主机间的文件传送访问和管理(FTAM)、传送标准电子邮件的文电处理系统(MHS)、使不同类型的终端和主机通过网络交互访问的虚拟终端(VT)协议等都属于应用层的范畴。
3.2 物理层 3.2.1&物理层接口与协议   物理层位于 OSI参与模型的最低层,它直接面向实际承担数据传输的物理媒体(即信道)。物理层的传输单位为比特。物理层是指在物理媒体之上为数据链路层提供一个原始比特流的物理连接。  物理层协议规定了与建立、维持及断开物理信道所需的机械的、电气的、功能性的和规和程性的特性。其作用是确保比特流能在物理信道上传输。
图3.5 DTE-DCE接口框图
  ISO对OSI模型的物理层所做的定义为:在物理信道实体之间合理地通过中间系统,为比特传输所需的物理连接的激活、保持和去除提供机械的、电气的、功能性和规程性的手段。比特流传输可以采用异步传输,也可以采用同步传输完成。  另外,CCITT在X.25建议书第一级(物理级)中也做了类似的定义:利用物理的、电气的、功能的和规程的特性在DTE和DCE之间实现对物理信道的建立、保持和拆除功能。这里的DTE(Date Terminal Equipment)指的是数据终端设备,是对属于用户所有的连网设备或工作站的统称,它们是通信的信源或信宿,如计算机、终端等;DCE(Date Circuit Terminating Equipment 或 Date Communications Equipment),指的是数据电路终接设备或数据通信设备,是对为用户提供入接点的网络设备的统称,如自动呼叫应答设备、调制解调器等。  DTE-DCE的接口框如图3.5所示,物理层接口协议实际上是DTE和DCE或其它通信设备之间的一组约定,主要解决网络节点与物理信道如何连接的问题。物理层协议规定了标准接口的机械连接特性、电气信号特性、信号功能特性以及交换电路的规程特性,这样做的主要目的,是为了便于不同的制造厂家能够根据公认的标准各自独立地制造设备。使各个厂家的产品都能够相互兼容。  1.机械特性:  规定了物理连接时对插头和插座的几何尺寸、插针或插孔芯数及排列方式、锁定装置形式等。
图3.6 常用连接机械特性
  图形3.6列出了各类已被ISO标准化了的DCE连接器的几何尺寸及插孔芯数和排列方式。一般来说,DTE的连接器常用插针形式,其几何尺寸与DCE连接器相配合,插针芯数和排列方式与DCE连接器成镜像对称。  2.电气特性:  规定了在物理连接上导线的电气连接及有关的电咱路的特性,一般包括:接收器和发送器电路特性的说明、表示信号状态的电压/电流电平的识别、最大传输速率的说明、以及与互连电缆相关的规则等。  物理层的电气特性还规定了DTE-DCE接口线的信号电平、发送器的输出阻抗、接收器的输入阻抗等电器参数。
(a)非平衡发送器 接收器  (b)非平衡发送器 差动接收器 (c)平衡发送器 差动接收器 图3.7 电器连接方式
  DTE与DCE接口的各根导线(也称电路)的电气连接方式有非平衡方式、采用差动接收器的非平衡方式和平衡方式三种。  1)非平衡方式。 采用分立元件技术设计的非平衡接口,每个电路使用一根导线,收发两个方向共用一根信号地线,信号速率《20kbps,传输距离《15。由于使用共用信号地线,所以会产生比较大的串扰。CCITTV.28建议采用这种电气连接方式,EIA RS-232C标准基本与之兼容。  2)采用差动接收器的非平衡方式。 这类采用集成电路技术的非平衡接口,与前一种方式相比,发送器仍使用非平衡式,但接收器使用差动接收器。每个电路使用一根导线,但每个方向都使用独立的信号地线,使串扰信号较小。这种方式的信号速率可达300kbps,传输距离为10m(300kbps时)-1000m(&=3kbps时)。CCITT V.10/X.26建议采用这种电气连接方式,EAI RS-423标准与之兼容。  3)平衡方式。采用集成集成电路技术设计的平衡接口,使用平衡式发送器和差动式接收器,每个电路采用两根导线,构成各自完全独立的信号回路,使得串扰信号减至最小。这种方式的信号速率&=10Mbps,传输距离为10m(10Mbps时)-1000m(&=100kbps时)。CCITT V.11/X.27建议采用这种电气连接方式,EAI RS-423标准与之兼容。  图3.7给出这三种电气连接方式的结构。  3.功能特性:  规定了接口信号的来源、作用以及其它信号之间的关系。  4.规程特性:  规定了使用交换电路进行数据交换的控制步骤,这些控制步骤的应用使得比特流传输得以完成。      3.2.2&物理层协议举例 1.EIA RS-232C接口标准  EIA RS-232C是由美国电子工业协会EIA(Electronic Industry Association)在1969年颁布的一种目前使用最广泛的串行物理接口Recommended Standard)的意思是“推荐标准”,232是标识号码,而后缀“C”则表示该推荐标准已被修改过的次数。  RS-232标准提供了一个利用公用电话网络作为传输媒体,并通过调制解调器将远程设备连接起来的技术规定。远程电话网相连接时,通过调制解调器将数字转换成相应的模拟信号,以使其能与电话网相容;在通信线路的另一端,另一个调制解调器将模拟信号逆转换成相应的数字数据,从而实现比特流的传输。图3.8(a)给出了两台远程计算机通过电话网相连的结构图。从图中可看出,DTE实际上是数据的信源或信宿,而DCE则完成数据由信源到信宿的传输任务。RS-232C标准接口只控制DTE与DCE之间的通信,与连接在两个DCE之间的电话网没有直接的关系。
图3.8 RS-232C的远程连接和近地连接
  RS-232C标准接口也可以如图3.8(b)所示用于直接连接两台近地设备,此时既不使用电话网也不使用调制解调器。由于这两种设备必须分别以DTE和DCE方式成对出现才符合RS-232C标准接口的要求,所以在这种情况下要借助于一种采用交叉跳接信号线方法的连接电缆,使得连接在电缆两端的DTE通过电缆看对方都好象是DCE一样,从而满足RS-232C接口需要DTE-DCE成对使用的要求。这根连接电缆也称作零调制解调器(Null Modem)。  RS-232C的机械特性规定使用一个25芯的标准连接器,并对该连接器的尺寸及针或孔芯的排列位置等都做了详细说明。顺便提一下,实际的用户并不一定需要用到RS-232C标准的全集,这在个人计算机(PC)高速普及的今天尤为突出,所以一些生产厂家为RS-232C标准的机械特性做了变通的简化,使用了一个9芯标准连接器将不常用的信号线舍弃。  RS-232C的电气特性规定逻辑“1”的电平为-15至-5伏,逻辑“0”的电平为+5至+15伏,也即RS-232C采用+15伏和-15伏的负逻辑电平,+5伏和-5伏之间为过渡区域不做定义。RS-232C接口的电气特性见图3.9,其电气表示见表3.1。  RS-232C电平高达+15伏和-15伏,较之0~5伏的电平来说具有更强的抗干扰能力。但是,即使用这样的电平,若两设备利用RS-232C接口直接相连(即不使用调制解调器),它们的最大距离也仅约15m,而且由于电平较高、通信速率反而能受影响。RS-232C接口的通信速率《20Kbps(标准速率有150、300、600、、、19200bps等几档)。
  RS-232C的功能特性定义了25芯标准连接器中的20根信号线,其中2根地线、4根数据线、11根控制线、3根定时信号线、剩下的5根线做备用或末定义。表3.2给出了其中最学用的10根信号的功能特性。
表3.2   RS-232C功能特性
123456782022
AABABBCACBBBABCFCDCE
保护地线(GND)发送数据(TD)接收数据(RD)请求发送(RTS)清除发送(CTS)数据设备就绪(DSR)信号地线(Sig.GND)载波检测(CD)数据终端就绪(DTR)振铃指示(RI)
地线数据线数据线控制线控制线控制线地线控制线控制线控制线
→DCE→DTE→DCE→DTE→DTE→DTE→DCE→DTE
 && RS-232C的连接见图3.10。
────BA───→←───BB────────CA───→←───CB────←───CC────────AB────←───CF────────CD───→←───CE────
123456782022
123456782022
&图3.10 RS-232C的DTE-DCE连接
  若两台DTE设备,如两台计算机在近距离直接连接,则可采用图3.11的方法,图中(a)为完整型连接,(b)为简单型连接。
图3.11 RS-232C的DTE-DTE连接
  RS-232C的工作过程是在各根控制信号线有序的“ON”(逻辑“0”)和“OFF”(逻辑“1”)状态的配合下进行的。在DTE—DCE连接的情况下,只有CD(数据终端就绪)和CC(数据设备就绪)均为“ON”状态时,才具备操作的基本条件:此后,若DTE要发送数据,则须先将CA(请求发送)置为“ON”状态,等待CB(清除发送)应答信号为“ON”状态后,才能在BA(发送数据)上发送数据。
&&& 2.EIA RS-449及RS-422与RS-423接口标准&&&  由于RS-232C标准信号电平过高、采用非平衡发送和接收方式,所以存在传输速率低(≤20Kbpc)、传输距离短(《15m)、串扰信号较大等缺点。1977年底,EIA颁布了一个新标准RS-449,次年,这个接口标准的两个电气子标准:RS-423(采用差动接收器的非平衡方式)和RS-422(平衡方式)也相继问世。这些标准在保持与RS-232C兼容的前提下重新定义了信号电平,并改进了电路方式,以达到较高的传输速率和较大的传输距离。&&&  RS-499对标准连接器做了详细的说明,由于信号线较多,使用了37芯和9芯连接器,37芯连接器定义了与RS-449有关的所有信号,而辅信道和信号在9芯连接器中定义。 &&& RS-449标准的电器特性有两个标准,即平衡式的RS-422标准和非平衡式的RS-423标准。&&&  RS-422电气标准是平衡方式标准,它的发送器、接收器分别采用平衡发送器和差动接收器,由于采用完全独立的双线平衡传输,抗串扰能力大大增强。又由于信号电平定义为±6伏(±2V为过度区域)的负逻辑,故当传输距离为10M时,速率可达10Mbps;而距离增长至1000m时,速率可达到100Kbps时,性能远远优于RS-232C标准。  RS-423电气标准是非平衡标准,它采用单端发送器(即非平衡发送器)和差动接收器。虽然发送器与RS-232C标准相同,但由于接收器采用差动方式,所以传输距离和速度仍比RS-232C有较大的提高。当传输距离为10M时,速度可达成100KBPS;距离增至100M时,速度仍有10KBPS。RS-423的信号最平定义为±6伏(其中±4伏为过渡区域)的负逻辑。  从旧技术标准向新技术标准的过渡,需要花费巨大的代价主经过漫长的过程。RS-423电气特性标准可以认为是从RS-232C向RS-449标准全面过渡过程中的一个台阶。 3.100系列和200系列接口标准  CCITT是原国际电报电话咨询委员会的简称,现已更名为国际电信联盟电信标准化局。该组织从事有关通信标准的研究和制定,其标准一般都称做建议。  CCITT V.24建议中有关DTE-DCE之间的接口标准有100系列、200系列两种。100系列接口标准作为DTE与不带自动呼叫设备的DCE(如调制解调器)之间的接口。在调置自动呼叫设备的DCE(如网络控制器)中,则由200系列接口标准完成DTE与自动呼叫设备的接口。若系统采用人工呼叫,则无需设置200系列接口。  100系列接口标准的机械特性采用两种规定,当传输速率为200bps~9600bps时,采用25芯标准连接器;传输速率达48Kbps时,采用34芯标准连接器。200系列接口标准则采用25芯标准连接器。  100系列接口标准的电气特性采用V.28和V.35两种建议。当传输速率为200bps~9600bps时,采用V.28建议;当传输速率为48kbps时,100系列中除控制信号仍使用V.28建议外,数据线与定时线均采用V.35建议。200系列接口标准的电气特性则采用V.28建议。 4.X.21和X.21bis建议  CCITT对DTE-DCE的接口标准有V系列和X系列两大类建议.V系列接口标准()如前述的V.24建议)一般指数据终端设备与调制解调器或网络控制器之间的接口,这类系列接口除了用于数据传输的信号线外,还定义了一系列控制线,是一种比较复杂的接口.X系列接口是较晚制定的,这类接口适用于公共数据网的宅内电路终接设备和数据终端设备之间的接口,定义的信号线很少,因此是一种比较简单的接口.&  X.21建议是CCITT于1976年制定的一个用户计算机的DTE如何与数字化的DCE交换信号的数字接口标准.X.21建议的接口以相对来说比较简单的形式提供了点--点式的信息传输,通过它能实现完全自动的过程操作,并有助于消除传输差错.在数据传输过程中,任何比特流(包括数据与控制信号)均可通过该接口进行传输.ISO的OSI参考模型建议采用X.21作为物理层载规约的标准.&  X.21的设计目标之一是要减少信号线的数目,其机械特性采用15芯标准连接器代替熟悉的25芯连接器,而且其中仅定义了8条接口线.  X.21的另外一个设计目标是允许接口在比EIA RS-232C更长的距离上进行更高速率的数据传略多于,其电气特性类似于EIA RS-422的平衡接口,支持最大的DTE-DCE电缆距离是300m。X.21可以按同步传输的半双工或全双工方式运行,传输速率最大可达10Mbps。X.21接口适用于由数字线路(而不是模拟线路)访问公共数据网(PDN)的地区.欧洲网络大多使用X.21接口.  若数字信道一直延伸到用户端,用户的DTE当然就可以通过X.21建议的接口进行远程通信.但目前实际连接用户端的大多数仍为模拟信道(如电话线),且大多数计算机和终端设备上也只具备RS-232C接口或以V.24为基础的设备,而不是X.21接口.为了使从老的网络技术转到新的X.21接口更容易些,CCITT提出了用于公共数据网中的与V系列调制解调器接口的X.21 bis建议.这时的“bis”是法语“替换物”的意思.  X.21 bis标准指定使用V.24/V.28接口,它们与EIA RS-232D非常类似.美国的大多数公共数据网应用实际上都使用EIA RS-232D(或更早的RS-232C)作为物理层接口.可以认为,X.21bis是X.21的一个暂时过渡版本,它是对X.21的补充并保持了V.24的物理接口。X.25建议允许采用X.21 bis作为其物理层的规程。  X.21和X.21 bis为三种类型的服务定义了物理电路,这三种电路是租用电路(专用线)服务、直接呼叫服务和设备地址呼叫服务。租用电路设计成在两个终端之间的连续连接;直接呼叫服务像“热线”电话,可使用户在任何时间直接连接指定的目标;设备地址呼叫则如“拨号”电话,每次联接需由用户呼叫指定目标。 3.2.3&串行通信编程方法  利用RS-232C标准接口可实现两台PC之间的异步串行通信。下面分别就PC机的DOS级和BIOS级异步串行通信编程方法做一简单介绍。 1.DOS级的PC通信  PC机通常配备有两个异步通信端口,分别称作为COM1和COM2,它们都符合RS-232C标准。在DOS操作系统中,COM1、COM2被作为I/O设备进行管理,COM1、COM2便是它们的逻辑设备名。据此,DOS便可通过对COM1、COM2的操作来实现PC之间的异步串行通信。  DOS的MODE命令可用以设置异步串行端口的参数,DOS的COPY命令允许将异步串行端口作为一个特殊的“文件”,以对其进行数据传输。下面举一个利用DOS的MODE、COPY命令,进行双机键盘输入字符传输的例子。  MODE命令的格式为:    MODE 端口名:数据速率,校验方式,数据位数,停止位位数  其中端口名为COM1或COM2;数据速率可选150、300、600、、校验方式为E(偶校验)、O(奇校验)或(无校验);数据位数为7或8位;停止位位数为1或2位。通信双方设置的参数应一致,如双方都键入如下命令    MODE COM1:1200,E,7,1 &Enter&则表示双方以COM1为异步通信端口、速率1200bps、偶校、7位数据位、1位停止位的设置参数据进行通信。  DOS中有一个名为CON的标准控制台设备,作为输入时CON指的就是键盘,作为输出时CON指的就是显示器。准备发送的PC机执行如下命令:    COPY CON :COM1: &Enter&表示将从键盘收到的信息通过COM1串行口发送出去。准备接收的PC机执行如下命令:    COPY COM1:CON: &Enter&则表示将接收来自COM1串行口的信息,并在显示器上加以显示。  两台PC机分别执行完上述命令后,在发送方键盘上输入的字符便会在接收方显示器上显示出来。  上面介绍的是用DOS的MODE,COPY命令实现的最简单的PC通信。在MS-DOS的高版本中(例如MS-DOSV6.0)还提供了一条INTERLNK命令,实际上它是一个通信程序。使用INTERLNK命令和一根连接两台PC机串行端口的电缆,可以使一台PC机从另一台PC机的磁盘驱动器中存取数据并运行程序,无需再使用软盘去文件。  用以键入命令的PC机叫客户机(Client),与客户机相连的PC机叫服务器(Server)。客户机使用服务器的驱动器和打印机,服务器显示两台PC机的连机状态。  当两台PC机被INTERLNK连接以后,服务器上的驱动器便以扩展驱动器的形式映象到客户机上,若两台PC机原来均有A,B,C三个驱动器,则连接后客户机除了自身的三个驱动器外,又多了E,F,G(服务器驱动器映象)三个扩展驱动器,客户可以象使用自己的驱动器一样使用这些扩展驱动器。  使用INTERLNK时,每台PC机上至少要有一个空闲的串行口,还要一根3导线或7导线的零调制调解器(Null MODEM)串行电缆线,客户机上至少有16K空闲内存,服务器上至少有130K空闲内存。  在客户机的系统配置文件CONFIG.SYS中添加如下命令:    DEVICE=C:\DOS\INTERLNK.EXE/DRIVES:5再重新启动客户机,便可装入INTERLNK。这里假设INTERLNK.EXE已存在于客户机C驱动器的DOS目录中,/DRIVERS:5参数用于映象5个服务器驱动器,缺省情况下为3个驱动器。  服务器上启动INTERLNK不需对其CONFIG.SYS作任何改动,只需在DOS命令提示符下键入INTERLNK即可。此时,屏幕底下出现一行状态信息,显示出INTERLNK的连接状态。  关于DOS级通信命令的详细使用方法,可参阅有关DOS手册。 2.BIOS级的PC通信  PC级的基本输入输出系统(BIOS)总的中断14H提供了异步串行端口的四种通信服务功能,通过之种功能,可以访问串行通信端口,实现连机通信。INT 14H的串行端口通信功能为:    功能号 功能&     00 通信端口初始化     01 向通信端口写一个字符     02 从通信端口读一个字符     03 返回通信端口状态  INT 14H 的一般汇编语言调用顺序如下:     MOV AH, &功能号&     MOV DX, &端口号&  (在相应寄存器中装入与功能有关的参数)     INT 14H  (1)初始化通讯端口  调用: AH = 00H&     AL = 初始化参数     DX = 端口号(COM1为0, COM2为1)  返回: AH = 通信端口状态     AL = 调制解调器状态  初始化参数为8为二进制数,其中各位的含义如图3.12所示。  图3.12(P61)  若置COM1为9600bps,8位数据位,1位停止位,无奇偶校验,指初始化参数为B,即0E3H。程序调用如下:     MOV AH,0     MOV AL,OE3H     MOV DX,0     INT 14H  (2)向通信端口输出字符。  用以向指定端口输出一个字符。  调用:AH = 01H     AL = 所要输出的字符     DX = 端口号  返回:调用后若AH的第7位为0,表示输出成功,AL内容不变;若AH的第7位为1,表示输出失败,此时 AL的0~6位给出端口状态。     MOV AH,01H     MOV DX,0     MOV AL,'*'     INT 14H  (3)从通信端口输入字符  用以从指定端口输入一个字符。  调用:AH = 02H     DX = 端口号  返回:若AH的第7位为0,表示输入成功,AL中为输入的字符:若AH的第7位为1,表示输入失败,AH的0~6位给出端口状态。  若从COM1中输入一个字符,假设以有字符从对方发送到本地PC,只可调用如下程序段:     MOV AH,02H     MOV DX,0     INT 14H  (4)读取通信端口状态  用以读取指定端口的状态  调用: AH = 03H&     DX = 端口号  返回: AH = 端口状态     AL = 调制解调器状态  若要读取COM1端口状态,只可调用如下程序段:     MOV AH,02H     MOV DX,0     INT 14H 3.调制解调器的编程命令  Hayes公司生产的调制解调器目前几乎成了公认的调制解调器标准,其它厂家生产的调制解调器一般都与之兼容。Hayes公司推出了一套用于对调制解调器进行编程的命令,这些命令都以AT打头,故也称作AT命令集。AT是Atention(注意)的开头两个字母,意为引起调制解调器的注意。跟在AT后面的字符串用以通知调制解调器干什么。下面介绍几种常用的AT命令。  (1)拨号命令。ATD命令用于电话拨号。拨号分脉冲拨号和音频拨号两种,因此拨号时应告诉调制解调器采用何种信号进行拨号。ATDP用于脉冲拨号,ATDT用于音频拨号,两者均后续要拨的电话号码。例如:ATDT表示用音频拨号呼叫。若在分机拨出,则先要拨外线,然后稍停顿后再拨对方号码,其间插入逗号稍作停顿,一个逗号相当于停顿2秒。例如ADTP0,则表示先拨0,请求接外线后停顿2秒,再拨外线。  (2)应答命令。ATA命令用于使用调制解调器立即应答电话。调制解调器自动应答功能是通过对其S0寄存器的设置来实现的,ATS0=0表示取消调制解调器的自动应答功能,ATS0=N(N为非零的整数)表示调制解调器振铃达到N次后,才应答电话。  (3)摘机和挂机命令。输入的ATH1使电话摘机,就像拿起听筒一样;输入ATHO或ATH是电话挂机,就像放下电话一样。执行拨号命令时,调制解调器会自动进入摘机状态,若在联机状态时载波信号调时,调制解调器会自动断开连接或挂机。  (4)调制解调器缺省设置恢复命令。输入ATZ命令可以将调制解调器内部记存器设置为缺省的参数值,以便用户重新调用其数值。  还用许多其他的AT命令,提供了对调制解调器的各种操作功能,这些都可以在相应的手册上查阅到。需要说明的是,AT命令不是DOS命令,它必须通过通信软件伙同编编程手段经通信端口发向调制解调器。
3.3 数据链路层  数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层提供的服务的基础上向网络层提供服务。数据链路层的作用是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,即使之对网络层表现为一条无差错的链路。数据链路层的基本功能是想网络层提供透明的和可靠的数据传送服务。透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。 3.3.1 数据链路层功能  数据链路层最基本的服务是将源机网络层来的数据可靠的传输到相邻节点的目标机网络层。为达到这一目的,数据链路层必须具备一系列相应的功能,它们主要有:如何将数据组合成数据块,在数据链路层中将这种数据块称为帧,帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使之与接收方相匹配;在两个网路实体之间提供数据链路通路的建立、维持和释放管理。 1.帧同步功能  为了使传输中发生差错后只将出错的有限数据进行重发,数据链路层将比特流组织成以帧为单位传送。帧的组织结构必须设计成使接收方法能够明确的从物理层收到比特流中对其进行识别,也即能从比特流中区分出帧的起始与终止,这就是帧同步要解决的问题。由于网络传输中很难保证计时的正确和一致,所以不能采用依靠时间间隔关系来确定一帧的起始与终止的方法。下面介绍几种常用的帧同步方法。  (1)字节计数法。这种帧同步方法以一个特殊字符表征一帧的起始,并以一个专门字段来标明帧内的字节数。接受方可以通过对该特殊字符的识别从比特流中区分出帧的起始,并从专门字段中获知该帧中随后跟随的数据字节数,从而可确定出帧的终止位置。  面向字节计数的同步规程的典型实例是DEC公司的数字数据通信报协议DDCMP(Digital DataCommunications Message Protocol)。DDCMP采用的帧格式如下:
  格式中控制字符SOH标志数据帧的起始。Count字段共有14位,用以指示帧中数据段中数据的字节数,数据段最大长度为8×(214-1)=131064位,长度必须为字节(即8位)的整倍数,DDCMP协议就是靠这个字节计数来确定帧的终止位置的。DDCMP帧格式中的Ask、Seg、Addr及Flag中的第2位。它们的功能分别类似于本节稍后要详细介绍的HDLC中的N(S)、N(S)、Addr字段及P/F位。CRC1、CRC2分别对标题部分和数据部分进行双重校验,强调标题部分单独校验的原因是,一旦标题部分中的Count字段出错,即失却了帧边界划分的依据,将造成灾难性的后果。  由于采用字段计数方法来确定帧的终止边界不会引起数据及其它信息的混淆,因而不必采用任何措施便可实现数据的透明性,即任何数据均可不受限制地传输。  (2)使用字符填充的首尾定界符法。该法用一些特定的字符来定界一帧的起始与终止,本节稍后要介绍的BSC规程便是典型例子。为了不使数据信息位中出现的与特定字符相同的字符被误判为帧的首尾定界符,可以在这种数据字符前填充一个转义控制字符(DLE)以示区别,从而达到数据的透明性。  (3)使用比特填充的首尾定界符法。该法以一组特定的比特模式(如)来标志一帧的起始与终止。本节稍后要详细介绍的HDLC规程即采用该法。为了不使信息位中出现的与该特定模式相似的比特串被误判为帧的首尾标志,可以采用比特填充的方法。比如,采用特定模式,则对信息位中的任何连续出现的5个“1”,发送方自动在其后插入一个“0”,而接受方则做该过程的逆操作,即每收到连续5个“1”,则自动删去其后所跟的“0”,以此恢复原始信息,实现数据传输的透明性。比特填充很容易由硬件来实现,性能优于字符填充方法。  (4)违法编码法。该法在物理层采用特定的比特编码方法时采用。例如,曼彻斯特编码方法,是将数据比特“1”编码成“高-低”电平对,将数据比特“0”编码成“低-高”电平对。而“高-高”电平对和“低-低”电平对在数据比特中是违法的。可以借用这些违法编码序列来定界帧的起始与终止。局域网IEEE 802标准中就采用了这种方法。违法编码法不需要任何填充技术,便能实现数据的透明性,但它只适用采用冗余编码的特殊编码环境。  由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)以及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充法和违法编码法。 2.差错控制功能  通信系统必须具备发现(即检测)差错的能力,并采取措施纠正之,使差错控制在所能允许的尽可能小的范围内,这就是差错控制过程,也是数据链路层的主要功能之一。  接收方通过对差错编码(奇偶校验码或CRC码)的检查,可以判定一帧在传输过程中是否发生了差错。一旦发现差错,一般可以采用反馈重发的方法来纠正。这就要求接受方收完一帧后,向发送方反柜一个接收是否正确的信息,使发送方据此做出是否需要重新发送的决定。发送方仅当收到接收方以正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需要重发直至正确为止。  物理信道的突发噪声可能完全“淹没”一帧,即使得整个数据帧或反馈信息帧丢失,这将导致发送方永远收不到接受方发来的信息,从而使传输过程停滞。为了避免出现这种情况,通常引入计时器(Timer)来限定接收方发回方反柜消息的时间间隔,当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反柜信息,即计时器超时(Timeout),则可认为传出的帧以出错或丢失,就要重新发送。  由于同一帧数据可能被重复发送多次,就可能引起接收方多次收到同一帧并将其递交给网络层的危险。为了防止防止发生这种危险,可以采用对发送的帧编号的方法,即赋予每帧一个序号,从而使接收方能从该序号来区分是新发送来的帧还是已经接受但又重发来的帧,以此来确定要不要将接收到的帧递交给网络层。数据链路层通过使用计数器和序号来保证每帧最终都能被正确地递交给目标网络层一次。  有关差错控制的详细内容,将在本节稍后再做介绍。 3.流量控制功能&&&  首先需要说明一下,流量控制并不是数据链路层特有的功能,许多高层协议中也提供流量控制功能,只不过流量控制的对象不同而已。比如,对于数据链路层来说,控制的是相邻两节点这间数据链路上的流量,而对于运输层来说,控制的则是从源到最终目的之间端对端的流量。  由于收发双方各自使用的设备工作速率和缓冲存储空间的差异,可能出现发送方发送能力大于接收方接收能力的现象,若此时不对发送方的发送速率(也即链路上的信息流量)做适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”,从而造成帧的丢失而出错。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送速率不致超过接收方的速率。也即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后再继续发送。本节稍后将要介绍的XON/XOFF方案和窗口机制就是两种常用的流量控制方法。 4.链路管理功能&&&  链路管理功能主要用于面向连接的服务。在链路两端的节点要进行通信前,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接。在传输过程中则要维持该连接。如果出现差错,需要重新初始化,重新自动建立连接。传输完毕后则要释放连接。数据链路层连接的建立,维持和释放就称做链路管理。  在多个站点共享同一物理信道的情况下(例如在局域网中),如何在要求通信的站点间分配和管理信道也属于数据层链路管理的范畴。 3.3.2 差错控制  用以使发送方确认接收方是否正确收到了由它发送的数据信息的方法称为反馈差错控制。通常采用反馈检测和自动重发请求(ARQ)两种基本方法来实现。 1.反馈检测法  反馈检测法也称回送校检法或“回声”法,主要用于面向字符的异步传输中,如终端与远程计算机间的通信。这是一种无须使用任何特殊代码的差错检测法。双方进行数据传输时,接收方将接收到的数据(可以是一个字符,也可以是一帧)重新发回发送方,由发送方检查是否与原始数据完全相符。若不相符,则发送方发送一个控制字符(如 DEL)通知接收方删去出错的数据,并重新发送该数据;若相符,则发送下一个数据。  反馈检测法原理简单,实现容易,也有较高的可靠性。但每个数据均被传输两次,信道利用率很低。这种差错控制方法一般用于面向字符的异步传输中,因为这种场合下信道效率并不是主要矛盾。 2.自动重发请求法(ARQ法)&&&  实用的差错控制方法,既要传达室输可靠性高,又要信道利用率高。为此可使发送方将要发送的数据帧附加一定的冗余检错码一并发送,接收方则根据检错码对数据帧进行差错检测,若发现错误,就返回请求重发的应答,发送方收到请求重发的应答后,便重新传送该数据帧。这种差错控制方法就称为自动重发请求法(Automatic Repeat reQuest),简称ARQ法。&&&  ARQ法仅需返回少量控制信息,便可有效地确认所发数据帧是否正确被接收。ARQ法有几种实现方案,空闲重发请求(Idle RQ)和连续重发请求(Continuous RQ)是其中最基本的两种方案。  (1)空闲重发请求(Idle RQ)。空闲重发请求方案也称停等(Stop and Wait)法,该方案规定发送方每发送一帧后就要停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧 。空闲重发请求方案的实现过程如下:  ①发送方每次仅将当前信息帧作为待确认帧保留在缓冲存储器中;  ②当发送方开始发送信息帧时,随即启动计时器;  ③当接收方收到无差错信息帧后,即向发送方返回一个确认帧;  ④当接收方检测到一个含有差错的信息帧时,便舍弃该帧;  ⑤若发送方在规定时间内收到确认帧,即将计时器清零,继而开始下一帧的发送;  ⑥若发送方在规定时间内未收到确认帧,(即计时器超时),则应重发存于缓冲器中的侍确认信息帧。  从以上过程可以看出,空闲RQ方案的收、发送方仅需设置一个帧的缓冲存储空间,便可有效地实现数据重发并确保接收方接收的数据不会重份。空闲RQ方案最主要的优点就是所需的缓冲存储空间最小,因此在链路端使用简单终端的环境中被广泛采用。  (2)连续重发请求(Continuous RQ)。连续重发请求方案是指发送方可以连续发送一系列信息帧,即不用等前一帧被确认便可发送下一帧。这就需要在发送方设置一个较大的缓冲存储空间(称作重发表),用以存放若干待确认的信息帧。当发送方到对某信息帧的确认帧后便可从重发表中将该信息帧删除。所以,连续RQ方案的链路传输效率大大提高,但相应地需要更大的缓冲存储空间。连续RQ方案的实现过程如下:  ①发送方连续发送信息帧而不必等待确认帧的返回;  ②发送方在重发表中保存所发送的每个帧的备份;  ③重发表按先进先出(FIFO)队列规则操作;  ④接收方对每一个正确收到的信息帧返回一个确认帧;  ⑤每一个确认帧包含一个惟一的序号,随相应的确认帧返回;  ⑥接收方保存一个接收次序表,它包含最后正确收到的信息帧的序号;  ⑦当发送方收到相应信息帧的确认后,从重发表中删除该信息帧的备份;  ⑧当发送方检测出失序的确认帧(即第N号信息帧和第N+2号信息帧的确认帧已返回,而N+1号的确认帧未返回)后,便重发未被确认的信息帧。  上面连续RQ过程是假定在不发生传输差错的情况下描述的,如果差错出现,如何进一步处理还可以有两种策略,即GO-DACK-N策略和选择重发策略。  GO-DACK-N策略的基本原理是,当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。这就是GO-DACK-N(退回N)法名称的由来。因为,对接收方来说,由于这一帧出错,就不能以正常的序号向它的高层递交数据,对其后发送来的N帧也可能都不能接收而丢弃。GO-DACK-N法操作过程如图3.13所示。图中假定发送完8号帧后,发现2号帧的确认返回在计时器超时后还未收到,则发送方只能退回从2号帧开始重发。
图3.13 Go-back-N 法举例
  GO-DACK-N可能将已正确传送到目的方的帧再重传一遍,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发(SELECTICE REPEAT),其工作过程如图3.14所示。图中2号帧的否认返回信息NAK2要求发送方选择重发2号帧。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。
图3.14 选择重发举例法
 3.3.3 流量控制  流量控制涉及链路上字符或帧的发送速率的控制, 以使接收方在接收前的足够的缓冲存储空间来接收每一个字符或帧。例如,在面向字符的终端——计算机链路中,若远程计算机为许多台终端服务,它就有可能因不能在高峰时按预定速率传输全部字符而暂时过载。同样,在面向帧的自动重发请求系统中,当待确认帧数量增加时,有可能超出缓冲器存储空间,也会造成过载。下面介绍两种常用的流量控制方案:XON/XOFF方案和窗口机制。 1.XON/XOFF方案  增加缓冲存储空间在某种程度上可以缓解收、发双方在传输速率上的差异,但这是一种被动、消极的方法。因为,一方面系统不允许开设过大的缓冲空间,另一方面对于速率显著失配并且又传送大量数据的场合,仍会出现缓冲空间不够的现象。XON/XOFF方案方案则是一种相比之下更主动、更积极的流量控制方法。  XON/XOFF方案中使用一对控制字符来实现流量控制,其中XON采用ASCII字符集中的控制字符DC1,XOFF采用ASCII字符集中的控制字符DC3。当通信路上的接收方发生过载时,便向发送方发送一个XOFF字符,发送方接收XOFF字符后便暂停发送数据;等接收方处理完缓冲器中的数据,过载恢复后,再向发送方发送一个XON字符,以通知发送方恢复数据发送。在一次数据传输过程中,XOFF、XON的周期可重复多次,但这些操作对用户来说是透明的。  许多异步数据通信软件包均支持XON/XOFF协议。这种方案也可用于计算机向打印机或其它终端设备发送字符,在这种情况下,打印机或终端设备中的控制部件用以控制字符流量。 2.窗口机制  为了提高信道的有效利用率,如前所述采用了不等待确认帧返回就连续发送若干帧的方案。由于允许连续发送多个未被确认的帧 ,帧号就需采用多位二进制才能加以区分。因为凡被发出去蛤尚未被确认的帧都可能出错或丢失而要求重发,因而这些帧都要保留下来。这就要求发送方有较大的发送缓冲区保留可能要求重发的未被确认的帧。  但是缓冲区容量总是有限的,如果接收方不能以发送方的发送速率处理接收到的帧,则还是可能用完缓冲容量而暂时过载。为此,可引入类似于空闲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。
传输控制字符
EBCDIC码值
  各传输控制字符的功能如下:  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)不带报头的单块报文或分块传输中的最后一块报文:
  (2)带报头的单块报文:
  (3)分块传输中的第一块报文:
  (4)分块传输中的中间报文:
  BSC协议中所有发送的数据均跟在至少两个SYN字符之后,发使接收方能实现字符同步。报头字段的包识别符及地址。所有数据块在块终限定符(ETX或ETB)之后还有块校验字符BCC(block check character),bcc可以是垂直奇偶校验或者说16位CRC,校验范围从STX开始到ETX或ETB为止。  当发送的报文是二进制数据库而不是字符串时,二进制数据中形同传输控制字符的比特串将会引起传输混乱。为使二进制数据中允许出现与传输控制字符相同的数据(即数据的透明性),可在各帧中真正的传输控制字符(SYN除外)前加上DLE转义字符,在发送时,若文本中也出现与DLE字符相同的二进制比特串,则可插入一个外加以标记。在接收端则进行同样的检测,若发现单个的DLE字符,则可知其后为传输控制字符;若发现连续两个DLE字符,则知其后的DLE为数据,在进一步处理前将其中一个删去。  正、反向监控报文有如下四种:
(1)肯定确认和选择响应:
(2)否定确认和选择响应:
(3)轮询/选择请求:
  监控报文一般由单个传输控制字符或由若干个其它字符引导的单个传输控制字符组成。引导字符统称为前缀,它包含识别符(序号)、地址信息、状态信息以及其它所需信息。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):标志字段的比特模式,用以标志帧的起始和前一帧的终止。通常,在不进行帧传送的时刻,信道仍处于激活状态。标志字段也可以作为帧与帧之间的填充字符。在这种状态下,发送方不断地发送标志字段,而接收方则检测每一个收到的标志字段,一旦发现某个标志字段后面不再是一个标志字段,便可认为一个新的帧传送已经开始。采用“0比特插入法”可以实现数据的透明传输,该法在发送端检测除标志码以外的所有字段,若发现连续5个“1”出现时,便在其后添插1个“0”,然后继续发送后面的比特流;在接收端同样检测除标志码以外所有字段,若发现连续5个“1”后是“0”,则将其删除以恢复比特流的原貌。&  ②地址字段(A):地址字段的内容取决于所采用的操作方式。在操作方式中,有主站、从站、组合站之分,每一个从站和组合站都被分配一个惟一的地址。命令帧中的地址字段携带的地址是对方站的地址,而响应帧中的地址字段所携带的地址是本站的地址。某一地址也可分配给不止一个站,这种地址称为组地址,利用一个组地址传输的帧能被组内所有拥有该组地址的站接收,但当一个从站或组合站发送响应时,它仍应当用它惟一的地址。还可以用全“1”地址来表示包含所有站的地址,这种地址称为广播地址,含有广播地址的帧传送给链路上所有的站。另外,还规定全“1”地址为无站地址,这种地址不分配给任何站,仅用做测试。  ③控制字段(C):控制字段用于构成各种命令和响应,以便对链路进行监视和控制。发送方主站或组合站利用控制字段来通知被寻址的从站或组合站执行约定的操作;相反,从站用该字段作为对命令的响应,报告已完成的操作或状态的变化。该字段是HDLC的关键,下面还将详细介绍。  ④信息字段(I):信息字段可以是任意的二进制比特串。比特串长度未做严格限定,其上限由FCS字段或站点的缓冲器容量来确定,目前用得最较多的是比特;而下限可以为0 ,即无信息字段。但是,监控帧(S帧)中规定不可有信息字段。&  ⑤帧校验序列字段(FCS):帧校验序列字段可以使用16位CRC,对两个标志字段之间的整个帧的内容进行校验。FCS的生成多项式由CCITT V.41建议规定为 X16+X12+X5+1。&  (3)HDLC的帧类型。HDLC有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)三种不同类型的帧,各类帧中控制字段的格式及比特定义如下表3.4:
控制字段位
M3  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种附加的命令或应答功能。
3.4 网络层  网络层是OSI参考模型中的第三层,介于运输层和数据链中路层之间。它在数据路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。网络层关系到通信子网的运行控制,体现了网络应用环境中资源子网访问通信子网的方式,是OSI模型中面向数据通信的低三层(也即通信子网)中最为复杂、关键的一层。  网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括路由选择、阻塞控制和网际互连等。 3.4.1 通信子网的操作方式和网络层提供的服务  端点之间的通信是依靠通信子网中的节点间的通信来实现的,在OSI模型中,网络层是网络节点中的最高层,所以网络层将体现通信子网向端系统所提供的网络服务。在分组交换方式中,通信子网向端系统提供虚电路和数据报两种网络服务,而通信子网内部的操作也有虚电路的数据报两种方式。 1.虚电路操作方式  在虚电路操作方式中,为了进行数据传输,网络的源节点的目的节点之间先要建立一条逻辑通路,因为这条逻辑通路不是专用的,所以称之为“虚”电路。每个节点到其它任一节点之间可能有若干条虚电路支持特定的两个端系统之间的数据传输,两个端系统之间也可以有多条虚电路为不同的进程服务,这些虚电路的实际路径可能相同也可能不同。  节点间的物理信道在逻辑上均可看做由多条逻辑信道组成,这些逻辑信道实际上由节点内部的分组缓冲器来实现。所谓占用某条逻辑信道,实质上是指占用了该段物理信道上节点分配的分组缓冲器。不同的逻辑信道在节点内部通过逻辑信道号加以区分,各条逻辑信道异步时复用同一条物理信道。  一条虚电路可能要经过多个中间节点,在节点间的各段物理信道上都要占用一条逻辑信道用以传送分组。由于各节点均独立地为通过的虚电路分配逻辑信道,也即同一条虚电路通过各段信道所获取的逻辑信道可能是不相同的,所以各节点内部必须建立一张虚电路表,用以记录该点的各条虚电路所占用的各个逻辑信号。  为使节点能区分一个分组属于哪条虚电路,每个分组必须携带一个逻辑信道;同样,同一条虚电路的分组在各段逻辑信道上的逻辑信道可能也不相同。传输中,当一个分组到达节点时,节点根据其携带的逻辑信道号查找虚电路表,以确定该分组应发往的下一个节点及其下一段信道上所占用的逻辑信道号,有该逻辑信道号替换分组中原先的逻辑信道号后,再将该分组发往下一个节点。  各节点的虚电路表是在虚电路建立过程中建立的。比如,与A节点相连的源端系统要经中间节点B、C跟与D节点相连的目的端系统建立一条虚电路,源端系统可发出一个呼叫请求分组,该分组除了包含目的地址外,还包含源端系统所选取的不用的最小逻辑信道号N。A节点收到请求分组后在A节点与下一节点B间所有已使用的逻辑信道号之外选取一个最小编号NA,并将请求分组中的逻辑信道N替换成该逻辑信道号NA,再将分组成发送给节点B。此后的各节点依次逐个根据自身实际情况选取新的逻辑信道号(如NB、NC、ND等)来替换收到的分组中的逻辑信道号。最后,目的节点D将请求分组传送给连接它的端系统。在此过程中,每个节点的虚电路表中要记录两个逻辑信道:前一个节点所选取的逻辑信道号和本节点所选取的逻辑信道号。这样便使得虚电路所跨越的每一段连接上的逻辑信道号都是唯一的。  图3.16给出一个虚电路表建立的示例,这里假设建立了6条虚电路。由于虚电路上的数据是双向传输的,为保证两节点之间正、反两个方向的虚电路不相混淆,在一个节点选取逻辑信道号来替换其前一节点的逻辑信道号时,不仅要考虑与下一节点之间的逻辑信道号不相同,还在考虑与下一节点作为另一个条反向虚电路的上一节点头时所选取的逻辑信道号相区别。例如,在建立虚电路1-BAE时(这里1-BAE表示源节点为B,建立虚电路时选取1为逻辑信道号,并经A传送到E),在节点B中,尽管A节点是第一次作为B节点的下一节点,但由于虚电路0-ABCD中A到B间已使用了逻辑信道号0,因此在出路一栏选B到A间的逻辑信道号为1。这样,当从节点A发来一个分组时,若它所携带的逻辑信道号为0,刚说明是虚电路ABCD上的正向分组;若为1,则说明虚电路BAE上的反向分组。对于虚电路2-BFE的建立也是同样情况。
图3.16 虚电路建立示例
  各节点的虚电路表空间和逻辑信道号都是网络资源,当虚电路拆除时必须回收。这可通过某端系统发出一个拆链请求分组,告知虚电路中各节点删除虚电路表是有关表项来实现。 2.数据报操作方式  在数据报操作方式中,每个分组被称为一个数据报,若干个数据报构成一次要传送的报文或数据块。每个数据报自身携带有足够的信息,它的传送是被单独处理的。一个节点接收到一个数据报后,根据数据报中的地址信息和节点所存储的路由信息,找出一个合适的出路,把数据报原样地发送到下一个节点。  当端系统要发送一个报文时,将报文拆成若干个带有序号和地址信息的数据报,依次发给网络节点。此后,各个数据报所走的路径就可能不同了,因为各个节点在随时根据网络的流量、故障等情况选择路由。由于名行其道,各数据报不能保证按顺序到达目的节点,有些数据报甚至还可能在途中丢失。在整个数据报传送过程中,不需要建立虚电路,但网络节点要为每个数据报做路由选择。 3.虚电路服务  虚电路服务是网络层向运输层提供的一种使所有分组按顺序到达目的端系统的可靠的数据传送方式。进行数据交换的两个端系统之间存在着一条为它们服务的虚电路。  为了建立端系统之间的虚电路,源端系统的运输层首先向网络层发出连接请求,网络层则通过虚电路网络访问协议向网络节点发出呼叫分组;在目的端,网络节点向端系统的网络层传送呼叫分组,网络层再向运输层发出连接指示;最后,接收方运输层向发起方发回连接响应,从而使虚电路建立起来。此后,两个端系统之间就可以传送数据。数据由网络层拆成若干个分组送给通信子网,由通信子网将分组传送到数据接收方。  上述虚电路的服务是网络层向运输层提供的服务,也是通信子网端向系统提供的网络服务。但是,提供这种虚电路服务的通信子网内部的实际操作既可是虚电路方式的,也可以是数据报方式的。以虚电路操作方式的网络,一般总是提供虚电路服务。OSI中面向连接的网络服务就是虚电路服务。在虚电路操作方式,端系统的网络层同通信子网节点的操作是一致的。SNA就是采用这种虚电路操作支持虚电路服务方式的实例。  以数据报方式操作的网络,也可以提供虚电路服务,即通信子网内部节点按数据报方式交换数据,而与端系统相连的网络节点则向端系统提供虚电路报务.对于端系统来说,它的网络层与节点间通信仍像虚电路操作方式的网络节点间一样,先建立虚电路,再交换数据分组,最后拆除电路.但实际上,每个分组被网络节点分成若干个数据报,附加上地址、序号、逻辑信道等信息分送到目的节点。目的节点再将数据报进行排序,拼成原来的分组,送给目的端系统。因此,源端系统和源网络节点之间、目的节点和目的端系统之间的网络层按虚电路操作方式交换分组,而目的节点和源节点之间则按数据报交方式完成分组的交换。尽管通信子网的数据报交换是不可靠的,但是两端原网络节点做了许多诸如排序、重发等额外工作,从而满足了虚电路服务的要求。例如,在ARPANET中,其内部使用数据报操作方式,但可以向端系统提供数据报和虚电路两种服务。 4.数据报服务  数据报服务一般仅由数据报交换网来提供。端系统的网络层同网络节点中的网络层之间,一致地按照数据报操作方式交换数据。当端系统要发送数据时,网络层给该数据附加上地址、序号等信息,然后作为数据报以发送给网络节点;目的端系统收到的数据报可能是不按序到达的,也可能有数据报的丢失。例如,在ARPANET、DNA等网络中,就提供了数据报服务。数据报服务与OSI的无连接网络服务类似。  由虚电路交换网提供数据报服务的组合方式并不常见。可以想像有这么一种特殊情况:一个端系统的网络层已经构造好了用于处理数据报的服务,而当它要接入以虚电路方式操作的网络时,网络节点就需要做一些转换工作。当端系统向网络节点发送一个携带有完整地址信息的数据报时,若发向同一地址的数据报数量足够大,则网络节点可以为这些数据报同目的节点间建立一条虚电路,所有相同址的数据报均在这条虚电路上传送时,这条虚电路便可以拆除。所以,这种数据报服务具有了虚电路服务的通信质量,但这样做既不经济,效率也低。 3.4.2 路由选择&  通信子网为网络源节点和目的节点提供了多条传输路径的可能性。网络节点在收到一个分组后后,要确定向下一节点传送的路径,这就是路由选择。在数据报方式中,网络节点要为每个分组路由做出选择;而在虚电路方式中,只需在连接建立时确定路由。确定路由选择的策略称路由算法。  设计路由算法时要考虑诸多技术要素。首先,考虑是选择最短路由还是选择最佳路由;其次,要考虑通信子网是采用虚电路的还是采用数据报的操作方式;其三,是采用分布式路由算法,即每节点均为到达的分组选择下一步的路由,还是采用集中式路由算法,即由中央节点或始发节点来决定整个路由;其四,要考虑关于网络拓朴、流量和延迟等网络信息的来源;最后,确定是采用静态路由选择策略,还是动态路由选择策略。 1.静态路由选择策略  静态路由选择策略不用测量也不需利用网络信息,这种策略按某种固定规则进行路由选择,其中还可分为泛射路由选择、固定路由选择和随机路由选择三种算法。  (1)泛射路由选择法。这是一种最简单的路由算法。一个网络节点从某条线路收到一个分组后,再向除该线路外的所有线路重复发送收到分组。结果,最先到达目的的节点的一个或若干个分组肯定经过了最短的路径,而且所有可能的路径都被尝试过。这种方法用于诸如军事网络等强壮性要求很高的场合。即使有的网络节点遭到破坏,只要源、目间有一条信道存在,则泛射路由选择仍能保证数据的可靠传送。另外,这种方法也可用于将一个分组数据源传送到所有其它节点的广播式数据交换中。它还可被用来进行网络的最短路径及最短传输延迟的测试。  (2)固定路由选择。这是一种使用较多的简单算法。每个网络节点存储一张表格,表格中每一项记录着对应某个目的节点的下一节点或链路。当一个分组到达某节点时,该节点只要根据分组上的的地址信息,便可从固定的路由表中查出对应的目的节点及所应选择的下一节点。一般,网络中都有一个网络控制中心,由它按照最佳路由算法求出每对源、目节点的最佳路由,然后为每一节点构造一个固定路由表并分发给各个节点。固定路由选择法的优点是简便易行,在负载稳定,拓扑结构变化不大的网络中运行效果很好。它的缺点是灵活性差,无法应付网络中发生的阻塞和故障。  (3)随机路由选择。在这种方法中,收到分组的节点,在所有与之相邻的节点中为分组随机选择出一个节点。方法虽然简单,但实际路由不是最佳路由,这会增加不必要的的负担,而且分组传输延迟也不可预测,故此法应用不广。 2.动态路由选择策略  节点的路由选择要依靠网络当前的状态信息来决定的策略,称动态路由选择策略。这种策略能较好地适应网络流量、拓扑结构的变化,有利于改善网络的性能。但由于算法复杂,会增加网络的负担。独立路由选择、集中路由选择和分布路由选择是三种动态路由选择策略的具体算法。  (1)独立路由选择。在这类路由算法中,节点不仅根据自己搜集到的有关信息做出路由选择的决定,与其它节点不交换路由选择信息。这种算法虽然不能正确确定距离本节点较远的路由选择,但还是能较好地适应网络流量和拓扑结构的变化。一种简单的独立路由选择算法是Baran在1964年提出的热土豆(Hot Potato)算法:当一个分组到来时,节点必须尽快脱手,将其放入输出队列最短的方向上排队,而不管该方向通向何方。&  (2)集中路由选择。集中路由选择也像固定路由选择一样,在每个节点上存储一张路由表。不同的是,固定路由选择算法中的节点路由表由人工制作,而在集中路由选择算法中的节点路由表由路由控制中心RCC(Routing Control Center)定时根据网络状态计算、生成并分送到各相应节点。由于RCC利用了整个网络的信息,所以得到的路由选择是完美的,同时也减轻了各节点计算路由选择的负担。&  (3)分布路由选择。在采用分布路由选择算法的网络中,所有节点定期地与其每个相邻节点交换路由选择信息。每个节点均存储一张以网络中其它节点为索引的路由选择表,,网络中每个节点占用表中一项。每一项又分为两个部分,一部分是所希望使用的到目的节点的输出线,另一部分是估计到目的的节点所需要的延迟或距离。度量标准可以是毫秒或链路段数、等待的分组数、剩余的线路和容量等。 3.4.3 阻塞控制  阻塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。这种现象跟公路网中经常所见的交通拥挤一样,当节假日公路网中车辆大量增加时,各种走向的车流相互干扰,使每辆车到达目的地的时间都相对增加(即延迟增加),甚至有时在某段公路上车辆因堵塞而无法开动(即发生局部死锁)。  网络的吞吐量与通信子网负荷(即通信子网中正在传输的分组数)有着密切的关系。当通信子网负荷比较小时,网络的吞吐量(分组数/秒)随网络负荷(每个节点中分组的平均数)的增加而线性增加。当网络负荷增加到某一值后,若网络吞吐量反而下降,则表征网络中出现了阻塞现象。在一个出现阻塞现象的网络中,到达某个节点的分组将会遇到无缓冲区可用的情况,从而使这些分组不得不由前一节点重传,或者需要由源节点或源端系统重传,从而使通信子网的有效吞吐量下降。由此引起恶性循环,使通信子网的局部甚至全部处于死锁状态,最终导致网络有效吞吐量接近为零。 1.阻塞控制方法  (1)缓冲区预分配方法。该法用于虚电路分组交换网中。在建立虚电路时,让呼叫请求分组的途经的节点为虚电路预先分配一个或多个数据缓冲区。若某个节点缓冲器已被占满,则呼叫请求分组另择路由,或者返回一个“忙”信号给呼叫者。这样,通过途经的各个节点为每条虚电路开设的永久性缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的分组。此时的分组交换跟电路交换很相似。当节点收到一个分组并将它转发出去之后,该节点向发送节点返回一个确认信息。该确认一方面表示接收节点已正确收到分组,另一方面告诉发送节点,该节点已空出缓冲区以备接收下一个分组。上面是“等一等”协议下的情况,若节点之间的协议允许多个未处理的分组存在,则为了完全消除阻塞的可能性,每个节点要为每条虚电路保留等价于窗口大小数量的缓冲区。这种方法不管有没有通信量,都有可观的资源(线路容量或存储空间)被某个连接占有,因此网络资源的有效利用率不高。这种控制方法主要用于要求高带宽和低延迟的场合,例如传送数字化语音信息的虚电路。  (2)分组丢弃法。该法不必预先保留缓冲区,当缓冲区占满时,将到来的分组丢弃。若通信子网提供的是数据报服务,则用分组丢弃法来防止阻塞发生不会会引起大的影响。但若通信子网提供的是虚电路服务,则必须在某处保存被丢弃分组的备份,以便阻塞解决后能重新传送。有两种解决被丢弃分组重发的方法,一种是让发送被丢弃分组的节点超时,并重新发送分组直至分组被收到;另一种是让发送被丢弃分组的节点在一定次数后放弃发送,并迫使数据源节点超时而重新开始发送。但是不加分辨地随意丢弃分组也不妥,因为一个包含确认信息的分组可以释放节点的缓冲区,若因节点无空余缓冲区来接收含确认信息的分组,这便使节点缓冲区失去了次释放的机会。解决这个问题的方法可以为每条输入链路永久地保留一块缓冲区,以用于接纳并检测所有进入的分组,对于捎带确认信息的分组,在利用了所捎带的确认释放缓冲区后,再将该分组丢弃或将该捎带好消息的分组保存在刚空出的缓冲区中。  (3)定额控制法。这种方法在通信子网中设置适当数量的称做“许可证”的特殊信息,一部分许可证在通信子网开始工作前预先以某种策略分配给各个源节点,另一部分则在子网开始工作后在网中四处环游。当源节点要发送来自源端系统的分组时,它必须首先拥有许可证,并且每发送一个分组注销一张许可证。目的节点方则每收到一个分组并将其递交给目的端系统后,便生成一张许可证。这样便可确保子网中分组数不会超过许可证的数量,从而防止了阻塞的发生。 2.死锁及其防止  阻塞的极端后是死锁。死锁是网络中最容易发生的故障之一,即使在网络负荷不很重时也会发生.死锁发生时,一组节点由于没有空闲缓冲区而无法接收和转发分组,节点之间相互等待,既不能接收分组也不能转发分组,并一直保持这一僵局,严重时 至导致整个网络的瘫痪.此时,只能靠人工干预来重新启动网络,解除死锁.但重新启动后并未消除引起死锁的隐患,所以可能再次发生死锁.死锁是由于控制技术方面的某些缺陷所引起的,起因通常难以捉摸、难以发现,即使发现,也常常不能立即修复。因此,在各层协议中都必须考 如何避免死锁问题。&  (1)存储转发死锁及其防止。最常见的死锁是发生在两个节点之间的直接存储转发死锁。例如,A节点的所有缓冲区装满了等待输出到B节点的分组,而B节点的所有缓冲区也全部装满了等待输出到A节点的分组;此时,A节点不能从B节点接收分组,B节点也不能从A节点接收分组,从而造成两节点间的死锁。这种情况也可能发生在一组节点之间,例如,A节点企图向B节点发送分组、B节点企图向C节点发送分组,这种情形称做间接存储转发死锁。当一个节点处于死锁状态时,所有与之相连的链路将完全被阻塞。  一种防止存储处于死锁的方法是,每个节点设置M+1个缓冲区,并以0到M编号。M为通信子网的直径,即从任一源节点到任一目的节点间的最大链路段数。每个源节点仅当其为0号缓冲区时才能接收源端系统来的分组,而此分组仅能转发给1号缓冲区空闲的相邻节点,再由该节点将分组转发给它的2号缓冲区空闲的相邻节点......最后,该公组或者顺利到达目的节点并被递交给目的端系统,或者到了某个节点编号为M 的缓冲区中再也转发不下去,此时一定发生了循环,应该将该分组丢弃。由于每个分组都是接照编号递增规则分配缓冲区,所以节点之间不会相互等待空闲缓冲区而发生死锁现象。这种方法的不足之处在于,当某节点虽然有空闲缓冲区,但正巧没有所需要的特性编号的缓冲区时,分组仍要等待,从而造成了缓冲区和链路的浪费。  另一种防止存储转发死锁的方法是,使每个分组上都携带一个全局性的惟一的“时间戳”,每个节点要为每条链路保留一个特殊的接收缓冲区,而其它缓冲区均可用于存放中转分组。在每条输出链路的队列上分组时间戳顺序排队。例如,节点A要将分组送到节点B,若B节点没有空闲缓冲区,但正巧有要送到A节点的分组,此时A、B节点可通过特殊的接收缓冲区交换分组;若B节点既没有空闲缓冲区,也没有要送到A节点的分组,B节只好强行将一个出路方向大致与A节点方向相同的分组与A节点互相交换分组,但此时A节点中的分组必须比B节点中的分组具有更早的时间戳,这样才能保证子网中某个最早的分组不受阻挡地转发到目的地。由此可见,每个分组最终总会成为最早的分组,并总能一步一步地发送到目的节点,从而避免了死锁现象的发生。  (2)重装死锁及其防止。死锁中比较严重的情况是重装死锁。假设发给一个端系统的报文很长,被源节点拆成若干个分组发送,目的节点要将所有具有相同编号的分组重新装配成报文递交给目的端系统,若目的节点用于重装报文的缓冲区空间有限,而且它无法知道正在接收的报文究竟被拆成多少个分组,此时,就可能发生

我要回帖

更多关于 分布最广泛的少数民族 的文章

 

随机推荐