计算机网络原理与应用(第2版)
上QQ阅读APP看书,第一时间看更新

2.1 网络体系结构概述

网络及网络通信都很复杂,为了能够使分布在不同地理位置且功能相对独立的计算机之间组成网络,并实现网络通信和资源共享,计算机网络系统需要涉及和解决许多复杂的问题,包括信号传输、差错控制、寻址、数据交换和提供用户接口等。计算机网络体系结构就是为简化这些问题的研究、设计与实现而抽象出来的一种结构模型,其目的是划分网络系统的基本组成,说明各组成部分实现的功能,以及各组成部分之间如何相互作用并最终实现通信的。网络体系结构通常采用层次化结构定义计算机网络的协议、功能和提供的服务。

2.1.1 分层结构的意义

1.分层的作用

计算机网络的基本设计思想是把一个复杂的网络问题分解成若干个子问题,每一个子问题分别由相应的功能模块来解决与实现。这种分而治之的层次化设计方法实际上在很多领域都有应用,如程序设计、邮政系统、银行系统和物流系统等。为了更形象地理解分层,以一个邮政系统的实现过程为例加以说明。

回顾日常生活中物品或信件的邮寄过程,对于邮寄人来说,只需填好表单并支付邮资即可,具体的邮递过程可放心交由邮政系统来处理。假设北京的某客户要寄信给上海的某个客户,整个信件的邮递过程大致分成几个步骤,每一个步骤对应于图2.1中的一个层次,每个层次完成一项主要工作。

图2.1 信件邮递的分层流程

寄信方的主要工作如下。

①客户按双方都理解的语言、格式等写好信,按邮局要求将信装入信封后投寄到当地分局的信箱或邮筒。

②北京总局收集各分局的邮件,按相应的规则如地址、邮寄类别等对邮件进行分类整理,形成不同的分类包裹。

③北京总局将处理后的分类包裹交给运输部门运往各地。

收信方的主要工作如下。

①上海总局从运输部门统一接收其他各地运往本地的各种分类包裹。

②上海总局将收到的各类邮包拆开分拣,将信件分别送到当地各分局的邮箱或邮筒。

③客户从当地各分局的邮箱或邮筒中取信件。

可以从以下两个方面分析层次结构的特点。

1)各个层次的纵向关系(本方各层次间的关系)

①作为寄信人和收信人,两个客户不需要关心邮件的邮递过程细节,如信件是由哪个邮递员收集、通过哪种交通工具运输、走什么样的路线、经过什么样的城市中转等。类似地,第二层双方邮局对邮件的分拣也不用了解该层以下货物的运输调度等工作细节,即纵向关系的特点是下层能够对上层隐藏一些工作细节。

②对于第二层的邮局,其工作基础就是信封,按照信封上的邮寄地址、信件的种类、服务方式进行分拣和包装。信封所携带的信息就是连接第一层和第二层的接口。由此得出结论,层次模型的上、下层应定义接口,以实现相对独立的工作衔接。

③如果最底层运输部门的工作发生了些许变化,如交通工具出现故障等,这些变化并不影响其他层工作的正常运行,只不过可能会影响其他层的工作进度。由此得层次结构的另一特点就是,当某一层的功能发生改变时,只要上下层的接口不变,便不会影响其他层的正常工作。

2)各个层次的横向关系(双方相同层次之间的关系)

首先分析图2.1中最上层寄信人和收信人的关系。无论邮件封入哪个包裹、由哪种交通工具走哪条路线到达目的地,也只有收件人才能打开、阅读并理解信件的内容。寄信人用什么语言、文体、格式来写信,收信方是否回信、什么时间回、回信的方式等是他们两人之间的事情,由他们的关系来决定。这种关系决定了双方在寄信这件事上的操作规程,直接决定了他们寄信和收信的操作。类似地,发货层和收货层、寄信方和收信方都按照一定的调度规则发货和收货,他们的关系是建立在对货物如何运输的共识之上的。由此得出结论:不同系统相同层间相互遵循一定的约定,这一约定直接影响两层实体间的操作规范。

以上邮递系统层次结构中得出的某些结论同样也适用于描述网络层次结构。

层次结构方法的优点如下。

①独立性强。层间耦合程度低,上层只需了解下层能通过层间接口提供什么服务。

②适应性强。只要服务和接口不变,每层的实现方法可任意改变。

③易于实现和维护。把复杂的系统分解成若干个涉及范围小、功能简单的子单元,使系统的结构清晰,实现、调试和维护变得简单和容易,这样设计人员能专心设计和开发所关心的功能模块。

2.网络体系结构及相关概念

网络体系结构(Network Architecture, NA)是计算机网络的分层、各层协议、功能和层间接口的集合。不同的计算机网络具有不同的体系结构,其层的数量、各层的名称、内容和功能以及各相邻层之间的接口也不一样。但在任何网络中,每一层都是为了向其相邻上层提供服务而设置的,而且每一层都对上层屏蔽如何实现协议的具体细节。

网络体系结构与具体的物理实现无关。网络体系结构只精确定义了计算机网络中的逻辑构成及所完成的功能,实际上是一组设计原则。网络体系结构是一个抽象的概念,对这些功能是由何种硬件和软件实现并未加以说明。因此网络体系结构和网络的实现是两回事,前者是抽象的,仅告诉网络设计者应“做什么”,而不是“怎么做”;后者是具体的,是需要硬件和软件来完成的。

在计算机环境里,两个端点的两个进程之间的通信过程类似于信件的投递过程。

网络的层次结构方法要解决的问题如下。

①网络应该具有哪些层次?每一层的功能是什么?(分层与功能)

②各层之间的关系是怎样的?它们如何进行交互?(服务与接口)

③通信双方的数据传输要遵循哪些规则?(协议)

为了降低计算机网络设计的复杂程度,把计算机网络的功能分成若干层,规定每一层所必须完成的功能,并对其上层提供支持;每一层建立在其下层之上,即一层功能的实现以其下层提供的服务为基础。整个层次结构中各个层次相互独立,每一层的实现细节对其上层是完全屏蔽的,每一层可以通过层间接口调用其下层的服务,而不需要了解下层服务是怎样实现的。

同一系统体系结构中的各个相邻层间的关系是:下层为上层提供服务,上层利用下层提供的服务完成本层的功能,同时向更上层提供服务。上层可看作是下层的用户,下层是上层的服务提供者。系统的顶层执行用户要求做的工作,直接面向用户,可以是用户编写的程序或发出的命令。除顶层外,各层都能支持其上一层的实体进行工作,这就是服务。系统的底层直接与物理介质接触,通过物理介质来实现不同系统、不同进程间的沟通。

系统的各个层次内都存在一些实体(Entity),实体是指任何能发送或接收信息的东西,可以是硬件、软件进程或一个应用程序等,如图2.2所示。不同系统的相同层次称为对等(Peer to Peer)层(或同等层)。位于不同系统对等层上的实体叫对等实体。通信只在对等层间进行,非对等层之间不能互相“通信”,对等层间的通信是间接的、逻辑的、虚拟的,实际的物理通信只在最底层完成。对等层间的通信应遵守的规则就是对等层协议,简称协议(Protocol),如第N层协议。在网络协议的作用下,两个对等层实体间的通信使得本层能够向它相邻的上一层提供支持,以便上一层完成自己的功能,这种支持就是服务。同一系统的相邻层之间都有一个接口(Interface),接口定义了下层向上层提供的操作和服务。同一系统的相邻两层实体交换信息的地方称为服务访问点(Service Access Point, SAP),它是相邻两层实体的逻辑接口,即N层SAP就是N+1层可以访问N层的地方。每个SAP都有一个唯一的地址,用于服务用户间建立连接。相邻层之间要交换信息,对接口必须有一个一致遵守的规则或约定及接口协议。从一个层过渡到相邻层所做的工作就是处理两层之间的接口问题,在任何两相邻层间都存在接口问题。

图2.2 层次结构及相关概念

从通信角度看,各层所提供的服务有两种形式,即无连接的服务和面向连接的服务。这里所说的“连接”是指在同等层的两个同等实体间所设定的逻辑通路。面向连接的服务是指在数据交换前必须先建立连接,数据交换结束后再拆除,这种服务是可靠的。无连接的服务是指两实体间通信不需要先建立一个连接,通信所需资源也无须事先预留,而是在数据传输时动态分配。无连接的服务不能防止信息的丢失、重复或乱序,这种服务是不可靠的,但灵活方便、速度快。

总之,在网络体系结构中,服务、功能和协议是完全不同的概念。服务是某层次对上一层的支持,属于外观的表象;功能是本层内部的活动,是为了实现对外服务应从事的工作;协议相当于一种工具,层次“内部”的功能和“对外”的服务都是在本层“协议”的支持下完成的。协议定义了网络实体间发送和接收报文的格式、顺序以及当传送和接收消息时应采取的行动(三要素,即语义、语法和时序)。网络中低层通过服务访问点向相邻高层提供服务,而高层则通过原语或过程调用低层的服务。

2.1.2 开放系统互联参考模型

网络体系结构的出现以及这种结构的参考模型的制定,使计算机网络的发展进入高级阶段,大大加速了网络发展的步伐。1974年,IBM率先发布了它的网络体系结构(System Network Architecture, SNA),随后又相继出现了10多种分层网络体系结构,如数字网络体系结构(DNA)、分布式计算机体系结构(DCA)、传输控制协议/网际协议(TCP/IP)等。而这些网络体系结构所构成的网络是不能互联互通的。为了促进多厂家的国际合作,以及使网络体系结构标准化,1997年ISO专门成立了一个分委员会SC16来开发一个异种计算机系统互联网络的国际标准。一年多过后,SC16基本完成了任务,开发了一个“开放系统互联参考模型”(The Reference Model of Open Systems Interconnection, OSI/RM)。1979年年底,SC16的上级技术委员会TC97对该模型进行了修改。1983年,OSI参考模型正式得到了ISO和CCITT的批准,并分别以ISO 7498和X.200文件公布。“开放系统互联”的含义是任何两个遵守OSI标准研制的系统是相互开放的,可以进行互联。现在,OSI标准已被广泛接受,成为指导网络发展方向的标准。含有通信子网的OSI参考模型如图2.3所示。

图2.3 OSI参考模型

OSI作为计算机网络体系结构模型和开发协议标准的框架,将计算机网络分为7层,自下而上分别为物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)和应用层(Application Layer)。事实上,OSI模型仅仅给出了一个概念框架,它指出实现两个“开放系统”之间的通信包括哪些任务(功能)、由哪些协议来控制,而不是对具体实现的规定。网络开发者可以自行决定采用硬件或软件来实现这些协议功能。

2.1.3 数据封装与解封装

回顾信件的邮递过程,在寄信方,寄信人将写好的信装入信封,填写完收件人、寄件人地址和姓名后,将信封投入邮箱或邮筒;邮递员负责信的收集并将其交到邮局;邮局把信件分类整理后形成包裹,交给运输部门;运输部门再对这些包裹进行整合,形成更大的包裹直接运输。在收信方,由运输部门把包裹送到邮局,邮局对包裹内邮件进行分拣后交由邮递员分送到收件人手中。同地纵向层次间以特定的接口传递邮件,异地相同层次间以特定的规范交换信息。

网络中传输的数据类似于信件,数据在网络系统结构的层次模型中传输的过程类似于信件的传输过程。如图2.4所示,两个计算机系统彼此通信实现某种应用,两系统应用进程间相互交换的数据称为消息,消息可以是一个文件、一串字符、一行命令等。对于应用进程来说,只要所需传递的消息能从一端成功到达另一端就意味着应用活动能正常运行,至于消息是如何在网络中传输等底部细节,应用进程不必考虑,这些工作分别由其他不同层次负责处理。下面以图2.4为例进一步说明消息在两系统间的传递过程。

图2.4 OSI的数据流动过程

如图2.4所示,发送端应用进程将用户数据通过应用层向下传递,每到一层系统都会为数据添加相应的首部信息和尾部信息,通常将尾部信息也统称为首部(Header)。这些首部信息包含了实现这一层功能所需的必要信息,如控制信息、说明信息、地址信息、差错校验码等。这种在数据前添加首部信息的过程叫封装,封装了某层首部信息后形成的数据叫作该层的协议数据单元(Protocol Data Unit, PDU)。传输层及以下各层的PDU还有各自特定的名称,传输层的PDU称为段(Segment);网络层的PDU又叫分组/包(Packet);数据链路层的PDU又叫帧(Frame),物理层的PDU为比特(bit)。每层的协议数据单元又作为其下层的数据部分由下层接收并封装。这样自上而下逐层封装,最后数据以比特流的形式从物理层发出。接收端从物理层接收到比特流向上逐层传递,每一层都从由下层传来的数据上取出属于本层的首部信息,数据部分继续向上层提交。这种从由下层传来的数据上取出属于本层的首部信息的过程叫解封装。这样自下而上逐层解封装并向上层提交,直到用户数据还原由接收端的应用进程接收。

虽然应用进程的数据要经过图2.4所示过程才能送到对方进程,但这些传输对于用户来说是感觉不到的,就像应用进程间直接传递数据一样。这样在逻辑上形成了介于源进程和目的进程间的虚拟通信路径或逻辑信道,同样地,其他层对等实体间的通信也是这样。总之,对等实体间实现的是虚拟的逻辑上的通信,而实际的通信是在最底层完成的。