带你读《计算机网络原理》之二:网络体系结构-阿里云开发者社区

开发者社区> 华章出版社> 正文

带你读《计算机网络原理》之二:网络体系结构

简介: 本书以层次化的网络体系结构为线索,针对通信子网功能详细地介绍了计算机网络的基本概念及数据通信的基本原理。

点击查看第一章
点击查看第三章

第2章 网络体系结构

2.1 概述

计算机网络是一个非常复杂的巨系统。为了说明这一点,可以设想一个最简单的网络应用:利用连接在网络上的两台计算机进行文件传送。显然,在这两台计算机之间必须有一条传送数据的通路,但这还远远不够,至少还有以下几项工作需要完成。
1)发起通信的计算机必须将数据通信的通路进行激活(activate)。所谓“激活“就是要发出一系列控制命令,保证要传送的数据能在这条通路上正确发送和接收。
2)告诉网络如何识别要接收数据的计算机。
3)发起通信的计算机必须检测接收计算机是否已准备好接收数据。
4)发起通信的计算机必须弄清楚,接收计算机的文件管理程序是否已做好文件接收和文件存储的准备工作。
5)若通信双方的计算机文件格式不兼容,则至少其中一方应完成格式转换。
6)对出现的各种差错和意外事故,如数据传送错误、重复或丢失,网络中某个节点的交换机出现故障等,应当有可靠的措施保证接收计算机最终能够收到正确的文件。
除此之外,还可以列举出其他要做的工作。由此可见,相互通信的两个计算机系统必须高度协调才能完成最终的网络应用,而这种“协调“多数情况下是相当复杂的。为了设计这种复杂的计算机网络,早在最初的ARPANET设计时就提出了分层的方法。“分层“可将庞大而复杂的问题转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
1974年,美国的IBM公司宣布了它研制的系统网络体系结构(System Network Architecture,SNA),它就是按照分层的方法制定的。之后IBM公司对SNA又不断改进,更新了几个版本。紧随IBM公司之后,其他一些公司也相继推出了自己的网络体系结构,并都采用不同的名称。
网络体系结构出现后,使得同一公司所生产的各种设备都能够很容易地互连成网。这种情况显然有利于一家公司垄断自己的产品。用户一旦购买了某个公司的网络,当需要扩大容量或升级改造时,就只能再购买该公司的网络产品。如果此时用户购买了其他公司的网络产品,那么由于网络体系结构的不同,相互之间就很难连通。
然而,全球经济的发展使得不同网络体系结构的用户迫切要求能够互相交换信息,为此,国际标准化组织于1977年成立了专门的机构研究这个问题。不久,他们就提出一个试图使各种计算机在世界范围内互连成网的标准框架,即著名的开放系统互连参考模型(Open Systems Interconnection Reference Model,OSI/RM)。这里的“开放“是指:只要遵循OSI标准,一个系统就可以与位于世界上任意地方的、同样遵循这一标准的其他任何系统进行通信。这一点很像世界范围的电话和邮政系统,而这两个系统都是开放系统。
OSI/RM试图达到一种理想境界,即全世界的计算机网络都遵循这个统一的标准,因而全世界的计算机都能够方便地进行互连和交换数据。在20世纪80年代,许多大公司甚至一些国家的政府机构都纷纷表示支持OSI。当时看来似乎在不久的将来全世界一定都会按照OSI制定的标准来构造自己的计算机网络。然而,到了20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来了,但由于因特网已抢先在全世界覆盖了相当大的范围,与此同时也几乎找不到有什么厂家生产出符合OSI标准的商用产品。因此人们得出这样的结论:OSI只获得了一些理论研究的成果,但在市场化方面则事与愿违地失败了。现今规模最大的、覆盖全世界的因特网并未使用OSI标准。OSI失败的原因可归纳为如下几个方面。
1)OSI专家们缺乏实际经验,他们在制定OSI标准时没有商业驱动力。
2)OSI协议实现起来过分复杂,而且运行效率很低。
3)OSI标准的制定周期太长,因而使得按OSI标准生产的设备无法及时进入市场。
4)OSI层次划分不太合理,有些功能在多个层次中重复出现。
按照一般的概念,网络技术和设备只有符合有关的国际标准,才能在大范围内获得工程上的应用。但现实情况却相反,得到最广泛应用的不是法律上的国际标准OSI,而是非国际标准TCP/IP。这样,TCP/IP就常被称为事实上的国际标准。从这种意义上说,能够占领市场的就是标准。在过去制定标准的组织中往往以专家、学者为主。但现在许多高新技术公司都纷纷挤进各种各样的标准化组织,使得技术标准具有浓厚的商业气息。一个新标准的出现,有时不一定反映出其技术水平是最先进的,而是往往说明它有着一定的市场背景。

2.2 网络分层

2.2.1 分层思想

为了降低计算机网络设计的复杂性,大多数网络都采用分层(layer)或分级(level)的方式来组织,每一层都建立在它的下层之上。不同的网络,尽管其层次的数量、各层的名称、内容和功能都不尽相同,然而所有的层次网络都有一个共同点,即每一层的目的都是向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。这就是计算机网络的分层思想,即从垂直视图看待计算机网络。
为了加深读者对分层思想的理解,下面通过一个现实生活中的例子来进行说明。
如图2-1所示,假设有两位哲学家(对应于第3层中的对等实体)希望对话,其中一位说德语,而另一位讲汉语。由于没有共同的语言,两人都选择了翻译(对应于第2层中的对等实体)。每个翻译又进一步和秘书联络(对应于第1层中的对等实体)。如果哲学家1希望向哲学家2表达某一哲学话题,那么他首先会通过第2层与第3层之间的接口用德语将这一信息传给他的翻译。两位翻译预先确定好一种双方都能够理解的中立语言,如英语,则哲学家1的哲学话题被翻译成英文。应该说,选择哪一种中立语言是第2层协议的内容,使用什么样的语言取决于第2层的对等实体。接下来,翻译将译好的信息交付给秘书,让秘书传送出去,至于采用哪种传送方式(如电话、传真、电子邮件等)则完全是第1层内部关注的事情。当信息到达的时候,先由秘书递交给翻译,通过翻译后的信息再通过2/3层间接口递交给哲学家2。
分层思想对于计算机网络的设计和实现有着极大的优势,主要表现在如下几个方面。
1)各层之间相互独立。一个层次并不需要知道它的下一层是如何实现的,而只需要知道该层通过层间的接口所提供的服务即可。由于每一层只实现一种相对独立的功能,因此可将一个难以处理的复杂问题分解为若干个容易处理的较小问题。这样,整个问题的复杂度就下降了。
2)灵活性好。当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则位于其上的各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,甚至可以将这一层次取消。
3)结构上可分割。各层都可以采用最合适本层的技术方案来实现。
4)易于实现和维护。层次结构使得实现和调试一个庞大而又复杂的系统变得容易,因为整个系统已被分解为若干个相对独立的子系统。
5)能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。
image.png
图2-2说明了一个划分成3层网络的通信过程。不同机器里处于同一层次的实体叫作对等实体(peer entities),对等实体利用协议进行通信。

image.png

实际上,数据不是从一台机器的第n层直接传送到另一台机器的第n层,而是每一层都把它的数据和控制信息交付给它的相邻下一层,如此重复,直到最底层。第1层之下是物理媒介(physical medium),它执行的是真正的物理通信,即信号传输。图2-2中所示的对等实体之间的通信都是虚拟通信。
每一对相邻层之间都有一个接口。接口用于定义下层向上层提供的原语操作和服务。当网络设计者在决定一个网络应包括多少层、每一层应当做什么的时候,其中一个很重要的考虑就是要在相邻层之间定义一个清晰的接口。除了尽可能地减少必须在相邻层之间传递的信息的数量外,一个清晰的接口还可以使同一层能轻易地用一种新的实现来替换现有旧的实现(如用卫星信道来代替有线电话线),只要新的实现能向上层继续提供旧的实现所提供的同一组服务即可。
为了完成计算机之间的通信合作,应把各个计算机互连的功能划分成定义明确的层次,并规定对等实体进行通信的协议。这些层与协议的集合称为网络体系结构(network architecture)。网络体系结构的描述必须包含足够的信息,让实现者可以用来为每一层编写程序和设计硬件,并使之符合有关协议。协议实现的细节和接口的描述都不是体系结构的内容,因为它们都隐藏在机器内部,对外部来说是不可见的。任何一个网络系统都能够提供多种通信功能,有些功能比较复杂,可能需要多个协议协同支持才能实现,这些为实现某一特定功能的相关协议集合被称为协议栈(protocol stack)。网络体系结构、协议栈和协议是本章和本书的主题,读者只有牢牢把握这一主题,才能够深入、准确地理解和掌握计算机网络的工作原理。

2.2.2 层次设计主题

尽管计算机网络的不同层次提供各自独立的服务,但一些关键主题可能在多个层次设计中都会出现。下面简要介绍其中比较重要的几个主题。
1.编址机制(addressing)
每一层次都需要有一种机制来识别发送方和接收方。网络中通常有很多计算机,而且在这些计算机上又运行着多个进程。因此,需要有一种方法使得一台机器上的进程可以指定它要通信的目标对象,但因为存在多个通信对象,所以自然地就需要有某种编址机制来指定特定的通信目标对象。
2.数据传输(data transferring)
第二个设计主题与数据传输的控制规则有关。在某些系统中,数据仅在一个方向上传输,即单工通信(simplex communication);而在另一些系统中,数据能在任意一个方向上传输,但不是同时传输,即半双工通信(half-duplex communication);还有一些系统,数据能同时双向传输,即全双工通信(full-duplex communication)。此外,协议还需要确定每条连接对应多少条逻辑通道、它们的优先级别如何。在很多网络中,每个连接至少需要提供两条逻辑通道,一条给正常数据,另一条留给紧急数据。
3.差错控制(error controlling)
物理通信电路并非完美无缺,所以差错控制也是一个重要的主题。已知的检错和纠错代码有多种,连接的双方必须一致同意使用哪一种。另外,接收方还应该通知发送方哪些报文已经被正确地收到了、哪些还没有收到。
4.顺序控制(sequence controlling)
计算机网络采用的是存储转发交换技术,该技术并不能保证报文发送的先后顺序。为了解决可能出现的传输顺序错误问题,协议必须明确保证接收方能够把各接收报文按原来的发送顺序重新组合在一起。一个易于想到的直观方法就是对这些报文进行编号,不过,该方法只能检测传输过程中的顺序错误,并没有提供如何解决该错误的具体措施。
5.流量控制(flow controlling)
如何避免出现高速发送方发送数据过快,致使低速接收方难以应付的这一问题在多个层次都存在。为此,人们提出了各种流量控制方案,这些方案的工作机制将在本书的后续章节中详细讨论。一些方案要求接收方向发送方直接或间接地反馈接收方的当前状态;另一些方案则是直接限制发送方以商定的速率发送数据。
6.拥塞控制(congest controlling)
网络吞吐量与通信子网负荷有着密切的关系。当通信子网负荷比较小时,网络吞吐量随网络负荷的增加而线性增加。当网络负荷增加到某一值后,若网络吞吐量开始下降,则表明网络中出现了拥塞现象。当拥塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于无谓的重传,从而使通信子网的有效吞吐量下降。严重情况下,通信子网的局部甚至全部处于死锁状态,导致网络吞吐量接近为零。为了避免出现拥塞或降低拥塞造成的性能影响,需要实施拥塞控制,即对进入通信子网的网络负荷执行一定的准入策略,从而保证网络负荷不会超过通信子网的承载能力。
7.拆分与重组(disassembling and reassembling)
由于计算机网络层次工作的独立性,各层次实体都设置有自己的最大接收报文长度限制,如果上层实体要求传输的报文长度超过下层实体的最大允许报文长度,则必须要求网络层次能够提供报文拆分、传输和重新组装的能力。与之相关的另一个议题是:当上层实体要传输的报文太小时,下层实体直接发送会导致传输效率过低。一种可行的解决方案是把几个传向同一目标的小报文合并成一个大报文,然后在接收方再分解为原始的发送报文。
8.复用与解复用(multiplexing and demultiplexing)
为每一对通信实体建立一个独立的连接,有时候会很不方便,或者非常昂贵。这时,可以利用下一层的同一连接为多个不相干的会话提供传输服务。只要这种多路复用和解多路复用是透明的,任意层次都可以采用这种方法。比如,多路复用技术在物理层上是必需的,因为针对所有应用会话连接的通信量只需在有限的几条物理线路上传送即可。
9.路由(routing)
当源端与目标端之间存在多条路径时,必须进行路由选择。路由选择在有些时候需要由两层或多层共同决定。例如,为了从伦敦发送数据到罗马,上层可能需要根据有关法律或外交策略,决定经过法国还是德国;然后,在低层可能还需要根据当前的流量负载决定其中一条最优的电路,这个主题就是路由。

2.2.3 实体和协议

网络体系结构定义的实体(entity)是指层中的活动元素,它可以是软件(如进程),也可以是硬件(如网卡、智能输入/输出芯片),不同网络层次中的实体实现的功能互不相同。为表述方便,我们将网络层次的第n层表示为(n);相应地,处于第n层的实体表示为(n)实体。发送端与接收端处于同一层次的实体称为对等实体。
在概念上可以认为数据在同一层次的对等实体之间进行虚拟传输或者逻辑传输,如图2-2中的虚线所示。之所以称为虚拟传输,是因为对等实体之间的数据传输实际上必须要经过底层的物理传输才能完成。尽管如此,对等实体之间的通信协议必须存在,如两者之间必须约定什么样的代码表示连接请求、什么样的代码表示连接响应等,以便在通信过程中能够对接收到的数据执行正确的操作。
计算机网络的对等实体要想做到有条不紊地交换数据,必须遵守一些预先约定好的规则,这些规则明确定义了所交换数据的格式、含义以及有关的同步问题。这里所描述的同步不是狭隘的(即信号同频或同频同相),而是广义的,即在满足一定条件下应当发生的特定事件(如在可靠性数据传输中,接收到一个数据后应该发送一个应答信息),因此同步含有时序的意义。这些为网络执行数据交换而建立的规则、标准或约定就是网络协议。典型的网络协议包含以下3个方面的要素。

  • 语法:语法用来规定由协议的控制信息和传送的数据所组成的传输信息应遵循的格式,即传输信息的数据结构形式,以便通信双方能正确地识别所传送的各种信息。
  • 语义:语义是指对构成协议的各个协议元素的含义的解释。不同的协议元素规定了通信双方所要表达的不同含义,如帧的起始定界符、传输的源地址和目的地址、帧校验序列等。有的协议元素还可以用来规定通信双方应该完成的操作,如在什么条件下信息必须应答或重发等。
  • 同步:它规定实体之间通信操作执行的顺序,协调双方的操作,使两个实体之间有序地进行合作,共同完成数据传输任务。例如在双方通信时,首先由源端发送一份数据报文,若目的端接收的报文无差错,就向源端发送一个正向应答报文,通知源端它已经正确地接收到源端所发送的报文;若目的端发现传输中出现差错,就发送一个负向应答报文,要求源端重发原报文。这里的同步并不是指双方同时执行同样的操作。

根据网络分层结构,可以把网络上的数据传输看成是各层对等实体之间在协议控制下的数据交换,所交换的数据块称为协议数据单元(Protocol Data Unit,PDU)。PDU由两部分组成:本层的协议控制信息和用户数据。而本层的用户数据又是上层的PDU,如此便形成了层间协议数据单元的嵌套封装关系。

2.2.4 接口和服务

在计算机网络分层结构中,每一层次的功能都是为它的上一层提供服务的。(n)实体实现的服务为(n+1)实体所利用,在这种情况下,(n)层被称为服务提供者(service provider),(n+1)层则被称为服务用户(service user);与此同时,(n)层又利用(n-1)层的服务来实现自己向(n+1)层提供的服务,该服务可以包含多种类型,如快速昂贵通信服务或慢速低廉服务等。基于上述服务使用关系,我们可以对服务提供者和服务用户进行延伸,对于(n)层提供的服务,(n+1)层及其之上的所有层次,如(n+?2)层、(n+?3)层等都是(n)层的服务用户,但(n+1)层是直接用户,位于其上的各层则是间接用户;同理,(n)层及其之下的所有层次,如(n-1)层、(n-?2)层等都是(n)层的服务提供者,但(n)层是直接提供者,位于其下的各层则是间接提供者。
图2-3给出了层间接口与数据单元的关系。服务是在服务访问点(Service Access Point,SAP)提供给上层使用的。(n)层SAP就是(n+1)层可以访问(n)层服务的地方,每个SAP都有一个唯一标明自己身份的地址。例如,若把电话系统中的SAP看成标准电话机的物理连接口,则SAP地址就是这些物理连接口的电话号码。用户要想和他人通电话,必须预先知道他的SAP地址(即电话号码)。
image.png
接口是分隔相邻层次的界面,与协议通信相类似,如果上下相邻网络层次之间要交换数据,必须对其间的接口制定一致的规则。在典型的接口上,(n+1)实体通过SAP把一个接口数据单元(Interface Data Unit,IDU)传递给(n)实体。IDU由服务数据单元(Service Data Unit,SDU)和一些控制信息组成,其中的SDU是那些将要通过网络传输给对等实体,然后再向上递交给(n+1)层的信息,而控制信息则用于帮助下一层完成通信服务,它本身不是对等通信的数据部分。为了能够在不同的网络环境下传递SDU,(n)实体可能需要将SDU拆封成多个段,每一段加上一个包头后作为独立的协议数据单元送出。

2.2.5 数据单元

在计算机网络层次体系结构中,对等实体间按照协议进行通信,相邻层次实体间按照服务进行通信,这些通信都是按数据单元进行的。OSI体系结构对采用的数据单元类型做了规定,但对具体的长度、格式则没有限制。
(1)数据单元定义

  • (n)协议控制信息:(n)实体为了协调其共同操作使用(n-1)连接而交换的信息,用(n) PCI(Protocol Control Information)表示。
  • (n)用户数据:以(n+1)实体的名义在(n)实体之间传送的数据。(n)实体为用户数据的传送提供服务,用(n) UD(User Data)表示。
  • (n)协议数据单元:在一个(n)协议中规定的数据单元。它由(n)协议控制信息和可能的(n)用户数据组成,用(n) PDU表示。
  • (n)接口控制信息:在(n+1)实体和(n)实体之间为协调其共同操作而传送的信息,用(n) ICI(Interface Control Information)表示。
  • (n)接口数据:在(n)连接上,为了传送一个通信(n+1)实体而从(n+1)实体递交给(n)实体的信息。反之,在(n)连接上,收到通信(n+1)实体的信息后从(n)实体递交给(n+1)实体的信息,用(n) ID(Interface Data)表示。
  • (n)接口数据单元:在(n+1)实体和(n)实体之间,在一次交互作用中穿过服务访问点传输的信息单元。每个(n)接口数据单元包含(n)接口控制信息,也可能包含一个(n)服务数据单元的全部或部分,用(n) IDU表示。
  • (n)服务数据单元:(n)接口数据的总额,当从(n)连接的一端传送到另一端时,它的内容始终受到保护,用(n) SDU表示。

表2-1给出了上述定义的数据单元之间的关系。
image.png
(2)服务数据单元
在(n)连接上把信息从一个(n+1)实体传送给对等(n+1)实体,首先需要把发送端(n+1)实体的信息递交给(n)实体,经过(n)连接的网络传输后,接收端的(n)实体将接收到的信息递交给(n+1)实体,发送和接收的信息在连接的两端应该保持一致,这组信息称为(n)服务数据单元,用(n) SDU来表示,如图2-4所示。
image.png
(3)协议数据单元
为(n+1)实体提供服务的(n)实体,必须建立(n-1)连接,以及在该对等实体间为(n+1)实体提供该(n)服务而进行联合操作(即合作)。在(n-1)连接上须交换合作所需要的信息。为协调对等(n)实体之间的联合操作,在对等(n)实体之间的信息称为(n)协议控制信息,记为(n) PCI。显然,(n) PCI的语法、语义以及时序是在(n)协议中规定的。
(n)实体之间为(n+1)实体提供(n)服务而传送的数据称为(n)用户数据。一个(n)用户数据可以一次传送给(n)实体,此时一个(n)用户数据相当于一个(n) SDU;一个(n)用户数据也可以多次经接口传送给(n)实体,此时一个(n)用户数据对应于多个(n) SDU。
由(n)协议控制信息和可能有的(n)用户数据组成的单元称为(n)协议数据单元,表示成(n) PDU。
在(n)实体间交换(n) PDU是通过(n-1)连接使用(n-1)服务来实现的。使用(n-1)服务必须传送(n-1) SDU,因此,要将(n) PDU变换为(n-1) SDU,这是发送端的功能;在接收端,必须把(n-1) SDU变换为(n) PDU。(n) PDU与(n-1) SDU之间的变换可以是一对一变换,或者多对一变换。(n) PDU的传送如图2-4所示。
(4)接口数据单元
在(n+1)实体与(n)实体之间交换(n) SDU,是通过请求(n)实体在(n)连接上使用(n) SDU的(n)服务实现的。从(n+1)实体向(n)实体或从(n)实体向(n+1)实体传送,都必须通过(n)服务访问点。(n+1)实体传送给(n)实体的数据,或在(n)连接的另一端,从(n)实体向(n+1)实体传送的数据称为(n)接口数据。为了协调(n+1)实体和连接的(n)实体间的联合操作(合作),在两者之间传送的信息称为接口控制信息,记为(n) ICI,一次穿越(n) SAP传送的(n) ICI和(n) ID的组合称为(n)接口数据单元,表示成(n) IDU。
一个(n)接口数据可以是一个(n) SDU,也可以是部分(n) SDU,或者一个(n) SDU可以分为一个或多个(n)接口数据单元。也可以说,(n+1)实体和(n)实体之间交换(n) SDU,是通过一次或多次交互传送(n)接口数据单元实现的。多次交互传送过程如图2-5所示。

2.2.6 面向连接服务和无连接服务

从数据通信的关联角度看,(n)层向(n+1)层提供的服务可以分为两大类别,即面向连接服务(connection-oriented service)和无连接服务(connectionless service)。下面分别介绍各自的特点。
image.png
(1)面向连接服务
所谓连接,就是两个对等实体为实现数据通信而进行的一种关联协商,关联协商包含的内容可以复杂,如数据安全;也可以简单,如数据顺序。面向连接服务是在数据传输之前必须先建立连接,在数据传输结束后再释放这个连接。
面向连接服务模拟电话系统工作模式,具有连接建立、数据传输和连接释放三个阶段。在传输数据时是按序传输的,这与电路交换的许多特性很相似,因此,面向连接服务在网络层中又称为虚电路服务。这里的“虚电路“表示:虽然在两个服务用户的通信过程中并没有始终占用一条端到端的完整物理电路,但用户在感觉上却好像一直在使用这样的一条电路,实质上它是通过分时共享物理电路的技术来实现的。面向连接服务比较适合在一定期间内要向同一目的地发送多个数据的情形。对于偶尔发送很少量的数据,面向连接服务则由于开销过大而不太适应。
若两个用户需要进行频繁的通信,则可建立永久连接。这样可以免除在每次通信时进行连接建立和连接释放这两个过程,永久连接与电话网中的专用话音电路十分相似。
(2)无连接服务
在无连接服务的情况下,两个实体之间的通信无须预先建立一个连接,因此,有关资源不需要事先进行预定保留,这些资源在数据传输时动态分配。日常通信中的短信业务提供的就是无连接服务。
无连接服务的另一个特征就是它不需要通信的两个实体同时处于活跃状态。当发送端的实体正在进行数据传输时,它必须是活跃的,但此时接收端的实体并不一定必须是活跃的。只有当接收端的实体正在进行数据接收时,它才必须是活跃的。
无连接服务的优点在于灵活方便和迅速及时,但它不能防止数据的丢失、重复或乱序。无连接服务特别适合传输少量数据的情形。
无论是面向连接服务还是无连接服务,都不能保障数据传输的可靠性。在此,我们使用服务质量(Quality of Service,QoS)来评价服务的特性,有些服务十分可靠,从来不丢失数据。为了实现可靠的服务,通常是由接收端确认接收到每一个数据,使发送端确信它所发送的数据已经正确到达接收端这一方法来实现的。这种确认机制要增加额外的传输开销和延迟,对于不同的网络应用,有时是值得的,但有时则不尽然。
有两种面向连接的可靠性服务应用比较广泛,即消息流和字节流。消息流保持应用消息的边界,如发送端发送两个1KB的消息,接收端肯定也是接收到两个1KB的消息,绝不会变成一个2KB的消息。而字节流则没有消息边界,如2KB字节到达接收端后,接收端根本无法分辨所接收的数据究竟是一个2KB的消息还是两个1KB的消息,或者是2048个单字节消息。如果在网络上传送一本书,当把每页作为分离的消息进行传输时,保留消息的边界就变得比较重要。然而,作为一个终端在远程分时系统上登录时,从终端到计算机的字节流传输就能够满足需求。
对于某些网络应用而言,面向连接的数据传输因确认引起的延迟可能难以满足用户的需求。比如数字化的音频传输,网络用户宁可听到线路上偶尔出现的杂音,或不时混淆的声音,也不愿意因等待确认而造成延迟。同样,在传输视频数据时,错了几个像素并无大碍,但视频突然停顿以等待纠正传输错误却会令人十分不满意。

2.2.7 服务原语

服务在形式上是由一组服务原语(primitive)来描述的,这些原语专供用户和其他实体访问服务,利用服务原语可以通知服务提供者采取某些行动或报告对等实体正在执行的活动。值得注意的是,服务原语只是对服务进行概念性的功能描述,至于如何实现并不做明确规定,它是描述服务的一种简洁的语法形式,而不是可执行的程序语言。
OSI定义了4种类型的服务原语,其含义如表2-2所示。
image.png
下面将以连接建立服务和连接释放服务的执行过程作为例子,说明服务原语的用法。当某一实体发出连接请求(CONNECT.request)原语以后,接收方会收到一个连接指示(CONNECT.
indication)原语,被告知某处的一个实体希望和它建立连接。收到连接指示的实体再使用连接响应(CONNECT.response)原语表示它是否愿意建立连接。但无论是哪一种情况,请求建立连接的实体都可以通过接收连接证实(CONNECT.confirm)原语获知接收方的响应结果,即拒绝还是同意连接建立。
原语可以带参数,并且大多数原语都带参数。连接请求的参数可能需要指明要与哪台机器连接、需要的服务类别和拟在该连接上传输的最大数据长度。连接指示原语的参数可能包含呼叫者标志、需要的服务类别和建议的最大数据长度。如果被呼叫实体不同意呼叫实体所建议的最大数据长度,它可以在响应原语中做出一个反向建议,呼叫实体可从证实原语中获知它,当出现长度不一致的情况时,协议可以规定选择较小的值。
根据服务来使用服务原语的类型,可将服务划分成有证实(confirmed)服务和无证实(unconfirmed)服务两种。有证实服务需要使用请求、指示、响应和证实原语;而无证实服务则只需使用请求和指示原语即可。例如:CONNECT服务总是有证实的服务,因为必须获得远程对等实体同意才能建立连接。而数据传输和连接释放可以是有证实的,也可以是无证实的,这取决于发送方是否要求确认。有证实服务和无证实服务在网络中的使用都很普遍。
为了让读者对服务原语的概念更清晰,下面再列举一个简单的面向连接的数据传输例子,它使用了如下所述的8条服务原语:
1)CONNECT.request:请求建立连接。
2)CONNECT.indication:指示有连接建立请求。
3)CONNECT.response:被呼叫实体用来表示接收/拒绝建立连接的请求。
4)CONNECT.confirm:通知呼叫实体建立连接的请求是否被接受。
5)DATA.request:请求发送数据。
6)DATA.indication:指示数据已到达。
7)DISCONNECT.request:请求释放连接。
8)DISCONNECT.indication:指示对等实体释放连接的完成情况。
在这个例子中,CONNECT是有证实服务,它需要有明确的响应;而DATA和DISCONNECT是无证实服务,不必有明确的响应。8条服务原语的执行过程如图2-6所示。
image.png
需要明确的是,一种服务是有证实的还是无证实的并非是绝对的,它依赖于网络层次提供的服务质量需求。例如,对于数据传输服务,在上面的例子中就是无证实服务;但对于具有可靠性要求的数据传输而言,数据传输服务就必须是有证实的。另外,有证实服务只是要求该服务的完成需要使用四条服务原语,至于最终结果并非一定是服务用户所期待的。例如在上面的建立连接服务中,服务用户肯定希望能够与对方顺利地建立起连接,但结果可能是连接建立成功,也可能是连接建立失败,不管是哪一种结果,这个连接建立服务都是有证实的。

2.2.8 服务与协议间关系

服务和协议虽是截然不同的概念,但是二者却经常混淆在一起,理解二者的区别非常重要,有必要在此专门强调。服务是指某一层向它的上一层提供的一组原语或操作,服务定义了该层代表其用户执行哪些操作,但是它并没有涉及如何实现这些操作;服务也会涉及相邻两层之间的接口,其中低层是服务提供者,上层就是服务用户。
协议是一组规则,用来规定同一层上的对等实体之间交换消息或分组的格式和含义。实体利用协议来实现其服务定义,根据网络分层原则,实体尽管可以自由地改变协议,但不能改变服务,因为服务对于用户是可见的,而协议则是不可见的。从这个视图出发,服务和协议又是完全分离的。换言之,服务涉及上下相邻层间的接口,而协议则涉及不同机器上对等实体之间发送的数据分组,如图2-7所示。读者务必理解这两个概念,不要混淆,这对于理解网络体系结构是非常重要的。

image.png

为了更好地让读者理解,可以用编程语言来对这两个概念做一个类比。服务好像是面向对象语言中的抽象数据类型或者对象,它定义了在对象上可以执行的操作,但是并没有规定这些操作该如何实现;而协议则对应于对象方法的代码流程。

2.3 网络参考模型

网络体系结构中的分层、服务以及协议等概念确实比较抽象,难于理解。为此,本节会介绍两个重要的网络参考模型,即OSI参考模型和TCP/IP参考模型,让大家能够实际感受到网络体系结构的作用。尽管与OSI参考模型相关的协议很少在实际中使用,但该模型本身是通用的,所涉及的特性在今天依然有效。而TCP/IP参考模型则有着截然不同的特点,该模型本身的意义并不是很重大,但它的协议却被广泛地应用。
值得指出的是,OSI参考模型和TCP/IP参考模型尽管影响很大,但网络体系结构并不是只有这两个。根据不同的视角、不同的需求,可以为计算机网络定义不同的网络体系结构,但这些体系结构遵循的是同一设计方法。

2.3.1 OSI参考模型

计算机网络发展史上的一个重要里程碑便是ISO(International Standard Organization,国际标准化组织)对OSI(Open System Interconnection,开放系统互连)7层网络参考模型的定义,OSI参考模型是一种框架性的设计方法,它是一个逻辑上的定义、一个规范。
图2-8给出了OSI参考模型的基本结构,它把计算机网络从逻辑上分为7层,分层的原则如下所述。
1)当需要一个不同抽象实体的时候,应该创建一个新的层次。
2)每一层次必须执行一个明确定义的功能集合。
3)确定一个层次功能的时候,必须考虑如何定义标准化的协议。
4)选择层次边界时,应该使接口控制信息尽可能少。
5)层次数量应该足够多,以保证不同的功能不会被混杂在同一个层次中;同时,层次数量又不能太多,以避免整个体系结构变得过于庞大。
image.png
下面将从参考模型的最底层开始,依次描述各个层次。需要指明的是,OSI参考模型本身并不是一个真正的网络体系结构,因为它并未定义每一层次上需要用到的服务和协议,它只是给出了每一层次上应该实现的功能。尽管ISO已经为各个层次制定了相应的标准,但这些标准都是作为单独的国际标准发布的,并不属于OSI参考模型本身。
(1)物理层
物理层(physical layer)的任务就是在通信信道上透明地传输比特流,即0、1二进制数据流。在物理层上所传输的数据的基本单位是比特(位)。需要明确的是:物理层是一个逻辑的层次,但它传输数据位所利用的传输介质(如双绞线、同轴电缆以及光纤等)则是物理的,但不在物理层之内,而是在物理层的下面,尽管有人将物理介质称为第0层,但它并不具备网络体系结构中的层次含义。
“透明“是一个很重要的网络术语。它使得一个实际上存在的事物看起来好像不存在。“透明地传输比特流“表示经实际通信信道传输后的比特流并没有发生变化,因此,对传输比特流来说,由于这个通信信道并没有对其产生什么影响,因而比特流就“看不见“这个通信信道;或者说,这个通信信道对该比特流而言就是透明的。这样,任意组合的比特流都可以在该通信信道上传输。至于这些比特流所表示的语义内容,则不是物理层所要考虑的。
物理层需要保证当一方发送比特1时,另一方应该收到的也是比特1,而不是比特0。为此,物理层需要考虑应该用多少伏的电压来表示比特1、多少伏的电压来表示比特0;每一比特的持续时间长短;传输过程是否允许在两个方向上同时进行;初始物理连接如何建立;物理连接器有多少芯针以及每一芯针的用途等。这些问题涉及机械、电气、功能、规程以及物理介质等。
(2)数据链路层
数据链路层(data link layer)的主要任务是将一个原始的传输设施转换成一条逻辑的传输线路,在这条传输线路上,所有未检测出来的传输错误也会反映到网络层上。数据链路层完成这项任务的做法是:让发送方将输入的数据拆开,分装到数据帧(data frame,一般为几百或者几千字节)中,然后顺序地传送这些数据帧。如果是可靠的服务,则接收方必须确认每一帧都已经正确地接收到了,即给发送方送回一个确认帧(acknowledgement frame)。
数据链路层上的另一个问题是(大多数高层都有这样的问题),如何避免一个快速的发送方“淹没“一个慢速的接收方。所以,往往需要一种流量调节机制,以便让发送方知道接收方当前时刻有多大的接收能力。通常情况下,这种流量调节机制和错误处理机制集成在一起。
对于广播式网络,在数据链路层上还有另外一个问题:如何控制共享信道的访问。数据链路层为此设置了一个特殊子层,即介质访问控制子层,就是专门针对这个问题的。
(3)网络层
网络层(network layer)控制通信子网的运行过程。网络层面临的一个关键问题是需要确定如何将分组从源节点路由到目标节点。从源节点到目标节点的路径可以建立在静态路由表的基础之上,这些表相当于是网络的“布线“图,而且很少会变化。源节点到目标节点的路径可以在每一次会话开始时就确定下来,会话期间保持不变,如一次终端会话(比如,登录到一台远程机器上)。事实上,源节点到目标节点的路径往往是动态变化的,针对会话的每一个分组都要重新确定其传输路径,以便更好地应对网络当前的负载状况。
如果有太多的分组同时出现在一个通信子网中,那么这些分组彼此之间有时会相互妨碍,从而形成传输瓶颈,解决这个瓶颈依赖于网络层的拥塞控制机制。更进一步讲,如何提供更好的服务质量(比如延迟、传输时间、抖动,等等)也是网络层需要考虑的问题。
当一个分组必须从一个网络传输到另一个网络才能够到达目标节点时,这种跨网传输可能会产生很多问题,如第二个网络所使用的编址方案可能与第一个网络所使用的不同;第二个网络可能根本不能接受这个分组,因为它太大了;两个网络所使用的协议也可能不一样,等等。网络层应负责解决这些协议异构问题,从而允许不同种类的网络可以相互连接起来。
在广播式网络中,路由问题比较简单,所以网络层往往比较薄弱,甚至根本不需要存在。
(4)传输层
传输层(transport layer)的基本功能是接收来自上一层的数据,并且在必要的时候把这些数据分割成较小的单元,然后把这些数据单元传递给网络层,并且保证这些数据单元都能够正确地到达目标端。所有这些功能都必须高效率地完成,并且必须使上面各层不受低层技术变化的影响。
传输层还决定了将向会话层(实际上最终是向网络的用户)提供哪种类型的服务。其中最为常见的类型是,传输连接充当一个完全无差错(error-free)的点到点信道,此信道按照原始发送的顺序来传输报文或者字节数据。然而,其他类型的传输服务也是可能的,如传输独立的报文(不保证传送的顺序)、将报文广播给多个目标等。服务类型是在建立连接时就确定下来的(顺便说一下,真正完全无错的信道是不可能实现的,人们使用这个术语的真正含义是指错误的发生率足够小,以至于在工程实践中可以忽略这样的错误)。
传输层是一个真正的端到端的层次,所有的处理都是按照从源端到目标端来进行的。换句话说,源机器上的一个程序利用报文头与控制信息,与目标机器上的一个类似的程序进行对话。在其下面的各层上,协议存在于每台机器与它的直接邻居之间,而不存在于最终的源机器和目标机器之间,源机器和目标机器可能被许多中间路由器隔离开了。第l层到第3层是被串联起来的,是点到点的(point-to-point);而第4层到第7层是端到端的(end-to-end)。
(5)会话层
会话层(session layer)的功能是在传输层服务的基础上增加控制会话的机制,建立、组织和协调应用进程之间的交互过程。
会话类似于两个人之间的交谈。交谈也是靠某些约定来使得双方有序并完整地交换信息。交谈中需要协调控制因素的一个例子是半双工方式,即对话双方交替地谈话,发言权的交替往往靠约定俗成的表情、手势、语气等协调。另一个例子是同步,即一方因外界干扰或注意力不集中等未听清对方的话时,可请对方重复,使听方和说方同步起来。
会话层提供的基本服务是为用户建立、引导和释放会话连接。会话层提供的会话服务种类包括双向同时(双工)、双向交替(半双工)和单向(单工)。会话管理的一种方式是令牌管理,只有令牌持有者才能执行某种操作。
另一种会话层服务是同步。一个会话连接可能持续较长的时间,若在会话连接即将结束时出现故障,则整个会话活动都要重复一遍,这显然不合理。会话层设置了同步控制功能,在一个会话连接中设置了一些同步点,这样当出现故障时,会话活动可以在故障点之前的同步点开始执行,而不必从头开始,使得重发数据降至最少。
(6)表示层
表示层(presentation layer)定义用户或应用程序之间交换数据的格式,提供数据表示之间的转换服务,保证传输的数据到达目标端后意义不变。由于各种计算机都可能有自己描述数据的方法(也被称为“局部语法“),因此不同类型计算机之间的数据传输一般要经过一定的数据转换才能保持数据的意义不变。如同一个中国人用汉语打电话向一个美国人说“新年好“以表示新年的问候时,应该翻译为“Happy New Year“,才保持了原始转达的语义。
表示层的功能是对源端计算机内部的数据结构编码,形成适合于网络传输的数据流(符合“传输语法“),到了目标端计算机再进行解码,转换成目标端用户所要求的格式(符合目标端“局部语法“),保持传输数据的语义不变。
数据转换工作包括不同类型计算机中内部格式的转换、密码转换和媒体文件压缩的转换。计算机的内部格式指的是字符集的编码方法、整数和浮点数的表示方法等。密码转换是为了实现数据的保密,为此在发送时将数据转换成密文而在接收时将密文恢复成原来的形式。媒体文件压缩包括静止和运动图像的编码方法和格式标准,如PEG和MPEG等。
抽象语法标记(Abstract Syntax Notation One,ASN.l)是表示层定义的用来表示各种应用协议数据单元的数据类型的工具,是一种数据类型的通用描述语言。
(7)应用层
应用层(application layer)直接面向用户应用,为用户提供对各种网络资源的访问服务。OSI应用层标准已经规定的一些应用协议包括:虚拟终端协议(Virtual Terminal Protocol,VTP),文件传送、存取和管理(File Transfer Access and Management,FTAM),作业传送与操纵(Job Transfer and Management,JTM),远程数据库访问(Remote Database Access,RDA),报文处理系统(Message Handling System,MHS),等等。

2.3.2 TCP/IP参考模型

因特网是基于TCP/IP技术的,使用的是TCP/IP参考模型,该模型分为4个层次,自下而上分别是网络接口层、网际层、传输层和应用层,不过,TCP/IP参考模型并没有定义网络接口层的具体内容。图2-9给出了TCP/IP参考模型的层次结构以及与OSI/RM参考模型的对应关系。

image.png

(1)网络接口层
网络接口层负责将网际层的IP数据报通过物理网络发送出去,或从物理网络接收数据帧,抽取出IP数据报上交给网际层。TCP/IP标准并没有定义具体的网络接口层协议,其目的旨在提供灵活性,以适用于不同的物理网络,如各种LAN、MAN、WAN甚至点对点链路,等等。物理网络不同,其对应的接口也不同,但网络接口层的定义使得上层的TCP/IP协议簇与底层的物理网络无关。
严格来说,TCP/IP的网络接口层并不是一个独立的层次,而只是一个接口,TCP/IP并没有对它定义具体的内容。网络接口层对应OSI的1~2层,即物理层和数据链路层。
在Internet世界中,物理网络是一个经常使用的概念,它位于网际层之下。各种物理网络的差异可能很大,比如LAN、MAN和WAN的网络跨距就相差很大,在物理网络内部,网上的计算机在通信时只需要使用网络的物理地址。一般LAN、MAN仅划分为物理层和数据链路层,在层次上和OSI的底下两层有很好的对应关系,而WAN的层次划分则没有这种严格的对应关系。但在TCP/IP参考模型中,各种物理网络都是Internet的构件,在IP数据报的传输过程中,它们只是作为两个相邻路由节点之间的一条传输通道而已。
TCP/IP的基本目标就是使各种各样的物理网络互连,它给物理网络技术的发展更新留下了广阔的自由空间,Internet经过短暂的时间就发展到如今覆盖全球的巨大规模正是对这一设计目标的最好回报。
(2)网际层
网际层(Internet 1ayer)也称互联网层。网际层提供的是一种无连接、不可靠但尽力而为的数据报传输服务,将数据报从源主机传送到目标主机。从一台主机传送到另一台主机的数据报可能会通过不同的路由,且数据报可能出现丢失、乱序等情况。为了达到高效的数据报传输速率,网际层放弃了一些并非必需的可靠性操作。
网际层传送的数据单位是IP数据报(IP datagram),也就是IP分组。
网际层最主要的协议是网际协议IP。与IP协议配套的其他协议还有:地址解析协议(Address Resolution Protocol,ARP)、逆向地址解析协议(Reverse Address Resolution Protocol,RARP)、因特网控制报文协议(Internet Control Message Protocol,ICMP)等。
(3)传输层
传输层(transport layer)也称运输层。传输层为应用进程提供端到端的传输服务,为应用进程提供一条端到端的逻辑信道,端到端的逻辑信道存在于源节点和目标节点的两个传输层实体之间,不涉及网络中的路由器等中间节点。
传输层主要提供了两个协议,即传输控制协议(TCP)和用户数据报协议(UDP)。
TCP提供面向连接的可靠的端到端的传输服务,它可在低层不可靠的情况下(如出现分组传输的丢失、乱序等)提供可靠的传输服务。为此TCP需要额外增加许多开销,提供一些必要的传输控制机制,以保证数据传输按序、无丢失、无重复、无差错。
UDP则提供无连接、不可靠的端到端的传输服务。在数据传输之前,不需要先建立连接,而且接收方在收到UDP数据报文之后也不需要给出任何应答信息。显然这减少了很多为保证可靠传输而附加的额外开销,因而它传输的效率高。在某些应用场合下,这是一种非常有效的传输方式。
(4)应用层
应用层(application layer)提供面向用户的网络服务,它对应OSI的高三层,即取消了OSI的表示层和会话层,将这两个层次的有效功能集中到应用层上。
TCP/IP参考模型的应用层已经存在有许多面向特定应用的著名协议。如文件传输协议(FTP)、远程通信协议(Telnet)、简单邮件传送协议(SMTP)、域名系统(DNS)、超文本传输协议(HTTP)和简单网络管理协议(SNMP)等。FTP是TCP/IP使用非常广泛的一个应用,它用来控制网上两个主机之间的文件传送。Telnet远程通信协议亦称远程终端访问协议,用于本地用户登录到远程主机以访问远程主机的资源。SMTP是一个简单的面向文本的传输协议,用于有效地传输邮件。DNS是一个名字服务协议,它提供以主机域名到IP地址之间的转换。HTTP用于万维网的信息传输,SNMP用于网络管理。

2.3.3 OSI与TCP/IP参考模型的比较

OSI和TCP/IP参考模型有很多共同点。两者都以协议栈的概念为基础,并且协议栈中的协议彼此相互独立。同时,两个模型中各个层次的功能也大体相似。例如,在两个模型中,传输层以及传输层以上的各层都是希望为进行通信的进程提供一种端到端的、与网络无关的传输服务,这些层形成了传输提供方。另外,在这两个模型中,传输层之上的各层都是传输服务的用户,并且都是面向应用的用户。
除了上述相似点外,两个模型也有许多不同的地方。本节将注意力集中在两个模型之间的关键差别上。需要指明的是:这里比较的是参考模型,而不是对应的协议。
对于OSI参考模型,它的核心在于明晰了下面3个概念。

  • 服务
  • 接口
  • 协议

OSI模型最大的贡献是使这三个概念的定义和区别变得清晰、明了。每一层都为它的上一层提供一定的服务。服务的定义指明了该层做些什么,而不是上一层的实体如何访问这一层,或这一层是如何工作的。
每一层的接口告诉它上层实体应该如何访问本层的服务。它规定了有哪些参数,以及结果是什么。但是它并没有说明本层内部是如何工作的。
最后,每一层上用到的对等协议是本层自己内部的事情。它可以使用任何协议,只要能够完成任务就行(也就是说提供所承诺的服务)。它也可以随意地改变协议,而不会影响上面的各层。
这些思想与现代的面向对象程序设计的思想非常吻合。一个对象就如同一个层次一样,它有一组方法(或者叫操作),对象之外的过程可以调用这些方法。这些方法的语义规定了该对象所提供的服务集合。方法的入口参数和返回结果构成了对象的接口,对外是可见的。对象的内部代码是它的协议,对于外部而言是不可见的,也不需要被外界关心。
TCP/IP参考模型在最初并没有明确地区分服务、接口和协议三者之间的差异,但是在它成型之后,人们努力对它做了改进,以便更加接近于OSI参考模型。例如,网际层提供的真正服务只有发送IP分组和接收IP分组。
因此,OSI参考模型中的协议比TCP/IP参考模型中的协议有更好的隐蔽性,当技术发生变化的时候,OSI参考模型中的协议相对更加容易被替换为新的协议。最初采用分层协议的主要目的之一就是能够做这样的替换。
OSI参考模型是在协议制定之前就已经产生的。这种顺序关系意味着OSI参考模型不会偏向于任何某一组特定的协议,因而该模型更加具有通用性。这种做法的缺点是,设计者在这方面没有太多的经验可以参考,因此不知道哪些功能应该放在哪一层上。例如,数据链路层最初只处理点到点网络。当广播式网络出现以后,必须在模型中嵌入一个新的子层。当人们使用OSI参考模型和已有的协议来建立实际的网络时,才发现这些网络并不能很好地匹配所要求的服务规范,这使得当初的设计者感到万分的惊讶!因此不得不在模型中加入一些子层,以便提供足够的空间来弥补这些差异。还有,标准委员会最初期望每一个国家都将有一个由政府来运行的网络并使用OSI协议,所以根本不考虑网络互连的问题。总之,事情并不像预期的那样。
而TCP/IP参考模型却正好相反:协议先出现。TCP/IP参考模型只是这些已有协议的一个描述而已。所以,协议一定会符合模型,而且两者确实吻合得很好。唯一的问题在于,TCP/IP参考模型并不适合任何其他协议栈,因此,要想描述其他非TCP/IP网络,该模型并不是很有用。
接下来我们从模型的基本思想转到更为具体的层,它们之间一个很显然的区别即所划分层次的数目:OSI参考模型有7层,而TCP/IP参考模型只有4层。它们都有网络层(或者是网际层)、传输层和应用层,但是其他层并不相同。
另一个区别在于无连接的和面向连接的通信范围有所不同。OSI参考模型的网络层同时支持无连接和面向连接的通信,但是传输层上只支持面向连接的通信,这是由该层的特点所决定的(因为传输服务对于用户是不可见的)。TCP/IP参考模型的网际层上只有一种模式(即无连接通信),但是在传输层上同时支持两种通信模式,这样可以给用户一个选择的机会。这种选择机会对于简单的请求-应答方式的应用显得特别重要。

2.4 五层网络参考模型

2.4.1 OSI与TCP/IP参考模型的评价

OSI参考模型与TCP/IP参考模型的共同之处在于它们都采用了层次结构的概念,在传输层中二者定义了相似的功能。但是,二者在层次划分与使用的协议上有很大区别。无论是OSI参考模型与协议,还是TCP/IP参考模型与协议都不是完美的,对二者的评论与批评都很多。OSI参考模型与协议的设计者从工作的开始,就试图建立一个全世界范围的计算机网络都要遵循的统一标准。从技术角度,他们希望追求一种完美的理想状态。在20世纪80年代,几乎所有专家都认为OSI参考模型与协议将风靡世界,但事实却与人们预想的相反。
造成OSI协议不能流行的原因之一是模型与协议自身的缺陷。大多数人都认为OSI参考模型的层次数量与内容可能是最佳的选择,其实并不是这样的—会话层在大多数应用中很少用到,表示层几乎是空的。在数据链路层与网络层有很多子层插入,每个子层都有不同的功能。OSI参考模型将“服务“与“协议“的定义结合起来,使参考模型变得格外复杂,实现起来也很困难。同时,寻址、流量控制与差错控制在每一层都重复出现,因此必然会降低系统效率。虚拟终端协议最初安排在表示层,现在安排在应用层。关于数据安全性、加密与网络管理等方面的问题也在参考模型的设计初期被忽略了。
有人批评参考模型的设计更多的是被通信的思想所支配,很多选择不适合于计算机与软件的工作方式。很多“原语“虽在软件的高级语言中实现起来容易,但严格按照层次模型编程的软件效率很低。尽管OSI参考模型与协议存在着一些问题,但至今仍然有不少组织对它感兴趣,尤其是欧洲的通信管理部门。
总之,OSI参考模型与协议缺乏市场与商业动力,结构复杂,实现周期长,运行效率低,这是它没有达到预想目标的重要原因。
TCP/IP参考模型与协议也有自身的缺陷,它主要表现在以下这些方面。

  • TCP/IP参考模型在服务、接口与协议的概念区别上不是很清楚。一个好的软件工程师在实践中都要求区分哪些是规范,哪些是实现,这一点OSI参考模型非常谨慎地做到了,而TCP/IP参考模型恰恰没有很好地做到这点。因此,在使用新技术设计新的网络的时候,TCP/IP参考模型不是一个很好的参照。
  • TCP/IP参考模型不通用,它不适合用来描述TCP/IP之外的任何其他协议栈。
  • 在网络分层结构中,TCP/IP参考模型的网络接口层并不是常规意义上的层次概念。它实际上只是一个位于网络层和数据链路层之间的接口。而接口和层的区别在分层网络结构中十分重要,绝不能对此掉以轻心。
  • TCP/IP参考模型没有区分(甚至没有提及)物理层和数据链路层。而这两个层次是完全不同的,物理层必须考虑不同传输介质的物理传输特征,数据链路层的任务则是确定帧的边界,并按照预期的可靠程度将这些帧从一端发送到另一端。一个好的参考模型应该将它们区分开来,而TCP/IP参考模型却没有做到这点。

但是,TCP/IP协议自20世纪70年代诞生以来就已经历了40多年的实践检验,其成功已经赢得了大量的用户和投资。TCP/IP协议的成功促进了Internet的发展,Internet的发展又进一步扩大了TCP/IP协议的影响。TCP/IP首先在学术界争取了一大批用户,同时也越来越受到计算机产业界的青睐。IBM、DEC等大公司纷纷宣布支持TCP/IP协议,局域网操作系统NetWare、LAN Manager争相将TCP/IP纳入自己的体系结构,数据库Oracle支持TCP/IP协议,UNIX、POSIX操作系统也一如既往地支持TCP/IP协议。
相比之下,OSI参考模型与协议显得有些势单力薄。人们普遍希望网络标准化,但OSI参考模型迟迟没有推出成熟的产品,妨碍了第三方厂家开发相应的硬件和软件,从而降低了OSI成果的影响力,并阻碍了它的发展。

2.4.2 五层网络参考模型概述

无论是OSI或TCP/IP参考模型与协议,都有其成功和不足的一面。国际标准化组织(ISO)原本计划通过推动OSI参考模型与协议的研究来促进网络的标准化,但事实上,它的目标没有达到。而TCP/IP参考模型利用正确的策略,伴随着Internet的发展而成为目前公认的工业标准。在网络标准化的进程中,我们始终面对这样一个艰难的抉择。OSI参考模型由于要照顾各方面的因素,使得它变得大而全,效率很低。尽管它是一种理想化的网络模型,至今没有流行起来,但它的很多研究思想、方法和成果,以及提出的概念对于今后的网络发展还是有很高的指导意义的。TCP/IP协议应用广泛,赢得了市场,但它的参考模型研究却很薄弱。
为了保证计算机网络课程教学的科学性和系统性,我们遵循网络界的主流观点(由Andrew S. Tanenbaum首先提出),使用一种新的网络参考模型来描述网络体系结构。这是一种折中的方案,它吸收了OSI参考模型和TCP/IP参考模型的优点。该参考模型将网络划分为5个功能明确的层次,如图2-10所示。与OSI参考模型相比,它缺少了表示层和会话层;与TCP/IP参考模型相比,用物理层和数据链路层替代空洞的网络接口层。在此需要提醒大家的是:网络功能与网络层次并没有绝对的绑定关系,一个特定的网络功能可以在不同的层次上出现,也可以同时在多个层次上出现。换言之,不同参考模型间的同一层次并非完全相同,只是它们的主要功能相同而已。因此,我们应该清楚,尽管五层网络参考模型没有会话层和表示层,但并不意味着OSI参考模型定义在这两个层次上的网络功能全部被取消。事实上,取消的仅是那些定义不是很明确的功能;而定义明确的功能(如数据压缩表示)则被放置到应用层上。

image.png

2.5 习题

一、填空题
1.计算机网络层次结构模型和各层协议的集合称为计算机网络    
2.ISO/OSI中OSI的含义是    
3.TCP/IP协议从下向上分为网络接口层、            四个层次。
4.OSI环境下,下层能向上层提供两种不同形式的服务,即        
5.在OSI参考模型中,对等实体在一次交互作用中传输的信息单位称为    ,它包括控制信息和用户数据两部分。
二、选择题
1.完成路径选择功能是在OSI模型的(  )。

A.物理层    B.数据链路层    C.网络层    D.传输层

2.网络协议组成部分为(  )。

A.数据格式、编码、信号电平    B.数据格式、控制信息、速度匹配
C.语法、语义、定时关系    D.编码、控制信息、定时关系

3.网络通信协议的层次结构有哪些特征?(  )

A.每一层都规定有明确的任务和接口标准
B.除最底层外,每一层都向上一层提供服务,又是下一层的用户
C.应用程序是最高层
D.物理通信线路工作在最底层,是提供传输服务的基础

4.在TCP/IP体系结构中,与OSI参考模型的网络层对应的是(  )。

A.网络接口层    B.网际层    C.传输层    D.应用层

5.下列选项中,不属于网络体系结构所描述的内容的是(  )。

A.网络的层次        B.每一层使用的协议
C.协议的内部实现细节    D.每一层必须完成的功能

6.在OSI参考模型中,自下而上第一个提供端到端服务的层次是(  )。

A.数据链路层    B.传输层    C.会话层    D.应用层

7.(  )是各层向其上层提供的一组操作。

A.网络    B.服务    C.协议    D.实体

8.OSI参考模型将整个网络的功能分成7个层次来实现,(  )。

A.层与层之间的联系通过接口进行
B.层与层之间的联系通过协议进行
C.各对等层之间通过协议进行通信
D.除物理层外,各对等层之间均存在直接的通信关系

9.在OSI参考模型中,第N层与它之上的第N+1层的关系是(  )。

A.第N层为第N+1层提供服务
B.第N+1层将从第N层接收的报文添加一个报头
C.第N层使用第N+1层提供的服务
D.第N层与第N+1层相互没有影响

10.下列(  )不是组成计算机网络必需的设备。

A.计算机系统    B.网络适配器    C.传输介质    D.网络打印机

三、简答题
1.什么是网络体系结构?请说出使用分层协议的两个理由。
2.什么是实体?什么是对等实体?
3.面向连接服务和无连接服务的主要区别是什么?
4.OSI参考模型定义了哪些数据单元?
5.有两个网络都可以提供可靠的面向连接服务。其中一个提供可靠的字节流,另一个提供可靠的报文流。这两者是否相同?请给出一个例子予以说明。
6.一个系统有n层协议的层次结构。应用程序产生消息的长度为M字节,在每一层上需要加上一个h字节的头部。请问:这些头部需要占用多少比例的网络带宽。
7.有证实服务和无证实服务之间的区别是什么?对于连接建立、数据传输和连接释放这三种情况,请说出哪些可能是有证实服务或无证实服务?哪些两者皆可?哪些两者皆不可?
8.面向连接服务与无连接服务各自的特点是什么?
9.协议与服务有何区别?有何关系?
10.试述五层协议的网络体系结构的要点,包括各层的主要功能。
11.列出OSI参考模型和TCP/IP参考模型的主要相同点和不同点。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接