计算机网络体系结构及协议

 

http://www.huibo.org.cn/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、1200、2400、4800、9600、19200bps等几档)。

  RS-232C的功能特性定义了25芯标准连接器中的20根信号线,其中2根地线、4根数据线、11根控制线、3根定时信号线、剩下的5根线做备用或末定义。表3.2给出了其中最学用的10根信号的功能特性。

表3.2   RS-232C功能特性
引脚号 信号线 功能说明 信号线型 连接方向
1
2
3
4
5
6
7
8
20
22
AA
BA
BB
CA
CB
BB
AB
CF
CD
CE

保护地线(GND)
发送数据(TD)
接收数据(RD)
请求发送(RTS)
清除发送(CTS)
数据设备就绪(DSR)
信号地线(Sig.GND)
载波检测(CD)
数据终端就绪(DTR)
振铃指示(RI)

地线
数据线
数据线
控制线
控制线
控制线
地线
控制线
控制线
控制线

→DCE
→DTE
→DCE
→DTE
→DTE
→DTE
→DCE
→DTE

    RS-232C的连接见图3.10。

DTE



AA


────BA───→
←───BB────
────CA───→
←───CB────
←───CC────
────AB────
←───CF────
────CD───→
←───CE────

DCE

1
2
3
4
5
6
7
8
20
22

1
2
3
4
5
6
7
8
20
22

 
图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、1200、2400、4800或9600bps;校验方式为E(偶校验)、O(奇校验)或(无校验);数据位数为7或8位;停止位位数为1或2位。通信双方设置的参数应一致,如双方都键入如下命令
    MODE COM1:1200,E,7,1
则表示双方以COM1为异步通信端口、速率1200bps、偶校、7位数据位、1位停止位的设置参数据进行通信。
  DOS中有一个名为CON的标准控制台设备,作为输入时CON指的就是键盘,作为输出时CON指的就是显示器。准备发送的PC机执行如下命令:
    COPY CON :COM1:
表示将从键盘收到的信息通过COM1串行口发送出去。准备接收的PC机执行如下命令:
    COPY COM1:CON:
则表示将接收来自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位停止位,无奇偶校验,指初始化参数为11100011B,即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用于音频拨号,两者均后续要拨的电话号码。例如:ATDT12345678表示用音频拨号呼叫12345678。若在分机拨出,则先要拨外线,然后稍停顿后再拨对方号码,其间插入逗号稍作停顿,一个逗号相当于停顿2秒。例如ADTP0,12345678则表示先拨0,请求接外线后停顿2秒,再拨外线12345678。
  (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采用的帧格式如下:

8 14 2 8 8 8 16 8-131064

16(位)

SOH Count Flag Ack Seg Addr CRC1 Data CRC2

  格式中控制字符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)使用比特填充的首尾定界符法。该法以一组特定的比特模式(如01111110)来标志一帧的起始与终止。本节稍后要详细介绍的HDLC规程即采用该法。为了不使信息位中出现的与该特定模式相似的比特串被误判为帧的首尾标志,可以采用比特填充的方法。比如,采用特定模式01111110,则对信息位中的任何连续出现的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。

表3.3 

传输控制字符

标记 SOH STX ETX EOT ENQ ACK DEL NAK SYN ETB
名称 序始 文始 文终 送毕 询问 确认 转义 否认 同步 块终
ASCII码值 01H 02H 03H 04H 05H 06H 10H 15H 16H 17H
EBCDIC码值 01H 02H 03H 37H 2DH 2EH 10H 3DH 32H 26H

  各传输控制字符的功能如下:
  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)不带报头的单块报文或分块传输中的最后一块报文:
┈┈
SYN SYN STX 报文 ETX BCC
  (2)带报头的单块报文:
┈┈
SYN SYN SOH 报头 STX 报文 ETX BCC
  (3)分块传输中的第一块报文:
┈┈
SYN SYN SOH 报头 STX 报文 ETB BCC
  (4)分块传输中的中间报文:
┈┈
SYN SYN STX 报文 ETB BCC

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

(1)肯定确认和选择响应: (2)否定确认和选择响应:
SYN SYN ACK
SYN SYN NAK
(3)轮询/选择请求: (4)拆链:
SYN SYN P/S前缀 站地址 ENQ
SYN SYN EOT

  监控报文一般由单个传输控制字符或由若干个其它字符引导的单个传输控制字符组成。引导字符统称为前缀,它包含识别符(序号)、地址信息、状态信息以及其它所需信息。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:

控制字段位 1 2 3 4 5 6 7 8
I格式 0 N(S) P N(R)
S格式 1   0 S1  S2 P/F N(R)
U格式 1   1 M1  M2 P/F 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)重装死锁及其防止。死锁中比较严重的情况是重装死锁。假设发给一个端系统的报文很长,被源节点拆成若干个分组发送,目的节点要将所有具有相同编号的分组重新装配成报文递交给目的端系统,若目的节点用于重装报文的缓冲区空间有限,而且它无法知道正在接收的报文究竟被拆成多少个分组,此时,就可能发生严重的问题:为了接收更多的分组,该目的节点用完了它的缓冲空间,但它又不能将尚未拼装完整的报文递送给目的端系统,而邻节点仍在不断地向它传送分组,但它却无法接收。这样,经过多次尝试后,邻节点就会绕道从其它途径再向该目的节点传送分组,但该目的节点已被死锁,其周边区域也由此发生了阻塞。下面几种方法可用以避免重装死锁的发生:
  ①允许目的节点将不完整的报文递交给目的端系统;
  ②一个不能完整重装的报文能被检测出来,并要求发送该报文的源端系统重新传送;
  ③每个节点配备一个缓冲空间,用以暂存不完整的报文。
  ①、②两种方法不能很满意地解决重装死锁,因为它们使端系统中的协议复杂化了。一般的设计中,网络层应该对端系统透明,也即端系统不该考虑诸如报文拆、装只类的事。⑶方法虽然不涉及端系统,但使每个节点增加了开销。
 3.4.4 X.25 协议
  CCITT提出的X.25协议描述了主机(DTE)与分机交换网(PSN)之间的接口标准,使主机不必关心网络内部的操作就能方便地实现对各种不同网络的访问。X。25实际上是DTE与PSN之间接口的一组协议,它包括物理层、数据链路层和分组层三个层次。X。25的分组级相当与OSI参考模型中的网络层,其主要功能是向主机提供多信道的虚电路服务。
 1.X.25 分组级的功能
  X.25分组级的主要功能是将链路层所提供的连接DTE-DCE的一条或多条物理链路复用成数条逻辑信道,并且对每一条逻辑信道所建立的虚电路执行与链路层单链路协议类似的链路建立、数据传输、流量控制、顺序和差错检测、链路的拆除等操作。利用X。25分组级协议,可向网络层的用户提供多个虚电路连接,使用户可以同时与公用数据网中若干个其它X。25数据终端有用户(DTE)通信。
  X.25提供虚呼叫和永久虚电路两种虚电路服务,虚呼叫即需要呼叫建立与拆除过程的虚电路服务,永久虚电路即在接入是由协商指定的不需要呼叫建立与拆除过程的虚电路服务。每条虚电路都要赋予一个虚电路号,X.25中的虚电路号由逻辑信道组号(0~15)和逻辑信道号(0~255)组成。用于虚呼叫的虚电路号范围和永久虚电路的虚电路号应在签定服务时与管理部门协商确定与分配。
  公用数据网有虚电路和数据报两种操作方式,尽管有些网络体系结构(如Ethernet)仍在使用数据报技术,但数据报服务已在1980年的修订中被从X。25标准中删去,取而代之的是一个称做快速(Fast Select)的可选扩充服务。
  X.25所规定的虚电路服务属于面向连接的OSI服务方式,这正好符合OSI参考模型中的网络层服务标准定义,这就为公用数据网与OSI结合提供了可能性。OSI网络层的功能是提供独立于运输层的中继和路由选择以及其它以之相关的功能。在面向连接的网络层服务中,要进行通信的网络层实体必须首先建立连接,这在X.25中即为相应的建立虚电路的呼叫建立规程。
 2.X.25分组级分组格式
  在分组级上,所有的信息都以分组为基本单位进行传输和处理,无论是DTE之间所要传输的数据,还是交换网所用的控制信息,都以分组形式来表示,并按照链路协议穿越DTE-DCE界面进行传输。因此在链路层上传输时,分组应嵌入到信息帧(I帧)的信息字段中,即表示成如下的格式: 

标记字段F

地址字段 控制字段 (分组) 帧校验序列FCS 标记字段F

  每个分组均由分组头和数据信息两部分组成,其一般格式如图3.17所示。

 8  7  6  5  4  3  2  1

(位)

1
2
3
4

通用格式标识 逻辑信道组号
逻辑信道号
分组类型标识
与分组类型有关的信息(可为空)
数据(可变长、可为空)

─┬─

分组头


─┼─

数据

─┴─

图3.17 X.25分组的一般格式

  分组格式中的数据部分(可以为空)通常被递交给高层协议或用户程序去处理,所以分组协议中不对它做进一步规定。分组头用于网络控制,主要包括DTE-DCE的局部控制信息,其长度随分组类型不同有所不同,但至少要包含前三个字节作为通用格式标识、逻辑信道标识和分组类型标识,它们的含义如下:
  (1)通用格式标识(GFI)。由分组中第一个字节的前四位组成,用于标志分组头中其余部分的格式。第一位(b8)称作Q位或限定位,只用于数据分组中。这是为了对分组中的数据进行特殊处理而设置的,可用于区分数据正常数据,还是控制信息。对于其它类型的分组,该位恒置为“0”。第二位(b7)称D位或传送确认位,设置该位的目的是用来指出DTE是否希望用分组接收序号P(R)来对它所接收的数据做端一端确认。在呼叫建立时,DTE之间可通过D位来商定虚呼叫期间是否将使用D位来商定虚呼叫期间是否将使用D位规程。第三、四位(b6、b5)用以指示数据分组的序号是用3位即模8(B5置“1”)还是7位即模128(b6置“1”),这两位或者取“10”,或者取“10”,或者取“01”,一旦选定,相应的分组格式也有所变化。
  (2)逻辑信道标识。由第一个字节中和剩余四位(b4、b3、b2、b1)所做的逻辑信道组号(LCGN)和
第二个字节所做的逻辑信道号(LCN)两部分组成,用以标识逻辑信道。
  (3)分组类型标识。由第三个字节组成,用于区分分组的类型和功能。若该字节的最后一位(B1)为
“0”,则表示分组为数据分组成;若该位为“1”,则表示分组为控制分组,可以用做呼叫请求或指示分组、释放请求或指示分组。若该字节末三位( b3、b2、b1)为全“1”,则表示该分组是某个确认或接受分组。
  第四个字节及其后诸字节将依据分组类型的不同而有不同的定义。
  X.25分组级协议规定了多种类型的分组。由于DTE与DCE的不对称性,所以具有相同类型编码的同类型分组,因其传输方向的不同的含义和解释,具体实现时也有所不同。为此,分组协议从本地DTE的角度出发,为它们取了不同的名称以示区别。一般来说,从DTE到DCE的分组表示本地DTE经DCE向远地DTE发送的命令请求或应答响应;反之,从DCE到DTE的分组表示DCE代表远地DTE向本地DTE发送的命令或应答响应。表3.5列出了这些分组的名称、分组类型编号及参数。表中的分组类型可归纳为图3.18所示的六种格式。

表3.5

X.25 分组级分组类型

 

分组类型名称

分组类型编号(位)

格式
编号

DTE->DCE DTE->DCE 8 7 6 5 4 3 2 1

呼叫
建立

清除

呼叫请求
呼叫接受
释放请求
DTE释放确认

呼叫指示
呼叫接通
释放指示
DCE释放确认

0 0 0 0 1 0 1 1
0 0 0 0 1 1 1 1
0 0 0 1 0 0 1 1
0 0 0 1 0 1 1 1




数据

中断

DTE数据
DTE中断请求
DTE中断确认

DCE数据
DCE中断请求
DCE中断确认

P(R) M P(S) 0
0 0 1 0 0 0 1 1
0 0 1 0 0 1 1 1



流量
控制

复位

DTE RR
DTE RNR
复位请求
DTE复位确认

DCE RR
DCE RNR
复位请求
DCE复位确认

P(R) 0 0 0 0 1
P(R) 0 0 1 0 1
0 0 0 1 1 0 1 1
0 0 0 1 1 1 1 1





启动

重启动请求
DTE重启动确认

重启动指示
DCE重启动确认

1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 1


任选 DTE REJ

DCE REJ

P(R) 0 1 0 0 1

 

①呼叫请求、呼叫指示 ②数据分组
0 0 0 1 逻辑信道组号
逻辑信道号

分组类型      │1

主叫地址长度 被叫地址长度

DTE地址

0 0 0 0
0 0 补充业务字段长度
补充业务(0~63字节)
呼叫用户数据(0~16/128字节)
0 0 0 0 逻辑信道组号

逻辑信道号

P(R)  │ M │  P(S) │0

数据部分
③流量控制分组
0 0 0 0 逻辑信道组号
逻辑信道号

 P(R)  │  分类类型  │1

④请求、指示分组 ⑤复位分组
0 0 0 1 逻辑信道组号
逻辑信道号
分组类型      │1
原 因       │1
0 0 0 0 逻辑信道组号
逻辑信道号

分组类型      │0

原 因
诊断码
⑥确认分组
0 0 0 1 逻辑信道组号

逻辑信道号

分组类型      │0

图3.18 X.25分组格式

  数据分组中的数据类型编码部分,除了用M位代替I幀中的P/F位外,其它内容与数据链路级的HDLC幀格式中的控制字段C非常类似,最末位的“0”是数据类型分组的特征位。M(More data)位置“1”,代表还有后续的数据,即当前数据分组中的数据将以同一逻辑信道上的下一数据分组中的数据作为逻辑继续。P(S)P(R)分别称为分组发送顺序号和接收顺序号,它们的作用大致与幀格式中的N(S)和N(R)相当。但是,它们的主要作用是控制每条逻辑道上向分组交换网发送或从交换网接收的数据流,而不只为站点子÷之间提供确认手段。其目的是为了调节每个逻辑信道上的流量,以防止对分组交换网的压力过重。实际上,P(S)或P(R)的值用以确定一个给定的逻辑信道上的“窗口”,表示信道上的允许传送多少个未被响应的分组。能传输未响应分组的最大值称为窗口尺寸,每条虚电路的窗口尺寸是在立户或呼叫建立时分配的,但序号采用3位时最大能超过7个分组,序号采用7位时最大不能超过127个分组。
  与数据链路级帧格式一样,分组级也包括RR、RNR和REJ三种分组,它们被称为流量控制分组,这些分组中的类型字段只包括接收顺序号P(R),而无发送顺序号P(S)。RR用于告知对方本方正在准备从给定逻辑信道上接收顺序号为P(S)的分组;RNR用于向对方表示本方目前不能在给定的逻辑信道上接收数据分组。RNR可以通过同一方向上发送的RR分组加以清除。
  另外,分组级也包括一些无编号的分组。如是中断请求分组,它不需要等待事先已发送的其它分组而能立即向外发送,甚至在对方不能接收数据时也能发送。中断请求分组只能携带一个字节的用户数据,放在原因字段中用以向对方传送中断信息或原因。
  X.25中还定义了很多其它类型的分组,包括释放请求/指示、复位请求/指示、重启动请求/指示等。其中除复位请求/指示分组多下个诊断代码外,其它均与中断请求分组格式相同。这些分组都包括一个“原因”字段,用以存入引入相应动作的原因。需要说明一下复位与重启动之间的差别。复位请求是为了在数据传输状态中对虚电路进行重初始准备而设置的;而重启动则为同时释放DTE-DCE界面上所有虚呼叫以及复位所有永久虚电路而设置的。
  各类确认分组仅包含三个字节,它们分别用做对呼叫、释放、中断、复位及重启动的请求或指示的确认。
 3.4.5网际互连
 1.网际互连原理
  网际互连的目的是使一个网络上的用户能访问其它网络上的资源,使不同网络上的用户互相通信和交换信息。这不仅有利于资源共享,也可以从整体上提高网络的可靠性。
  要实现网际互连,必须:
  (1)在网络之间至少提供一条物理上连接的链路,并具有对这条链的控制规程;
  (2)在不同网络的进程之间提供合适的路由实现数据交换;
  (3)有一个始终记录不同网络使用情况并维护该状态信息的统一的记费服务;
  (4)在提供以上服务时,尽可能不对互连在一起的网络的体系结构做任何修改。
  互连的网络在体系结构、层次协议及服务等方面或多或少存在着差异,对于异构网来说(例如各种类型的局域网)差异就更大。这种差异可能表现在寻址方式、路由选择、最大长度、网络接入机制、用户接入控制、超时控制、差错恢复方法、服务、管理方式等诸方面的不同。要实现网际互连,就必须消除差异。要事现网际互连,就必须消除网络间的差异,这些都是网际互连要解决的问题。
  局域网(LAN)、广域网(WAN)的网际互连有“LAN-LAN”,“LAN-WAN”、“WAN-WAN”和“LAN-WAN-LAN”等四种型式。由于非OSI系统要与OSI系统互连,非OSI系统之间要互连,所以,网际互连并不单纯指不同的通信子网在网络层上互连。实际上,两个网络之间要互连时,它们之间的差异可以表现在OSI七层模型中的任一层上。用于网络之间互连的中继设备称为网间连接器,按它们对不同层次的协议和功能转换,可以分为以下几类:
  (1)转发器(Repeater),在物理层间实现透明的二进制比特复制,以补偿信号衰减;
  (2)网桥(Bridge) ,提供链路层间的协议转换,在局域网之间存储和转发帧;
  (3)路由器(Router),提供链路层间的协议转换,在不同的网络之间存储和转发分组;
  (4)网关(Gateway),提供运输层及运输以上各层间的协议转换。
  注意,由于术语的不统一性,有些文献中将上述的网桥、路由器和网关一起统称为“网关”,此时它可能指的网之间进行协议转换的网间连接器,另外,还有一种称为桥路器(Router)的产品,兼有网桥和路由器两者的功能。
 2.网桥
  网桥是一种存储转发设备,用来连接类型相似的局域网。从互连网络的结构看,网桥属于DCE级的端到端的连接;从协议层次看,网桥属于链路层范畴,存该层对数据帧进行存储转发。它既不同于只作单纯信号增强的转接器,也不同于进行网络层转换的网间连接器。但网桥仍然是一种网络连接的方法,因为局域网本身没有网络层,只有在主机站点上才有网络层或提供网络层服务的功能。
  网桥接收帧并送到数据链路层进行差错校验,然后送到物理层再经物理传输媒体送到另一个子网。在转发帧以前,网桥对帧的内容和格式不做修改或仅做很少的修改。 网桥应该有足够的缓冲空间,以便能满足高峰负荷时的要求。另外,必须具备寻址和路由选择的;逻辑功能。
  局域网贩逻辑功能自下向上可分为物理层、媒体访问控制层(MAC)及逻辑路控制层(LLC)三层,异构局域的差异主要体现在物理及媒体访问控制层中,图3.19给出了一个假想的网桥的工作原理图,图中的两个局域网802.X和802.Y分别为802.3、802.4和802.5MAC标准中的一种.网络中发送的数据由802.X的MAC控制信息X、LLC控制控制信息X,然后交给LLC子层加上相应控制信息Y送到802.Y局域网中,再由对方主机接收。此时,在802.Y局域网中,数据由802.Y的MAC控制信息Y、LLC控制信息L各网络协议数据单元组成。在上述过程中,由于各种局域网有其不同的物理和数据格式,所以传输过程中还要进行转换。


图3.19 网桥工作原理

 3.路由器
  路由器工作网络层,用以实现不同网络间的地址翻译、协议转换和数据式转换等功能,一般用于广域网之间的连接或广域网与局域网之间的连接。常用的路由器有用于面向连接的路由器和用于无连接的路由器两种。
  面向连接的路由器用于连接两个提供虚电路服务的广域网。一种采用CCITT X.75协议的路由器,可用于连接两个提供X.25访问的网络。
  无连接的路由器用于提供数据报服务的网际互连模型中,使若干个局域网通过广域网互连。这样,一个局域网上的主机就可以通过广域网与远程局域网上的主机相互通信,局域网上的主机也可以与广域网上的主机以数据报方式通信。IP协议网际互连方式便是这种模型的实例。
 4.网关
  网关也称为协议转换器,用于高层协议的转换,对运输层到应用层均能支持。
  若两互连网络的主机高层中仅运输层协议不同,则可以利用网关的功能在运输层间做协议转换,内容包括数据格式的重新装配、长数据的分段、地址格式的转换及操作规程的适配等。在高层协议转换的实际实现中,并不一定要分层进行,例如,从运输层到应用层的协议转换可以一起进行。

第3章 计算机网络体系结构及协议

3.5 高层协议介绍
 3.5.1 运输层(又称传输层) 
 1.运输层在OSI中的地位和作用
  OSI七层模型中的物理层、数据链路层和网络层是面向网络通信的低三层协议。运输层负责端到端的通信,既是七层模型中负责数据通信的最高层,又是面向网络通信的低三层和面向信息处里的高三层之间的中间层。运输层位于网络层之上、会话层之下,它利用网络层子系统提供给它的服务区开发本层的功能,并实现本层对会话层的服务。
  运输层是OSI七层模型中最重要、最关键的一层,是唯一负责总体数据传输和控制的一层。运输层的两个主要目的是:第一,提供可靠的端到端的通信;第二,向会话层提供独立于网络的运输服务。
  在讨论为实现这两个目标所应具有的功能之前,先考察一下运输层所处的地位。首先,运输层之上的会话层、表示层及应用层局部包含任何数据传输的功能,而网络层又不一定需要保证发送站的数据可靠地送至目的站会话层不必考虑实际网络的结构属性连接方式等实现的细节。
  根据运输层在七层模型中的目的和单位,它的主要功能是:对一个进行的对话或连接提供可靠的运输服务,在通向网络的单一物理连接上实现该连接的复用,在单一连接上提供端到端的序号与流量控制端到端的差错控制及恢复等服务。
  运输层反映并扩展了网络层子系统的服务功能,并通过运输层地址提供给高层用户传输数据的通信端口,是系统间高层资源的共享不必考虑数据通信方面的问题。
 2.运输服务
  运输层的服务包括的内容有:服务的类型、服务的等级、数据的传输、用户的接口、连接管理、快速数据传输、状态报告、安全保密等。
  (1)服务类型。 运输服务有两大类,即面向连接的服务和面向无连接服务。面向连接的服务提供运输服务用户之间逻辑连接的建立、维持和拆除,是可靠的服务,可提供流量控制、差错控制和序列控制。无连接服务,只能提供不可靠的服务。 
  需要说明的是,面向连接的运输服务与面向连接的网络层服务十分相似,两者都向用户提供连接的建立、维持和拆除,而无连接的运输服务与无连接的网络层服务业十分相似。那么,既然运输层服务与网络层服务如此相似,又为什么要将它们划分为两个层次呢?前面章节已经介绍过,网络层是通信子网的一个组成部分,网络服务质量并不可靠,如会频繁的丢失分组、网络层系统可能崩溃或不断的进行网络复位。对于这种情况,用户将束手无策,因为用户不能对通信子网加以控制,因而无法采用更优的通信处理机来解决网络服务质量低劣的问题,更不能通过改进数据链路层纠错能力来改善它。解决这个问题的唯一可能办法就是在网路层上增加一层运输层。运输层的存在,使运输服务比网络服务更可靠,分组的丢失、残缺、甚至网络的复位均可被运输层检测出来,并采取相应的补救错施。而且,因为运输服务独立于网络服务,可以采用一种标准的原预计作为运输服务,而网络服务则随不同的网络可能有很大的不同。因为运输服务是标准的,用运输服务原语编写的应用程序能广泛适应于各种网络,因而不必担心不同的通信子网所提供的不同的服务及服务质量。
  ⑵.服务等级。运输协议实体应该允许运输层用户能选择运输层所提供的服务等级,以利于更有效的利用所提供的链路际互连网络资源。可提供的服务包括差错和丢失数据的程度、允许的平均延迟和最大延迟、允许的平均吞吐率和最小吞吐率以及优先级水平等。更具这些要求,可将运输层协议服务等级细分为以下四类:
  ①.可靠的面向连接的协议;
  ②.不可靠的无连接协议;
  ③.需要定序和定时传输的话音传输协议;
  ④.需要快速和高可靠的实时协议。
  ⑶.数据传输。数据传输的任务是在两个运输实体之间传输用户数据和控制数据。一般采用全双工服务,来别也可采用半双工服务。数据可分为正常的服务数据分组和快递服务数据分组两种,对快速服务数据分组的传输可暂时中止当前的数据传输,在接收短用中短方式优先接收。
  ⑷.用户接口。用户接口机制可以有多种方式,包括采用过程调用、通过邮箱传输数据和参数、用DMA方式在主机与具有运输层实体的前端处理机之间传输等。
  ⑸.连接管理。面向连接的协议需要提供建立和终止连接的功能。一般总是提供对称的功能,即两个对话的实体豆油连接管理的功能,对简单的应用也有仅对一方提供连接管理功能的情况。连接的终止可以采用立即终止传输,或等待全部数据传输完再终止连接。
  ⑺.安全保密。包括对发送者和接收者的确认、数据的加密以及通过保密的链路和节点的路由选择等安全保密服务。
 3.服务质量
  服务质量QOS(Quallity of Service)是指在运输两节点之间看到的某些运输连接的特征,是运输层性能的度量,反映了传输质量及服务的可用性。
  服务质量可用一些参数来描述,如连接建立延迟、连接建立失败、吞吐量、输送延迟、残留差错率、连接拆除延迟、连接拆除失败概率、连接会弹率传输失败率等等。用户可以在连接建立是指明所期望的、可以接受的或不接受的QOS参数值。通常,用户使用连接建立源于在用户与运输服务提供者之间协商QOS,协商过的QOS适用于整个运输连接的生存期。但主呼用户请求的QOS可能被运输服务者提供者降低,也可能被被呼用户降低。
  根据用户要求和差错性质,网络服务按质量可分为以下三种类型:
  ⑴.A型网络服务,具有了接受的残留差错率和故障通知率;
  ⑵.B型网络服务,具有可接受的残留差错率和不可接受的故障通知率;
  ⑶.C型网络服务,具有不可接受的残留差错率。
  可见,网络服务质量的划分是以用户要求为依据的.若用户要求比较高,则一个网络可能归于C型;反之,则一个网络可能归于B型甚至A型。例如,对于某个电子邮件系统来说,每周丢失一个分组的网络也许可算做A型;而同一个网络对银行系统来说则只能算作C行了。三种类型的网络服务中,A型服务质量最高,B型网络服务质量次之,C型网络服务质量最差。
 4.运输层协议等级
  运输层的功能是要弥补从网络层获得的服务和拟向运输服务用户提供的服务之间的差距,它所担心的是提高服务质量,包括优化成本。
  运输层的功能按级别划分,OSI定义了五种协议级别,即级别0(简单级)、级别1(基本差错恢复级)、级别2(多路复用级)、级别3(差错恢复和多路复用级)和级别4(差错检测和恢复级)。服务质量划分的较高的网络,仅需药较简单的协议级别;反之,服务质量划分的较低的网络,仅需要较复杂的协议级别。
 5.运输服务原语
  服务在形式上是一组原语(Primitive)来描述的。原语被用来统治服务提供者采取某些行动,或报告某同层尸体已经采取的行动。在OSI参考模型中,服务原语划分为四种类型:
  ⑴.请求(Request)。用户利用它要求服务提供者提供某些服务,如建立连接或发送数据等;
  ⑵.指示(Indication)。服务提供者执行一个请求以后,用指示原语通知收方的用户实体,告知有人想要与之建立连接或发送数据等;
  ⑶.响应(Response)。收到指示原语后,利用响应原语向对方作出反应,;例如同意或不同意建立连接等;
  ⑷.确认(Confirm)。请求对方可以通过接收确认原语来获悉对方是否同意接受请求。
原语可以携带参数,如连接请求原语的参数肯恩公之命他摇匀阿台机器连接,需要什么服务类别等。连接指示原语的参数肯恩公包含呼叫者的表示、需要服务的类别等。被呼叫实体可以在响应原语中的参数里表示同意或不同意连接,若同意,则肯恩公对某些参数给出协商制,比如最大数据吞吐量等。ISO 定义的运输服务包括了4种类型共10个运输服务原语。
 3.5.2 会话层
  会话层在运输层提供的服务上,加强了会话管理、同步和活动管理等功能。
 1.实现会话连接到运输连接的映射
  会话层的主要功能是提供建立连接并有序传输数据的一种方法,这种连接就叫作绘画(Session)。会话可以使一个远程终端登录到远地的计算机,进行文件传输或进行其它的应用。
  会话连接建立的基础是建立运输连接,只有当运输连接建立好之后,会话连接才能依赖于它而建立。会话与运输层的连接有三种对应关系。一种是一对一的关系,即在会话层建立会话时,必须建立一个运输连接,当会话结束时,这个运输连接也被释放。另一种是多对一的关系,例如在多顾客系统中,一个客户所建立的一次会话结束后,又有另一顾客要求建立另一个会话,此时运载这些会话的运输连接没有必要不停的建立和释放,但在同一时刻,一个运输连接只能对应一个会话连接。第三种是一对多的关系,若运输连接建立后中途失效,此时会话层可以重新建立一个运输连接而不用废弃原有的会话,当新的运输连接建立后,原来的会话可以继续下去。
 2.会话连接的释放
  会话连接的释放不同于运输连接的释放,它采用有序释放方式,也即使用完全的握手,包括请求、指示、响应和确认原语,只有双方同意,会话菜终止。这种释放方式不会丢失数据。对于异常原因,会话层也可以不经协商立即释放,但这样可能会丢失数据。
 3.会话层管理
  与其它各层一样,两个会话实体之间的交互活动都需要协调、管理和控制。会话服务的获得是执行会话层协议的结果,会话层协议支持并管理同等对接会话实体之间的数据交换。由于会话层往往是由一系列交互对话组成的,所以对话的次序、对化的进展情况必须加以控制和管理。在会话层管理中考虑了令牌与对话管理、活动与活动单元以及同步与重新同步等措施。
  ⑴.令牌和对话管理。从原理上说,所有OSI的连接都是全双工的。但在许多情况下高层软件为方便起见往往设计成半双工交互式通信。例如,远程终端访问一个数据库管理系统,往往是发出一个查询,然后等待回答,要么轮到用户发送,要么轮到数据库发送,保持这种轮换并强制实行的过程就叫作对话管理。实现对话管理的方法是使用数据令牌(DataToken),令牌是会话连接的一个属性,它表示了会话服务用户对某种服务的独占使用权,只有我有令牌的用户可以发送数据,另一方必须保持沉默。令牌是一种非共享的OSI资源。
  ⑵.活动与对话单元。会话服务用户之间的合作可以划分为不同的逻辑单位,每一个逻辑单位成为一个活动(Activity),每个活动的内容具有相对的完整性和独立性。在任一时刻,一个会话连接只能为一个活动所使用,但允许某个活动跨越多个会话连接。另外,可以允许有多个活动顺序的使用一个会话连接,但在世上不允许重叠。活动与会话连接的关系可以用电话用户线路的连接关系说明,一对拨通的电话相当于一个会话连接,使用者对电话线通话的用户进行的对话相当于活动显然一个电话人一时刻只能供一个人使用,即支持一个活动。然而,当一对用户通完话后可不挂断电话,让后续需要统一电话线路连接的人接着使用,这就相当于一个会话连接顺序的工多个活动使用。若在通话过程中线路出现故障引起中断,则需要重新再接电话继续对话,这就相当于一个活动跨越了多个连接。
  对化单元是一个活动中数据的基本交换单元,通常代表逻辑上重要的工作部分。在活动中,存在一系列的交互通话,每个单项的连接通信动作所传输的数据就构成一个对化单元。
  (3)同步与重新同步。会话层的另一个服务是同步。所谓同步就是使会话服务用户对会话的进展情况有一致的了解,在会话被中断后可以从中断处继续下去,而不必从头恢复会话,这种会话进程的了解是通过设置同步点来获得的。会话层允许会话用户在传输的数据中自由设置同步点,并对每个同步点与同步序号,用以识别和管理同步点,这些同步点是插在用户数据流中一起传送给对方的。当接收方通知发送方它收到一个同步点时,发送方就可确定接收方已将此同步点之前发送的数据流全部收妥。 
  会话层定义了两个两类同步点。主同步点用于在同步的数据流中划分出对话单元,一个主同步点是一个对话单元的结束和下一个对话单元的开始;次同步点用于在一个对话单元内部实现数据结构化。主同步点与次同步点有一些不同,在重新同步时只可能回到最近的主同步点;每一个插入数据流中的主同步点都被明确地确认,而次同步点不被确认。
 4.OSI会话服务
  会话层可以向用户提供许多服务,为使两个会话服务用户在会话建立阶段能协商所需的服务,将服务分成若干个单元。通用的功能单元包括:
  (1) 核心功能单元,提供连接管理和全双工数据传输的基本功能。 
  (2) 协商释放功能单元,提供有次序的释放服务。 
  (3) 同步功能单元,在会话连接期间提供同步或重新同步。, 
  (4) 活动管理功能单元,提供对话活动的识别、开始、结束、暂停和 新开始等。 
  (5) 异常报告功能单元,在会话连接期间提供异常情况报告。 
  上述所有功能的执行均有相应的用户服务原语,每一种语类型都可能具有请求、指示、响应和确认四种形式。
 5.OSI会话协议
  OSI的会话层协议填补了运输层所提供的服务与会话用户所要求的服务之间的缝隙。会话服务提供了各种与数据交换的管理和构造有关的服务。
  会话协议含有34种会话协议数据单元的类型,会话协议数据单元与会话服务原语之间具有相对应的映象关系,大多数服务原语导致会话协议实体产生并发送一个相应的会话协议数据单元。
 3.5.3 表示层
 1.表示层的特点及功能 
  OSI环境的低五层提供透明的数据传输,应用层负责处理语义,而表示层则负责处理语法,由于各种计算机都可能有各自的数据描述方法,所以不同类型计算机之间交换的数据,一般需经过格式转换才能保证其意义不变。表示层要解决的问题是如何描述数据结构并使之与具体的机器无关,其作用是对原站内部的数据结构进行编码,使之形成适合于传输的比特流,到了目的站再进行解码,转换成用户所要求的格式。 
  为使各个系统间交换的信息具有相同的语义,应用层采用了相互承认的抽象语法。抽象是对数据一般结构的描述。表示实体实现抽象语法与传输语法间的转换,传输语法是同等表示实体之间通信时对用户信息的描述,是对抽象语法比特流进行编码得到的。抽象语法
与传输语法之间的对应关系称为上下关系。
  表示层的主要功能为:
  (1)语法转换。将抽象语法抟换成传输语法,并在对方实现相反的转换。涉及的内容有代码转换、字符转换、数据格式的修改,以及对数据结构操作的适应、数据压缩、加密等。
  (2)语法协商。根据应用层的要求协商选用合适的上下文,即确定传输语法并传送。
  (3)连接管理。包括利用会话层服务建立表示连接,管理在这个连接之上的数据传输和同步控制,以及正常或异常地终止这个连接。
 2. 语法转换
  (1)数据表示。不同厂家生产的计算机具有不同的内部数据表示。如IBM公司的主机广泛使用EBCDIC码,而大多数其它厂商的计算机则使用ASCII码;Intel公司的80X86芯片从右到左计数字节,而Motorola公司的68020和68030芯片则从左到右计数;大多数微型机用16位或32位整数的补码运算,而CDC的Cyber机用60位的反码。由于表示方法的不同,即使所有的位模式都正确接收,也不能保证数据含义的不变。人们要的是保留含义,而不是位模式。为了解决此类问题,必须进行数据表示方式的转换。可以在发送方转换,也可以在接收方转换,或者双方都向一种标准格式转换。
  (2)数据压缩。强调数据压缩的必要性是基于以下几个原因。首先,随着多媒体技术的发展,数字化/音频数据的吞吐、传输和存储问题日益凸现。具有中等分辩率(640×480)的彩色(24bit/像素)数字视频图像的数据量约7.37Mbit/帧,若按25帧/秒的动画要求,则视频数据的传输速率大约为184Mbps。由此可见,高效实时地数据压缩对于缓解网络带宽和取得适宜的传输速率是非常必要的。其次,网络的费用依赖于传输的数据量,在传输之前
对数据进行压缩可减少传输费用。
  实现数据压缩的可能性是基于以下原因。首先,是原始信源数据(视/音频)存在着很大的冗余度,比如电视图像帧内邻近像素之间空域相关性及前后之间的时域相关性都很大,信息有冗余。其次,是有可能利用人的视觉对于边缘急剧变化不敏感(视觉掩盖效应)各眼睛对图像的亮度信息敏感、对颜色分辨力弱的特点以及听觉的生理特性实现高压缩比,而使由压缩数据恢复的图像及声音数据仍有满意的主观质量。第三,利用数据本身的特征也可实现压缩。
  (3)网络安全和保密。随着计算机网络应用的普及,计算机网络的安全和保密问题就变得越来越重要了。为保护网络的安全,最常见的方法是采用加密措施。从理论上讲,加密可以在任何一层上实现,但实际应用中常常在物理层、运输层和表示层三层实现加密。在物理层加密的方案叫做链路加密,它的特点是可以对整个报文进行加密;在运输层实现加密可以提高有效性,因为表示层可以对数据事先进行压缩处理;而在表示层可以有选择地对数据实现加密。
 3.OSI表示服务原语
  表示层大部分服务原语与会话层的相类似。在实施中,几乎所有的表示服务原语只是穿过表示层到会话层。有些表示服务原语可不加改变直接映射成相应的会话服务原语,即无需产生一个表示协议数据单元。通常与这些原语有关的参数在会话服务原语的用户数据字段中传输。
 4.抽象语法标记ASN.1
  表示编码、 传输和解码数据结构的关键,是要有一种足够灵活的 、适应各种类型应用的标准数据描写方法.为此,OSI中提出了一种标记法,叫做抽象语法标记1,简称为ASN.1.发送时将ASN.1数据结构编码成位流,这种位流的格式叫做抽象语法.
  在ASN.1中为每个应用所需的所有数据结构类型下了定义,并将它们组成库。当一个应用想发送一个数据结构时,可以将数据结构与其对应的ASN.1标识一起传给表示层。以ASN.1定义作为索引,表示层便知道数据结构的域的类型及大小,从而对它们编码 传输;在另一端,接收表示层查看此数据结构的ASN.1标识,从而了解数据结构的域的类型及大小。这样,表示层便就可以实现从通信线路上所用的外部数据格式到接收计算机所用的内部数据格式的转换。
  数据类型的ASN.1描述称为抽象语法,同等表示实体之间通信时对用户信息的描述称为传输语法。为抽象语法指定一种编码规则,便构成一种传输语法。在表示层中,可用这种方法定义多种传输语法。传输语法与抽象语法之间是多一多对应关系,即一种传输语法可用于多种抽象 语法 的数据传输,而一种抽象语法的数据 值可用多传输语法来传输。
  每个应用层协议中的抽象语法与一个能对其进行编码的传输语法的组合,就构成一个表示上下文(Presentation Context).表示上下文表示连接建立时协商确定,也可以在通信过程 中重新定义。表示层提供定义表示上下文的设施。
 3.5.4 应用层
  应用层也称为应用实体(AE),它由若干个特定应用服务元素(SASE)和一个或多个公用服务元素(CASE)组成 。每个SASE提供特定的应用服务,例如文件传输访问和管理(FTAM)电子文电处理系统(MHS) 虚拟终端协议(VIP)等。CASE提供一组公用的应用服务,例如联系控制服务元素(ACSE)可靠传输服务元素(RTSE)和远程操作服务元素(ROSE)等。
 1.文件传输 访问和管理(FTAM)功能
  FTAM是一个用于传输、访问和管理开放系统工程中文件的一个信息标准化。FTAM服务使用户即使不了解所使用的实际文件系统的实现细节,也能对该文件系统进行操作,或对数据的描述进行维护。
  一个具有通用目的的文件传输协议必须考虑异种机的环境,因为不同的系统可能有不同的文件夹格式和结构。对于M种本地文件结构和N种输入文件夹结构来说,为了避免M*N 种可能的不同文件夹结构之间的映射 转换问题,可以采用一种虚拟文件夹的方案。该方案制定了一个通用的虚拟文件结构,使文件传输系统中交换的只是虚拟文件,而在端系统则对虚拟文件格式和本地文件格式实施一种局部的转换。
  虚拟文件可以组成一个虚拟文件库,虚拟文件库模型是FTAM的基础。FTAM定义了一系列用户服务原语,用以实现文件的有关操作。
 2.电子邮件功能
  电子邮件是允许终端用户编辑文电的一种设施。这种服务是邮政发展的主要方向,是一种新的分布式综合文电处理系统,它可分为单系统电子邮件和网络电子邮件两类。
向单系统电了邮件中,允许一个共享计算机系统上的所有用户交换文电。每个用户在系统上登记,并有惟一的标识符,与每个用户相联系的是一个邮箱。用户可以调用电子邮箱设施,准备文电,并把它给此系统上的任何其它用户。邮箱实际上只是由文件管理系统维护的一个文件目录,每个邮箱有一个用户与之相联。任何输入信件只是简单地作为文件存放于用户邮箱目录之下,用户可以取出并阅读这个文电。
  在单系统电子邮件设施中,文电只能在特定系统的用户之间交换。若希望通过网络系统在更广泛的范畴内交换文电,就需要包括OSI模型的1-6层的服务,并在应用层制订一个标准化的文电传输协议,这就是网络电子邮件。
  CCITT发表了一个关于文电处理系统MHS(Message Handling System)的X.400建议。MHS包含了网络电子邮件的需要,规定了通过网络发送文电所用的服务,为构筑用户接口提供了基础。1988年CCITT又发表了经过修订的MHS建议,该版本对早期版本进行了功能扩充,并使用新的抽象模型来描述服务和协议,从而使MHS与OSI参考模型统一在一起来。MHS(88)是CCITT与ISOR联合版本,ISO称其为面向文电的正文交换系统MOTIS(Message Oriented Text Interchange Systems).
  文电处理系统具有以下几个特点:
  (1)文电以存储--转发的方式进行传输;
  (2)文电的递交和交付可以不同时进行,即发送者可以在适当的时候将文电递交给系统,而接收者也可以在以后的某个时间里接收交付的文电,在此期间文电保存在邮箱中;
  (3)同一份文电可以交付给多个接收者(多地址交付);
  (4)文电的内容形式、编码类型可以由系统自动进行转换,以适应接收终端的要求;
  (5)交付时间的控制可由发送方规定,经过若干时间后系统才可将文电交付给接收方;
  (6)系统可以将文电交付与否的结果通知给发送方。 
  在X.400中定义了MHS模型,这个模型为所有其它的建议提供了一个框架。它定义了三种类型的实体:用户代理UA(User Agent)、文电传输代理MTA(Message Transfer Agent)和温点存储MS(Message Store)。次处还有访问单元AU以及物理投递访问单元PDAU,分别与其它的通信及投递服务接口。
用户代理AU代表用户进行操作,为用户与文电处理系统交换文电起桥梁作用。它直接与用户有关,执行文电准备、整理、回复、检索和转发等功能。
  文电传输代理MTA为文电传输提供存储-转发服务,接受从UA来的文电并把它投递给其它UA。MTA的集合构成文电传输系统MTS。MTA必须为文电进行路径选择和转发,使文电通过一系列MTA经存储转发到达目的地。使用存储转发的方法,消除了对所有的UA和MTA必须连续工作的需要。
  文电存储器MS作为UA和MTA之间的中介体,它是MHS的一个可选功能,其主要功能是存储和检索被投递的文电。MS可以与UA或MTA共存于一个系统中,也可以独立设置。
 3.虚拟终端协议VTP
  鉴于终端标准化工作进展迟缓,ISO提出了虚拟终端的概念。虚拟终端方法就是对终端访问中的公共功能引进一个抽象模型,然后用该模型来定义一组通信服务以支持分布式的终端服务。这就需要在虚拟终端服务与本地终端访问方式之间建立映射,使实终端可在OSI环境中以虚拟终端方式进行通信。ISO将虚拟终端标准列入应用层,归属于特定应用服务元素。
虚拟终端是对各种实终端具有的功能进行一般化、标准化之后得到的通用模型。但由于目前现有的实终端种类太多,具有的功能也不利于终端功能的扩充。
VTP的根本目的是将实终端的特性变换成标准化的形式,即虚拟终端。
VTP有两种模型:非对称模型和对称模型。在非对称模型中,虚拟终端可以看成是实际终端和本地映象功能的结合;在对称模型中,两边都使用了一种代表虚拟终端状态的共享表示单元,这个表示单元可以看做是一种数据结构,两边都可对称地进行读、写。对称模型即允许终端-主机对话,也允许终端-终端及主机-主机间的对话。
 4.其它应用功能
  其它许多应用已经或正在标准化,如:
  (1)目录服务:类似于电子电话本,它提供了在网络上找人或查询的可用服务地址的方法;
  (2)远程作业录入:允许用户将作业提交到另一台计算机去执行;
  (3)图形:具有发送工程图至远地显示、标绘的功能;
  (4)信息通信:用于办公室和家庭的公用信息服务。

目 录 下一页

第3章 计算机网络体系结构及协议

3.6 TCP/TP协议簇
  网络互连是目前网络技术研究的热点之一,并且已经取得了很大的进展.在诸多网络互连协议中,传输控制协议/互连网协议TCP/IP(Transmission Control Protocol/Internet Protocol)是一个使用非常普遍的网络互连标准协议。TCP/IP协议是美国的国防部高级计划研究局DARPA为实现ARPANET(后来发展为Internet)互连网而开发的,也是很多大学及研究所多年的研究及商业化的结果。目前,众多的网络产品厂家都支持TCP/IP协议,TCP/IP已成为一个事实上的工业标准。 
 3.6.1 TCP/IP的体系结构和功能 
  TCP/IP是一组协议的代名词,它还包括许多别的协议,组成了TCP/IP协议簇。一般来说,TCP提供运输层服务,而IP提供网络层服务。TCP/IP的体系结构与ISO的OSI七层参考模型的对应关系如图3.20所示。
  在TCP/IP层次模型中,第二层为TCP/IP的实现基础,其中可包含MILNET,IEEE802.3的CSMA/CD、IEEE802.5的TokenRing。
  在第三层网络中,IP为网际协议(Internet Protocol)、ICMP为网际控制报文协议(Internet Control Message Protocol)、ARP为地址转换协议(Address Resolution Protocol)、RARP为反向地址转换协议(Reverse ARP)。 
  第四层为运输层,TCP为传输控制协议、UDP为用户数据报协议(User Datagram Protocol)。 
  第五-七层中,SMTP为简单邮件传送协议(Simple Mail Transfer Protocol)、DNS为域名服务(Domain Name Service)、FTP为文件传输协议(File Transfer Protocol)、TELNET为远程终端访问协议。
  TCP/IP协议本身的分层模型如图3.21所示。以下各节侧重从体系结构的角度分层介绍TCP/IP的协议组。
 3.6.2 TCP/IP的数据路层
 
  数据链路层不是TCP/IP协议的一部分,但它是TCP/IP赖以存在的各种通信网和TCP/IP之间的接口,这些通信网包括多种广域网如ARPANFT、MILNET和X.25公用数据网,以及各种局域网,如Ethernet、IEEE的各种标准局域网等。IP层提供了专门的功能,解决与各种网络物理地址的转换。
  一般情况下、各物理网络可以使用自己的数据链路层协议和物理层协议,不需要在数据链路层上设置专门的TCP/IP协议。但是,当使用串行线路连接主机与网络,或连接网络与网络时,例如用户使用电话线和MODEM接入或两个相距较远的网络通过数据专线互连时,则需要在数据链路层运行专门的SLIP(serial Line IP)协议的PPP(Point to Point Protocal)协议。 
 1.SLIP协议
  SLIP提供在串行通信线路上封装IP分组的简单方法,用以使用远程用户通过电话线和MODEM能方便地接入TCP/IP网络。
  SLIP是一种简单的组帧方式,使用时还存在一些问题。首先,SLIP不支持在连接过程中的动态IP地址分配,通信双方必须事先告知对方IP地址,这给没有固定IP地址的个人用户上Internet网带来了很大的不便:其次,SLIP帧中无协议类型字段,因此它只能支持IP协议;再有,SLIP帧中列校验字段,因此链路层上无法检测出传输差错,必须由上层实体或具有纠错能力的MODEM来解决传输差错问题。
 2.PPP协议
  为了解决SLIP存在的问题,在串行通信应用中又开发了PPP协议。PPP协议是一种有效的点一点通信协议,它,由串行通信线路上的组帧方式,用于建立、配制、测试和拆除数据链路的链路控制协议LCP及一组用以支持不同网络层协议的网络控制协议NCPs三部分组成。
  由于PPP帧中设置了校验字段,因而PPP在链路层上具有差错检验的功能。PPP中的LCP协议提供了通信双方进行参数协商的手段,并且提供了一组NCPs协议,使得PPP可以支持多种网络层协议,如IP、IPX、OSI等。另外,支持IP的NCP提供了在建立连接时动态分配IP地址的功能,解决了个人用户上Internet网的问题。
 3.6.3 TCP/IP网络层
 
  网络层中含中有四个重要的协议:互连网协议IP、互连网控制报文协议ICMP、地址转换协议ARP和反向地址转换协议RARP。
  网络层的功能主要由IP来提供。除了提供端到端的分组分发功能外,IP还提供了很多扩充功能。例如,为了克服数据链路层对帧大小的限制,网络层提供了数据分块和重组功能,这使得很大的IP数据报能以较小的分组在网上传输。
  网络层的另一个重要服务是在互相独立的局域网上建立互连网络,即网际网。网间的报文来往根据它的目的IP地址通过路由器传到另一网络。
 1.互连网协议IP(Internet Protocol) 
  网络层最重要的协议是IP,它将多个网络联成一个互连网,可以把高层的数据以多个数据报的形式通过互连网分发出去。
  IP的基本任务是通过互连网传送数据报,各个IP数据报之间是相互独立的。主机上的IP层向运输层提供服务。IP从源运输实体取得数据,通过它的数据链路层服务传给目的主机的IP层。IP不保证服务的可靠性,在主机资源不足的情况下,它可能丢弃某些数据报,同时IP也不检查被数据链路层丢弃的报文。
  在传送时,高层协议将数据传IP,IP再将数据封装为互连网数据报,并交给数据链路层协议通过局域网传送。若目的主机直接连在本网中,IP可直接通过网络将数据报传给目的主机;若目的主机在远在网络中,则IP路由器传送数据报,而路由器则依次通过下一网络将数据报传送到目的主机或再下一个路由器。也即一个IP数据报是通过互连网络,从一个IP模块传到另一人个IP模块,直到终点为止。
  需要连接独立管理的网络的路由器,可以选择它所需的任何协议,这样的协议称为内部网间连接器协议IGP(Interior Geteway PROTOCOL)。在IP环境中,一个独立管理的系统称为自治系统。
  跨越不同的管理域的路由器(如从专用网到PDN)所使用的协议,称为外部网间连接器协议EGP(Exterior Gateway Protocol),EGP是一组简单的定义完备的正式协议。
 2.互连网控制报文协议ICMP
  从IP互连网协议的功能,可以知道IP提供的是一种不可靠的无法接报文分组传送服务。若路由器或麻风故障使网络阻塞,就需要通知发送主机采取相应措施。
  为了使互连网能报告差错,或提供有关意外情况的信息,在IP层加入了一类特殊用途的报文机制,即互连网控制报文协议ICMP。
  分组接收方利用ICMP来通知IP模块发送方某些方面所需的修改。ICMP通常是由发现别的站发来的报文有问题的站产生的,例如可由目的主机或中继路由器来发现问题并产生有关的ICMP。如果一个分组不能传送,ICMP便可以被用来警告分组源,说明有网络、主机或端口不可达。ICMP也可以用来报千网络阻塞。ICMP是IP正式协议的一部分,ICMP数据报通过IP送出,因此它在功能上属于网络第三层,但实际上它是像第四层协议一被编码的。
 3.地址转换协议ARP
  在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互连网地址是在国际范围标识主机的一种逻辑地址。为了让报文在物理网上传送,必须知道彼此的物理地址。这样就存在把互连网地址变换为物理地址的地址转换问题。以以太网(Ethernet)环境为例,为了正确地向目的站传送报文,必须把目的站的32位IP地址转换成48位以太网目的地址DA。这就需要在网络层有一组服务将IP地址转换为相应物理网络地址,这组协议即是ARP。
  在进行报文发送时,如果源网络层给的报文只有IP地址,而没有对应的以太网地址,则网络层广播ARP请求以获取目的站信息,而目的站必须回答该ARP请求。这样源站点可以收到以太网48位地址,并将地址放入相应的高速缓存(cache)。下一次源站点对同一目的站点的地址转换可直接引用高速缓存中的地址内容。地址转换协议ARP使主机可以找出同一物理网络中任一个物理主机的物理地址,只需给出目的主机的IP地址即可。这样,网络的物理编址可以对网络层服务透明。
  在互联网环境下,为了将报文送到另一个网络的主机,数据报先定向发送方所在网络IP路由器。因此,发送主机首先必须确定路由器的物理地址,然后依次将数据发往接收端。除基本ARP机制外,有时还需在路由器上设置代理ARP,其目的是由IP路由器代替目的站对发送方ARP请求做出响应。
 4.反向地址转换协议RARP
  反向地址转换协议用于一种特殊情况,如果站点初始化以后,只有自己的物理地址而没有IP地址,则它可以通过RARP协议,发出广播请求,征求自己的IP地址,而RARP服务器则负责回答。这样,无IP地址的站点可以通过RARP协议取得自己的IP地址,这个地址在下一次系统重新开始以前都有效,不用连续广播请求。RARP广泛用于获取无盘工作站的IP地址。
 3.6.4 TCP/IP 的运输层
 
  TCP/IP 在这一层提供了两个主要的协议:传输控制协议(TCP)和用户数据协议(UDP),另外还有一些别的协议,例如用于传送数字化语音的NVP协议。 
 1.传输控制协议 TCP
  TCP提供的是一种可靠的数据流服务。当传送受差错干扰的数据,或基础网络故障,或网络负荷太重而使网际基本传输系统(无连接报文递交系统)不能正常工作时,就需要通过其它协议来保证通信的可靠。TCP就是这样的协议,它对应于OSI模型的运输层,它在IP协议的基础上,提供端到端的面向连接的可靠传输。
  TCP采用“带重传的肯定确认”技术来实现传输的可靠性。简单的“带重传的肯定确认”是指与发送方通信的接收者,每接收一次数据,就送回一个确认报文,发送者对每个发出去的报文都留一份记录,等到收到确认之后再发出下一报文分组。发送者发出一个报文分组时,启动一个计时器,若计时器计数完毕,确认还未到达,则发送者重新送该报文分组。
  简单的确认重传严重浪费带宽,TCP还采用一种称之为“滑动窗口”的流量控制机制来提高网络的吞吐量,窗口的范围决定了发送方发送的但未被接收方确认的数据报的数量。每当接收方正确收到一则报文时,窗口便向前滑动,这种机制使网络中未被确认的数据报数量增加,提高了网络的吞吐量。
  TCP通信建立在面向连接的基础上,实现了一种“虚电路”的概念。双方通信之前,先建立一条连接,然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。TCP连接的建立采用三次握手的过程,整个过程由发送方请求连接、接收方再发送一则关于确认的确认三个过程组成。
 2.用户数据报协议 UDP
 
  用户数据报协议是对IP协议组的扩充,它增加了一种机制,发送方使用这种机制可以区分一台计算机上的多个接收者。每个UDP报文除了包含某用户进程发送数据外,还有报文目的端口的编号和报文源端口的编号,从而使UDP的这种扩充,使得在两个用户进程之间的递送数据报成为可能。
  UDP是依靠IP协议来传送报文的,因而它的服务和IP一样是不可靠的。这种服务不用确认、不对报文排序、也不进行流量控制,UDP报文右能会出现丢失、重复、失序等现象。
 3.6.5 TCP/IP 的会话层至应用层
  TCP/IP的上三层与OSI参考模型有较大区别,也没有非常明确的层次划分。其中FTP、TELNET、SMTP、DNS是几个在各种不同机型上广泛实现的协议,TCP/IP中还定义了许多别的高层协议。
 1.文件传输协议 FTP 
  文件传输协议是网际提供的用于访问远程机器的一个协议,它使用户可以在本地机与远程机之间进行有关文件的操作。FTP工作时建立两条TCP连接,一条用于传送文件,另一条用于传送控制。
  FTP采用客户/服务器模式,它包含客户FTP和服务器FTP。客户FTP启动传送过程,而服务器对其做出应答。客户FTP大多有一个交互式界面,使用权客户可以灵活地向远地传文件或从远地取文件。
 2.远程终端访问 TELNET 
  TELNET的连接是一个TCP连接,用于传送具有TELNET控制信息的数据。它提供了与终端设备或终端进程交互的标准方法,支持终端到终端的连接及进程到进程分布式计算的通信。
 3.域名服务 DNS 
  DNS是一个域名服务的协议,提供域名到IP地址的转换,允许对域名资源进行分散管理。DNS最初设计的目的是使邮件发送方知道邮件接收主机及邮件发送主机的IP地址,后来发展成为右服务于其它许多目标的协议。
 4.简单邮件传送协议 SMTP
 
  互连网标准中的电子邮件是一个单间的基于文件的协议,用于可靠、有效的数据传输。SMTP作为应用层的服务,并不关心它下面采用的是何种传输服务,它可能过网络在TCP连接上传送邮件,或者简单地在同一机器的进程之间通过进程通信的通道来传送邮件。这样,邮件传输就独立于传输子系统,可在TCP/IP环境、OSI运输层或X.25协议环境中传输邮件。
  邮件发送之前必须协商好发送者、接收者。SMTP服务进程同意为基本个接收方发送邮件时,它将邮件直接交给接收方用户或将邮件逐个经过网络连接器,直到邮件交给接收方用户。在邮件传输过程中,所经过的路由被记录下来。这样,当邮件不能正常传输时可按原路由找到发送者。
  在当前的UNIX版本中,已将TCP/IP协议融入其中,使之成为UNIX操作系统的一个部分。DOS上也推出了相应的TCP/IP软件产品。SUN公司则将TCP/IP广泛推向商务系统,它在所在的工作站系统中都预先安装了TCP/IP网络软件及网络硬件,使网络和计算机成为一体,同时也使TCP/IP网络软件及其客户/服务器的工作方式 为广大用户所接受。
 
作业三:

目 录 下一页



 

你可能感兴趣的:(学习)