1.4 计算机网络的体系结构
一个计算机网络必须为连入的所有计算机提供通用、高效、公平和坚固的连通性。但似乎这还不够,因为网络不是一成不变的,必须适应技术和应用需求的不断变化。设计一个满足这些需求的网络并非易事。为此,网络设计者制定了层次型的网络体系结构(Architecture),用以指导计算机网络的设计与实现。
1.4.1 网络体系结构的分层
为了减少网络协议设计的复杂性,网络设计者并不是设计一个单一、复杂的协议来实现所有形式的通信,而是把复杂的通信问题划分为许多子问题,然后为每个子问题设计一个单独的协议,以便使得每个协议的设计、分析、编码和测试都比较容易。
1.网络协议
计算机网络是由多个互联的结点组成的,结点之间需要不断地交换数据信息。要做到有条不紊地交换数据,每个结点都必须遵守一些事先约定好的规则。协议就是一组控制数据通信的规则。网络协议是由标准化组织和相关厂商参与制定的,计算机执行的协议则是用某种程序设计语言编写的程序代码。所以,可以概括地说,协议是实现某种功能的算法或程序,具体包括语义、语法和时序3个要素。
(1)语法。语法用于规定网络中所传输的数据和控制信息的结构组成或格式,如数据报文的格式,即对所表达内容的数据结构形式的一种规定,亦即“怎么讲”。例如,在传输一份报文时,可采用适当的协议元素和数据,如按IBM公司提出的二进制同步通信BSC协议格式来表达,其中SYN是同步字符,SOH是报头开始,STX是正文开始,ETX是正文结束,BCC是块校验码。
(2)语义。语义是指对构成协议的协议元素含义的解释,亦即“讲什么”。不同类型的协议元素规定了通信双方所要表达的不同内容(含义)。例如,在基本数据链路控制协议中规定,协议元素SOH的语义表示所传输报文的报头开始,而协议元素ETX的语义则表示正文结束。
(3)时序。时序是对事件执行顺序的详细说明。例如,在双方通信时,首先,由源结点发送一份数据报文,如果目的结点收到的是正确的报文,就应遵守协议规则,利用协议元素ACK来回答对方,以使源结点知道所发报文已被正确接收。如果目的结点收到的是一份错误报文,便按规则用NAK做出回答,以要求源结点重传刚刚所发过的报文。
综上所述,网络协议实质上是实体之间通信所预先制定的一整套双方相互了解和共同遵守的格式或约定,它是计算机网络不可或缺的组成部分。
2.网络体系结构的分层模型
人类的思维能力不是无限的,如果面临的因素太多,就不可能做出精确的思维判断。处理复杂问题的一个有效方法就是用抽象和层次的方法去构造和分析。同样,对于计算机网络这类复杂的大系统,亦是如此。为了减少计算机网络设计的复杂性,往往按功能将计算机网络划分为多个不同的功能层。如图1.18所示,就是将计算机网络抽象为五层结构的一种模型,它清楚地描述了应用进程之间如何进行通信的情况。
图1.18 计算机网络的分层模型
在本质上,这个分层模型描述了把通信问题分为几个子问题(称为层次)的方法,每个子问题对应于特定的层,以便于研究和处理。例如,在第5层运行的某应用进程产生了消息M,并把它交给第4层进行发送。第4层在消息M前加上一个信息头(Header),信息头主要包括控制信息(如序号),以便目标主机上的第4层在低层不能保持消息顺序时把乱序的消息按原序装配好。在有些层中,信息头还包括长度、时间和其他控制字段。在许多网络中,第4层对接收的消息长度没有限制,但在第3层通常存在一个限制。因此,第3层必须将接收的消息分成较小的单元,如报文分组(Packet),并在每个报文分组前加上一个报头。在本例中,消息M被分成M1和M2两部分。第3层确定使用哪一条输出线路,并将报文传给第2层。第2层不仅给每段消息加上头部信息,而且还要加上尾部信息,构成新的数据单元,通常称之为帧(Frame),然后将其传给第1层进行物理传输。在接收端,报文每向上递交一层,该层的报头就被剥掉,绝不允许出现带有N层以下报头的报文交给接收端第N层实体的情况。
深刻理解图1.18中的通信过程,关键是要弄清楚虚拟通信与物理通信之间的关系,以及协议与接口之间的区别。网络中对等层之间的通信规则就是该层使用的协议,例如,有关第N层的通信规则的集合,就是第N层的协议。而同一计算机的相邻功能层之间通过接口(服务访问点)进行信息传递的通信规则称为接口(Interface),在第N层和第N+1层之间的接口称为N/(N+1)层接口。总之,协议是不同机器对等层之间的通信约定,而接口是同一机器相邻层之间的通信约定。不同的网络,分层数量、各层的名称和功能以及协议都各不相同。然而,在所有的网络中,每一层的目的都是向它的上一层提供一定的服务。例如,第4层的对等进程,在概念上认为它们的通信是水平方向地应用第4层协议。每一方都好像有一个称为“发送到另一方去”的进程和一个称为“从另一方接收”的进程,尽管实际上这些进程是跨过第3层/第4层接口与下层通信而不是直接同另一方通信。
协议层次化不同于程序设计中的模块化概念。在程序设计中,各模块可以相互独立,任意拼装或者并行,而层次则一定有上下之分,它是根据数据流的流动而产生的。
在研究开放系统通信时,常用实体(Entity)来表示发送或接收信息的硬件或软件进程。每一层都可看成由若干实体组成。位于不同计算机网络对等层的交互实体称为对等实体。对等实体不一定非是相同的程序,但其功能必须完全一致,且采用相同的协议。抽象出对等进程这一概念,对网络设计非常重要。有了这种抽象技术,设计者就可以把网络通信这种难以处理的大问题,划分成几个较小且易于处理的问题,即分别设计各层。分层设计方法将整个网络的通信功能划分为垂直的层次集合后,在通信过程中下层将向上层隐蔽下层的实现细节。但层次的划分应首先确定层次的集合及每层应完成的任务。划分时应按逻辑组合功能,并具有足够的层次,以使每层小到易于处理。同时,层次也不能太多,以免产生难以负担的处理开销。
3.网络体系结构
网络的体系结构是指计算机网络各层的功能、协议和接口的集合。上层是下层的用户,下层是上层的服务提供者。也就是说,计算机网络的体系结构就是计算机网络及其部件所应完成的功能的精确定义,是建立和使用通信硬件和软件的一套规则和规范。需要强调的是,网络体系结构本身是抽象的,而它的实现则是具体的,是在遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。不能将一个具体的计算机网络说成是一个抽象的网络体系结构。从面向对象的角度看,体系结构是对象的类型,具体的网络则是对象的一个实例。
世界上最早出现的分层体系结构,是美国IBM公司于1974年提出的系统网络体系结构(SNA)。此后,许多公司都纷纷制定了自己的网络体系结构。这些体系结构大同小异,各有特点,但都采用了层次型的模型。例如,Digital公司提出的适合本公司计算机组网的数字网络体系结构(DNA)。层次型网络体系结构的出现,推进了计算机网络的迅速发展。随着全球网络应用的不断普及,不同网络体系结构的用户之间也需要进行网络互连和信息交换。为此,国际标准化组织(ISO)在1977年推出了著名的开放系统互连参考模型(ISO/OSI-RM)。OSI试图让所有计算机网络都遵循这一标准,但是由于许多大的网络设备制造公司及软件供应商已经各自形成了相对成功的体系结构和商业产品,特别是Internet的迅猛发展,这个良好的愿望并没有实现。在Internet中得到广泛应用的TCP/IP协议及其相应的体系结构反而成为了事实上得到广泛接受的网络体系结构。
1.4.2 ISO/OSI参考模型
在网络发展的初期,许多研究机构、计算机厂商和公司都大力发展计算机网络。自ARPANet出现之后,相继推出了许多商品化的网络系统。这些自行发展的网络,在网络体系结构上差异很大,以至于互不兼容,难于相互连接以构成更大的网络系统。为此,国际标准化机构积极开展了网络体系结构标准化方面的工作,其中最为著名的就是ISO提出的ISO/OSI-RM。
1.ISO/OSI的7层参考模型
ISO/OSI-RM是一个开放体系结构,它规定将计算机网络分为7层,如图1.19所示。从最底层开始,分别是物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)和应用层(Application Layer)。所谓开放式互连就是可在多个厂家的环境中支持互连。
图1.19 ISO/OSI-RM
ISO/OSI-RM为计算机间开放式通信所需要定义的功能层次建立了统一标准。当ISO/OSI-RM在20多年前被开发出来时,被认为是非常激进的。因为,当时的计算机产业将用户锁定在专利私有产品的单一厂家体系结构中,从生产制造商的角度看,是不期望竞争的,因此,所有的功能都被尽可能紧密地结合在一起。功能模块或者层次概念似乎不符合制造商的需求。ISO/OSI-RM对这种闭关自守观念给予了沉重打击,早先的专利极端集成方式逐步消失。
值得注意的是,ISO/OSI-RM本身不是网络体系结构的全部内容,这是因为它并未确切地描述用于各层的协议及实现的方法,而仅仅告诉人们每一层应该完成的功能。不过,ISO/OSI-RM已经为各层制定了相应的标准,但这些标准并不是模型的一部分,而是作为独立的国际标准发布的。在ISO/OSI-RM中,有服务、接口和协议三个基本概念。ISO/OSI-RM是在其协议开发之前设计出来的。这意味着它不是基于某个特定的协议集而设计的,因而更具有通用性。另外,这也意味着它在协议实现方面存在某些不足。实际上,ISO/OSI-RM协议过于复杂,这也是它从未真正流行的原因所在。虽然ISO/OSI-RM并未获得巨大成功,但是在计算机网络发展过程中仍然起到了非常重要的指导作用。作为一种参考模型,对计算机网络的标准化发展仍具有指导意义。
2.ISO/OSI-RM各层的主要功能
ISO/OSI-RM将通信会话需要的各种进程划分成7个相对独立的功能层次,每一层均有自己的特定功能集,并与紧邻的上层和下层交互作用。在顶层,应用层与用户使用的软件(如字处理程序或电子表格程序)进行交互。在ISO/OSI-RM的底层是携带信号的网络电缆和连接器。总地说来,在顶层与底层之间的每一层均能确保数据以一种可读、无错、排序正确的格式予以传送。
1)物理层
物理层是ISO/OSI-RM的最低层或第一层,该层在由物理通信信道连接的任一对结点之间提供一个传送比特流(比特序列)的虚拟比特管道。物理信道包括双绞线、同轴电缆、光纤、无线电信道等。物理层与传输媒体和数据链路层之间的关系如图1.20所示。物理层的设计主要涉及物理层接口的机械、电气、功能和过程特性,以及物理层接口连接的传输媒体等问题。
图1.20 物理层与传输媒体和数据链路层之间的关系
物理层协议关心的典型问题是比特的表示,即使用什么样的物理信号来表示数据1和0;一个比特持续的时间多长;数据传输是否可同时在两个方向上进行;最初的连接如何建立,通信结束后连接如何终止;物理接口(插头和插座)有多少针以及各针的用途。
物理层的机械特性规定线缆与网络接口卡的连接头的形状、几何尺寸、引脚线数、引线排列方式、锁定装置等一系列外形特征;电气特性规定了在传输过程中多少伏的电压代表1,多少伏的电压代表0;功能特性规定了连接双方每个连接线的作用,如用于传输数据的数据线、用于传输控制信息的控制线、用于协调通信的定时线以及用于接地的地线;过程特性则具体规定了通信双方的通信步骤。
2)数据链路层
数据链路层是ISO/OSI-RM的第二层,它控制网络层与物理层之间的通信。数据链路层与网络层和物理层的之间的关系如图1.21所示。
图1.21 数据链路层与网络层和物理层的之间的关系
数据链路层负责在两个相邻结点间的线路上,无差错地把帧从一个跳(结点)传送到另一跳(结点),即在不可靠的物理线路上保证数据帧的可靠传输。数据链路层的一个重要功能是把来自网络层的数据包划分成可以处理的数据单元,即组帧。帧是用来转移数据的结构包,它不仅包括原始(未加工)数据,或称“有效载荷”,还包括发送端和接收端的网络地址以及纠错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧能无差错地到达。与物理层相似,数据链路层还要负责建立、维持和释放数据链路的连接。在传送数据时,如果接收端检测到所传数据中有差错,要通知发送端重传这一帧。然而,相同帧的多次传送也可能使接收端收到重复帧。例如,接收端给发送端的确认帧被破坏后,发送端也会重传上一帧,此时接收端可能会接收到重复帧。数据链路层必须解决由于帧的损坏、丢失和重复所带来的问题。数据链路层要解决的另一个问题,是防止高速发送端的数据把低速接收端“淹没”,因此需要某种信息流量控制机制使发送端得知接收端当前还有多少缓存空间。为了方便控制,流量控制常常和差错处理一同实现。
3)网络层
网络层,即ISO/OSI-RM的第三层,其主要功能是在开放系统之间的网络环境中提供网络对等层对等实体建立、维持、终止网络连接的手段,并在网络连接上交换网络层协议数据单元(分组)。网络层与数据链路层、传输层之间的关系如图1.22所示。
图1.22 网络层与数据链路层、传输层之间的关系
网络层的一个重要功能是网络寻址。一般来说,在计算机网络中进行通信的主机之间可能要经过许多结点和数据链路,也可能还要经过多个通信子网,网络层的任务就是选择合适的网间路由和交换结点,使发送端的网络协议数据单元,能正确地到达自己的目的结点的网络层。网络层将数据链路层提供的帧组成数据报,数据报中封装有网络层报头,报头中含有逻辑地址信息,即源结点和目的结点地址的网络地址。
事实上,网络层中的一些协议主要是解决异构网络的互连问题。网络层负责在源结点和目的结点之间建立它们所使用的路由。
4)传输层
传输层有时也称为运输层,是ISO/OSI-RM的第四层。在通信子网中没有传输层,传输层只存在于端开放系统中,即主机中。传输层提供类似于数据链路层所提供的服务,确保数据在端到端之间可靠、顺序、无差错地传输。传输层与网络层和会话层之间的关系如图1.23所示。
图1.23 传输层与网络层和会话层之间的关系
传输层的一个主要功能是服务点编址。计算机往往在同一时间运行多个应用进程,因此,从源端点到目的端点的数据传送并不仅仅是从某个计算机交付到另一个计算机,同时还需要明确指出从某个计算机的特定进程交付到另一个计算机上的特定进程。因此,传输层的报头必须包括服务点地址(亦称为端口地址)。传输层还要把一个报文划分为若干可传输的报文段,每个报文段包括序号等信息。在报文到达目的端时,传输层利用序号等信息再把它们重装起来,提交给上层。传输层的协议还应该能够进行流量控制、连接控制以及差错控制。如果数据传输有错,传输层将请求发送端重新发送数据。同样,假如数据在给定时间内未被应答,发送端的传输层也将认为发生了数据丢失而重新发送它们。
传输层向高层屏蔽了下层数据通信的细节,是真正的从源到目标“端到端”的层。因此,它是计算机网络体系结构中很关键的一层。
5)会话层
会话层也称为会晤层或对话层。这里会话的意思是指两个应用进程之间为交换面向进程的信息而按一定规则建立起来的一个暂时联系。会话层负责控制两个系统的应用程序之间的通信,其基本功能是为两个协作的应用程序提供建立和使用连接的方法。这种表示层之间的连接就叫做会话(Session)。会话层与传输层和表示层之间的关系如图1.24所示。
会话层负责会话的控制和同步。会话层所提供的会话服务可分为两类:一类是把两个表示实体结合在一起,或者把它们分开,这称为会话管理服务;另一类是控制两个表示实体间的数据交换过程。在半双工情况下,会话层提供一种数据权标来控制某一方何时有权发送数据。会话层还提供在数据流中插入同步点的机制,使得数据传输因网络故障而中断后,可以不必从头开始而仅重传最近一个同步点以后的数据。
6)表示层
表示层主要解决两个系统所交换信息的语法和语义问题,负责转换、压缩和加密。表示层与会话层和应用层之间的关系如图1.25所示。
图1.24 会话层与传输层和表示层之间的关系
图1.25 表示层与会话层和应用层之间的关系
表示层将欲交换的数据从适合于某一用户的抽象语法转换为适合于OSI系统内部使用的传送语法,即提供格式化的表示和转换数据服务。值得注意的是,表示层以下各层只关心从源端结点到目的结点可靠地比特传送,而表示层关心的是所传送信息的语法。
表示层服务的一个典型例子,是用一种大家一致选定的标准方法对数据进行编码。大多数用户程序之间并非交换随机的比特,而是交换诸如人名、日期、货币数量之类的信息。这些信息对象用字符串、整型数、浮点数的形式,以及由几种简单类型组成的数据结构来表示。网络上的计算机可能采用不同的数据表示,所以需要在数据传输时进行数据格式的转换。例如,在不同的机器上常用不同的代码来表示字符串(ASCII和EBCDIC)、整型数(二进制反码或补码)以及机器字的不同字节顺序等。为了让采用不同数据表示法的计算机之间能够相互通信并交换数据,在通信过程中使用抽象的数据结构(如抽象语法表示ASN.1)来表示传送的数据,而在机器内部仍然采用各自的标准编码。管理这些抽象数据结构,并在发送端将机器的内部编码转换为适合网络传输的传送语法以及在接收端做相反的转换等工作都由表示层来完成。
另外,表示层还涉及数据压缩和解压、数据加密和解密等工作。例如,在Internet上查询银行账户,就需要使用一种安全连接。账户数据在发送前被加密;在网络的另一端,表示层再对所接收到的数据进行解密。
7)应用层
应用层是ISO/OSI-RM的最高层,直接向用户(即应用进程)提供服务,负责用户信息的语义表示,并提供网络与应用软件(程序)之间的接口服务。应用层是用户使用OSI环境的唯一窗口。应用层与表示层和用户之间的关系如图1.26所示。
图1.26 应用层与表示层和用户之间的关系
应用层是面向用户的层,它确定应用进程之间通信的性质,负责信息的语义表示。注意,术语“应用层”并不是指运行在网络上的某个特定应用程序,如Microsoft Word,而是提供用户应用进程的接口,进行信息的语义表示。在图1.26中,只画出了多种应用服务中的报文处理服务(X.400)、名录服务(X.500)、文件传输和存取管理(FTAM)3种。
在ISO/OSI-RM的7个层次中,应用层是最复杂的,包含人们普遍需要的许多协议。例如,PC用户使用仿真终端软件通过网络仿真某个远程主机的终端并使用该远程主机的资源。这个仿真终端程序使用虚拟终端协议将键盘输入的数据传送到主机的操作系统,并接收显示于屏幕的数据。由于每个应用有不同的要求,应用层的协议集在ISO/OSI-RM中并没有定义,但是有些确定的应用层协议,包括虚拟终端、文件传输和电子邮件等都可作为标准化的候选。
1.4.3 TCP/IP协议体系
TCP/IP协议体系结构常简称为TCP/IP协议,也称为TCP/IP模型,它是一个计算机网络工业标准,在计算机网络体系结构中具有非常重要的地位。TCP/IP正在支撑着Internet(互联网)的正常运转。
1.TCP/IP协议体系结构
正如介绍ISO/OSI-RM时所述,协议分层模型包括层次结构和各层功能描述两个部分。与ISO/OSI-RM不同的是,TCP/IP体系结构是从早期的分组交换网络(ARPANet)发展而来,没有正式的协议模型。然而,根据已经开发的协议标准,可以将TCP/IP协议体系归纳成一个相对独立的四层模型,如图1.27所示。由该图可以看出TCP/IP的协议体系结构及其与ISO/OSI-RM的对应关系,以及TCP/IP协议体系对应的物理网络和协议。
图1.27 ISO/OSI-RM和TCP/IP体系结构的对比
由图1.27可知,TCP/IP协议体系是由一些交互性模块组成的分层次的协议体系结构,其中的每个模块都提供特定的功能。术语“分层次的协议”是指每一个上层协议由一个或多个下层协议支持。在网络接口层有多种由底层网络定义的协议,如以太网、FDDI、X.25等,这些协议由硬件(如网络适配器)和软件(如网络设备驱动程序)共同实现。在互联网络层有一个核心协议(IP),这个协议支持多种网络技术互连为一个逻辑网络;这一层还有一些其他的支撑数据传输的协议。在传输层定义了3个协议:传输控制协议(TCP)、用户数据报协议(UDP)和流控制传输协议(Stream Control Transmission Protocol,SCTP);其中,TCP和UDP为应用程序提供可选逻辑信道:TCP提供可靠的字节流信道,UDP提供不可靠的数据报传送信道;SCTP是一个对新应用(如IP电话)提供支持的新协议,它综合了UDP和TCP协议的优点。在应用层定义了许多协议,可以认为它组合了ISO/OSI-RM的应用层和表示层,并包括ISO/OSI-RM会话层的部分功能。
与ISO/OSI-RM相比,TCP/IP协议主要有以下三大优点。
(1)TCP/IP协议体系结构的层次观念并不严格,在TCP/IP中(N)实体可以越过(N-1)实体而调用(N-2)实体,使(N-2)实体直接提供服务。例如,应用层可以直接运行在互联网络层之上。
(2)TCP/IP协议体系的顶层和低层的协议丰富,而中间两层的协议较少。IP作为体系结构的焦点,它定义一种在各种网络中交换分组的共同方法。在IP层之上可以有TCP、UDP等传输协议,每个协议为应用程序提供一种不同的信道抽象。在IP层之下,这个体系结构允许很多不同的网络技术,从以太网、FDDI到ATM以及单一的点到点链路都是允许的。
(3)TCP/IP使跨平台或异构网络互联成为可能。例如,一个Windows NT网络可以支持UNIX和Macintosh工作站互联,也可以支持UNIX工作站,网络或Macintosh组成的异构网络互联。
2.TCP/IP协议体系各层功能简介
1)网络接口层
网络接口层位于TCP/IP协议体系的最低层,相当于ISO/OSI-RM的物理层及数据链路层,在这一层传送的数据称为帧。该层负责接收从IP层交来的IP数据报并将IP数据报通过低层物理网络发送出去,或者从低层物理网络上接收物理帧,抽出IP数据报,交给IP层。事实上,TCP/IP协议体系并未定义这一层的协议,换言之,它可以架构在多种网络接口之上,如Ethernet、Token Ring和FDDI等,只需TCP/IP协议体系提供这些接口的地址映射即可。
2)互联网络层
互联网络层对应于ISO/OSI-RM的网络层,负责在多个网络间通过网关/路由器传输信息。它的主要功能包括以下三个方面。
(1)处理来自传输层的分组发送请求,将分组装入IP数据报,填充报头,选择去往目的结点的路径,然后将数据报发往适当的网络接口。
(2)处理输入数据报。首先检查数据报的合法性,然后进行路由选择,假如该数据报已到达目的结点(本机),则去掉报头,将IP报文的数据部分交给相应的传输层协议;假如该数据报尚未到达目的结点,则转发该数据报。
(3)处理ICMP报文,即处理网络的路由选择、流量控制和拥塞控制等问题。
互联网络层的主要协议包括网际互联协议(IP)、Internet控制报文协议(Internet Control Message Protocol,ICMP)、地址解析协议(Address Resolution Protocol,ARP)和逆向地址解析协议(Reverse Address Resolution Protocol,RARP)。
3)传输层
TCP/IP协议体系中传输层的作用与ISO/OSI-RM中传输层的作用一样,即在源结点和目的结点的两个进程实体之间提供可靠的端到端的数据传输。为保证数据传输的可靠性,传输层协议规定接收端必须发回确认;若分组丢失,必须重新发送。另外,传输层还要解决不同应用进程的标识以及校验等问题。传输层以上各层不再关心信息传输问题,所以传输层是TCP/IP协议体系中最重要的一层。
TCP/IP传输层提供两种基本类型的服务:第一种服务是传输控制协议(TCP),它为字节流提供面向连接的可靠传输;第二种是用户数据报协议(UDP),这是一个不可靠的、无连接的传输层协议,它可为各个数据报提供尽力而为的无连接传输服务。UDP协议常用于那些对可靠性要求不高,但要求网络延迟较小的场合,如语音和视频数据的传送。
随着计算机网络和电信网络的融合,必然需要在计算机网络上传输电话信令。现今的计算机网络大部分业务是通过TCP或UDP来传输的,但都无法满足在计算机网络中传输电话信令的要求。为实现计算机网络与电信网络的互通,IETF设计并制定了流控制传输协议(SCTP)。SCTP处于SCTP用户应用层与网络层之间,主要用于在计算机网络中传输PSTN的信令消息,同时,也可以用于其他信息在计算机网络中的传输。SCTP运用“关联”(Association)定义交换信息的两个对等SCTP用户间的协议状态。
4)应用层
应用层是TCP/IP协议体系结构中的最高层,确定进程之间通信的性质以满足用户需要,直接为用户的应用进程提供服务。应用层包括所有的高层协议。早期的应用层有远程登录协议(Telnet)、文件传输协议(File Transfer Protocol,FTP)和简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)等。远程登录协议允许用户登录到远程系统并访问远程系统的资源。文件传输协议提供在两台机器之间进行有效的数据传送手段。简单邮件传输协议最初只是文件传输的一种类型,后来慢慢发展成为一种特定的应用协议。近年来出现了很多新的应用层协议:如用于将网络中的主机名字地址映射成网络地址的域名服务DNS;用于传输网络新闻的NNTP(Network News Transfer Protocol)和用于从万维网(WWW)上读取页面信息的超文本传输协议(Hyper Text Transfer Protocol,HTTP)等。
TCP/IP协议体系的应用层涵盖了ISO/OSI-RM的应用层、表示层和会话层功能,事实上TCP/IP并未定义表示层及会话层的相关协议,相关功能由应用程序自行处理。
3.TCP/IP协议体系的特点
1)TCP/IP协议体系的两大边界
在TCP/IP协议层次型模型中有两大重要边界:一个是地址边界,它将IP逻辑地址与底层网络的硬件地址分开;另一个是操作系统边界,它将网络应用与协议软件分开,如图1.28所示。
图1.28 TCP/IP协议体系的两大边界
TCP/IP分层模型中的地址边界位于网络互连层与网络接口层之间,网络互连层及其以上各层均使用IP地址,网络接口层则使用各种物理网络的物理地址,即底层网络的硬件地址。TCP/IP提供在两种地址之间进行映射的功能。划分地址边界的目的是为了屏蔽底层物理网络的地址细节,以便使互联网软件在地址问题上显得简单而清晰,易于实现和理解。TCP/IP的不同实现,可能会使得TCP/IP软件在操作系统内的位置有所不同。影响操作系统边界划分的最重要的因素是协议的效率问题,在操作系统内部实现的协议软件,其数据传递的效率明显要高。
2)无连接和面向连接服务的结合
在TCP/IP协议体系中,IP层作为通信子网的最高层,提供无连接的数据报传输机制,但IP协议并不能保证IP报文传输的可靠性。在TCP/IP网络中,IP协议对数据进行“尽力传递”,即只管将报文尽力传送到目的主机,无论传输正确与否,不做验证,不发确认,也不保证报文的顺序。TCP/IP的可靠性体现在传输层,传输层协议之一的TCP协议提供面向连接的服务。因为传输层是端到端的,所以TCP/IP的可靠性被称为端到端可靠性。端到端可靠性思想有两个优点:第一,面向连接协议的复杂性比无连接协议要高出许多,而TCP/IP只在TCP层提供面向连接的服务,比若干层同时向用户提供连接服务的协议族要显得简单;第二,TCP/IP的效率相当高,尤其是当低层物理网络很可靠时。因为只有TCP层为保证可靠性传输做必要的工作,不像ISO/OSI-RM中需要多层来保证可靠传输。
3)包容性和对等性
TCP/IP协议体系是为包容各种物理网络技术而设计的,这种包容性主要体现在TCP/IP协议的沙漏形体系结构中,如图1.29所示。这种沙漏形体系结构使得TCP/IP协议的功能非常强大,不同网络上IP协议的运行不受底层网络技术(如各种局域网和广域网)的影响。TCP/IP的重要思想之一就是通过IP将各种底层网络技术统一起来,达到屏蔽底层细节,提供统一平台的目的。在这个平台上可以进行各种应用软件的开发。由于允许多种网络技术共存,可使Internet提供普遍适用的连接。
图1.29 TCP/IP协议的沙漏形结构
TCP/IP的另一个重要思想是:任何一个能传输数据报文的通信系统,均可被看做一个独立的物理网络,这些通信系统均受到网络互联协议的平等对待。大到WAN小到LAN,甚至两台机器之间的点到点专线以及拨号电话线路都可以认为是网络,这就是互联网的网络对等性。网络对等性为协议设计者提供了极大方便,简化了对异构网的处理。可见,TCP/IP完全撇开了底层物理网络的特性,是一个高度抽象的概念。正是这一抽象的概念,为TCP/IP赋予了巨大的灵活性和通用性。
1.4.4 基于OSI的实用参考模型
TCP/IP协议体系与ISO/OSI-RM有许多相似之处。例如,两者都包含能提供可靠的端到端传输服务的传输层,而在传输层之上是面向用户应用的传输服务。尽管两种体系结构基本类似,但是它们还是有许多不同之处。
1.ISO/OSI-RM与TCP/IP体系结构的异同
在ISO/OSI-RM中有3个基本概念:服务、接口和协议。每一层都为其上层提供服务,服务的概念描述了该层所做的工作,但并不涉及服务的实现以及上层实体如何访问的问题。层间接口描述了高层实体如何访问低层实体提供的服务。接口定义了服务访问所需的参数和期望的结果。接口也不涉及某层实体的内部机制,而只有不同机器同层实体使用的对等进程才涉及层实体的实现问题。只要能够完成它必须提供的功能,对等层之间可以采用任何协议。如果愿意,对等层实体可以任意更换协议而不影响高层软件。这种思想也非常符合面向对象的程序设计思想。
TCP/IP模型并不十分清晰地区分服务、接口和协议等概念。相比TCP/IP模型,ISO/OSI-RM中的协议具有更好的隐蔽性并更容易被替换。ISO/OSI-RM是在其协议被开发之前设计出来的,这意味着ISO/OSI-RM并不是基于某个特定的协议集而设计的,因而它更具有通用性。但从另一个角度来看,这也意味着ISO/OSI-RM在协议实现方面存在某些不足。而TCP/IP模型恰好相反,先有协议,后有模型,模型只是对现有协议的描述,因而协议与模型非常吻合。但TCP/IP模型不适合其他协议栈,因此,在描述其他非TCP/IP网络时用处不大。
在具体表现形式上,显而易见的差异是两种模型的层数不一样:ISO/OSI-RM有7层,而TCP/IP模型只有4层。二者都有网络层、传输层和应用层,但其他层是不同的。二者的另外一个区别是服务类型。ISO/OSI-RM的网络层提供面向连接和无连接两种服务,而传输层只提供面向连接服务。TCP/IP模型在网络层只提供无连接服务,但在传输层却提供面向连接和无连接两种服务。使用ISO/OSI-RM可以很好地讨论计算机网络,但是OSI协议并未流行。而TCP/IP模型则正好相反,其模型本身实际上并不存在,只是对现存协议的一个归纳和总结。然而,TCP/IP协议却被广泛使用,原因是TCP/IP协议注重实效。另外,TCP/IP协议与流行的UNIX操作系统密切结合,这也是TCP/IP取得巨大成功的原因。
2.五层实用参考模型
鉴于ISO/OSI-RM与TCP/IP各自的优点和不足,为便于阐明计算机网络原理,往往采取折中的办法,即综合ISO/OSI-RM和TCP/IP的优点,采用一种实用的五层参考模型,如图1.30所示。这个模型也是Andrew S.Tanenbaum最早建议的一种层次型参考模型。
图1.30 实用参考模型
显然,图1.30所示的实用参考模型是ISO/OSI-RM与TCP/IP协议体系的混合产物,也可看做是ISO/OSI-RM的修正模型。考虑到TCP/IP协议体系的实用性,本书将使用这个模型作为网络体系框架,讨论计算机网络的原理与技术,并侧重讨论TCP/IP协议体系。
3.五层实用参考模型的数据传输过程
垂直方向的结构层次是当今普遍认可的数据处理流程,每一层都有与其相邻的层间接口。为了通信,两个系统必须在各层之间传递数据、指令和地址等信息。虽然通信流程垂直通过各层,但每一层都在逻辑上能够直接与通信对端计算机系统的相应层直接通信。为创建这种层间逻辑连接,发送端的每一层协议都要在数据报文前增加报文头。该报文头只能被其他计算机的相应层识别和使用。接收端的协议层删去报文头,每一层都删去该层负责的报文头,最后将数据传向应用层。如图1.31所示,描述了层次型五层结构模型中数据的实际传输过程。在图1.31中,L5数据指第五层(应用层)的数据,L4数据指第四层(传输层)的数据,依此类推,并在此后相关章节内容中均表示该含义。发送进程送给接收进程的数据,实际上是经过发送端各层从上到下传递到传输媒体。整个过程从第五层(应用层)开始,然后一层一层地向下移动。
图1.31 数据的实际传输过程
在发送端的从上到下逐层传递的过程中,每层都要加上适当的控制信息,即图1.31中称为报头的H4、H3和H2。在第二层同时还要加上一个尾部信息T2。当格式化的数据单元经过物理层(第一层)时,成为由0和1组成的数据比特流,然后再转换为电信号在物理传输媒体上传输至接收端。
接收端在向上传递时过程恰好相反,要逐层剥去发送端相应层加上的控制信息。信号到达目的地后,传入第一层并被重新转换成比特形式。然后,数据单元就从下到上逐层传递,最后到达接收进程。因接收端的某一层不会收到底下各层的控制信息,而高层的控制信息对于它来说又只是透明的数据,所以它只阅读和去除本层的控制信息,并进行相应的协议操作。发送端和接收端的对等实体看到的信息是相同的,就好像这些信息通过虚通信直接传给了对方一样。当数据到达第五层时,报文又回到应用层的格式,并可以为接收者使用。
1.4.5 计算机网络标准及RFC文档
计算机网络的标准化是发展计算机网络的一项关键措施,除了网络通信协议标准,还有许多其他标准,如应用系统编程接口标准、数据库接口标准、计算机操作系统接口标准以及用户接口标准等。若没有一套全球共同遵守的标准,计算机网络将无法实现。实际上,计算机网络的发展就是伴随着标准化工作而发展的。计算机网络的标准化在其发展中起到了非常重要的推动作用。
1.网络标准
网络标准对于通信系统极为重要,因为通信网络的价值很大程度上取决于它所能影响的用户群。早在20世纪70年代后期,计算机网络的发展就曾出现过危机,原因就在于当时的网络体系结构和协议标准不统一,限制了计算机网络自身的发展、普及和应用。这也逐渐促使世界著名的标准化组织与大公司、大企业达成共识:网络体系结构与网络协议必须走国际标准化的道路。网络标准是由标准化组织、论坛及政府管理机构共同制定的。为了规范通信技术的各个不同方面,出现了数以百计的网络标准。
所谓标准是指一组规定的规则、条件或要求,如名词术语的定义、部件的分类,以及材料、性能或操作规范和规程的描述等。这里所说的标准是指网络产品的制造者和服务者应遵循的一组技术规范。标准是最基本的协定,其作用范围可以是整个行业、一个国家,也可以是世界范围的,它允许不同厂商制造的网络设备可以实现互操作。标准提供了框架,用以指导与网络发展相关的各种商业、工业和政府组织的各种活动。
目前,可把计算机网络标准划分为两种类型。第一种称为事实标准(De Facto Standard),即被广泛使用而产生的标准。事实标准是无计划而客观形成的,也就是在发展交流中逐渐成为人们共同遵守的法则,只有遵循它们的产品才会有广阔的市场。例如,很多IBM的产品就已成了事实标准,基于Intel微处理器和Microsoft Windows操作系统的个人计算机也是基于事实标准的例证之一。第二种标准是法定标准,是由那些得到国家或国际公认的权威标准化机构制定的正式、合法的标准。想要建立标准的人需向标准机构提交申请,等候考察。通常,如果其建议确有优点并能被广泛接受,标准机构将会对它提出进一步的修改意见,并送返申请人加以改进。经过几轮反复磋商后,标准机构做出决定,或加以采纳,或予以拒绝。一经通过,标准就成为约束厂商设计和生产新产品的规范。
网络标准旨在为生产厂商和用户创建和维护一个开放、竞争的环境,并确保计算机网络和数据通信技术的互操作和互联互通性。因此,计算机网络标准化具有如下两大优点。
(1)可以确保符合标准的设备与部件能够迅速占领市场,从而降低生产成本,提高产品质量,使用户受益。
(2)标准化允许不同厂商生产的产品能够相互通用,使用户对设备的选择有更大的自由度。
2.RFC文档
Internet标准是以称为请求评注(Request for Comment,RFC)的文档形式发布的。RFC最初是关于解决与Internet相关的特定问题的书面评注(http://www.ietf.org)。在发布一个RFC之前,它首先应成为Internet草案,在被正式作为RFC公布之前,使Internet团体可以阅读和评论这个已提议的Internet相关文档。Internet草案被认为是临时的文档,只有6个月的保存期限,因此它们并不存档。为了促进传播过程以及维护开放性的精髓,RFC Internet草案可以在网址为http://www.rfc-editor.org的网站上在线获得。一个RFC文件在成为官方标准之前一般至少要经历如下四个阶段[RFC2026]。
(1)Internet草案(Internet Draft)。此时还不是RFC文档。
(2)建议标准(Proposed Standard)。可供正式发布的正式RFC文档。
(3)草案标准(Draft Standard)。
(4)Internet标准(Internet Standard)。
除了上述几种RFC文档,还有历史的、实验的和提供信息的三种RFC文档。