我们把计算机网络的各层及其协议的集合称为网络的体系结构(Architecture)。计算机网络的体系结构就是这个计算机网络及其所应完成的功能的精确定义,是计算机网络中的层次、各层协议及层间接口的集合。
计算机网络的体系结构通常具有可分层的特性,它将复杂的大系统分成若干较容易实现的层次。分层的基本原则如下:
1)每层都实现一种相对独立的功能,降低大系统的复杂度。
2)各层之间界面自然清晰,易于理解,相互交流尽可能少。
3)各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术来实现。
4)保持下层对上层的独立性,上层单向使用下层提供的服务。
5)整个分层结构应能促进标准化工作。
在计算机网络分层结构中,第n层中的活动元素通常称为n层实体。实体指在任何可发生或接受西悉尼的硬件或软件进程,通常是一个特定的软件模块。不同机器上的同一层称为对等层,同一层的实体称为对等实体。n层实体实现的服务为n+1层所利用。在这种情况下,n层被称为服务提供者,n+1层则服务于用户。
协议是规则的集合。为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(Network Protocol),它是控制两个(或多个)对等实体进行通信的规则的集合,是水平的。网络协议简称为协议。
协议由语法、语义和同步三部分组成。语法规定了数据传输的格式;语义规定了要完成的功能,即需要发出哪种控制信息、完成哪种动作、做出哪种应答;同步规定了执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。
接口是同一结点内相邻的两层间交换信息的连接点,是一个系统内部的规定。每层只能为紧邻的层次之间定义接口,不能跨层定义接口。
在典型接口上,同一结点的相邻两层的实体通过服务访问点(Service Access Point,SAP)进行交互,服务是通过SAP提供给上层使用的,第n层的SAP就是第n+1层可以访问第n层服务的地方。
服务是指下层为紧邻的上层提供的功能调用,它是垂直的。对等实体在协议的控制下,使得本层能为上一层提供服务,但要实现本层协议还需要使用下一层所提供的服务。
上层使用下层所提供的服务时,必须与下层交换一些命令,这些命令在OSI中被定义为服务原语。OSI将原语划分为4类:
1)请求(Request)。 由服务用户发往服务提供者,请求完成某项工作。
2)指示(Indication)。 由服务提供者发往服务用户,指示用户做某件事情。
3)响应(Response)。 由服务用户发往服务提供者,作为对指示的响应。
4)证实(Confirmation)。 由服务提供者发往服务用户,作为对请求的证实。
这4类原语用于不同的功能,如建立连接、传输数据和断开连接等。有应答服务包括全部4类原语,而无应答服务则只有请求和指示两类原语。
注意:协议和服务在概念上是不一样的。首先,只有本层协议的实现才能保证向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议,即下面的协议对上层的服务用户是透明的。其次,协议是“水平的”,即协议是控制对等实体之间通信的规则;但服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。另外,并非在一层内完成的全部功能都称为服务,只有那些能够被高一层实体 “看得见”的功能才称为服务。协议、接口、服务三者之间的关系下图所示。
计算机网络提供的服务可按以下三种方式分类。
(1)面向连接服务与无连接服务
在面向连接服务中,通信前双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和所占用的资源。因此这种服务可以分为连接建立、数据传输和连接释放三个阶段。例如TCP就是一种面向连接服务的协议。
在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可直接发送,把每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输。这是一种不可靠的服务。这种服务常被描述为“尽最大努力交付”(Best-Effort-Delivery),它并不保证通信的可靠性。例如IP、UDP就是一种无连接服务的协议。
(2)可靠服务和不可靠服务
可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。
不可靠服务是指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传送到目的地,是一种尽力而为的服务。对于提供不可靠服务的网络,其网络的正确性、可靠性要由应用或用户来保障。例如,用户收到信息后要判断信息的正确性,如果不正确,那么用户要把出错信息报告给信息的发送者,以便发送者采取纠正措施。通过用户的这些措施,可以把不可靠的服务变成可靠的服务。
注意:在一层内完成的全部功能并非都称之为服务,只有那些能够被高一层实体“看得见”的功能才能称为服务。
(3)有应答服务和无应答服务
有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。所发送的应答既可以是肯定应答,也可以是否定应答,通常在接收到的数据有错误时发送否定应答。例如,文件传输服务就是一种有应答服务。
无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。例如,对于WWW服务,客户端收到服务器发送的页面文件后不给出应答。
国际标准化组织(ISO)提出的网络体系结构模型,称为开放系统互连参考模型(OSI/RM),简称为OSI参考模型。OSI共有7层,自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。低三层称为通信子网,它是为了联网而附加的通信设备,完成数据的传输功能;高三层称为资源子网,它相当于计算机系统,完成数据的处理功能;传输层承上启下。
OSI层次结构如下图所示。
注意:传输信息所利用的一些物理媒体, 如双绞线、光缆、无线信道等,并不在物理层协议之内,而在物理层协议下面。因此有人把物理媒体当作第0层。
注意:数据链路层提供的是点到点的通信,传输层提供的是端到端的通信,两者不同。通俗地说,点到点可以理解为主机到主机之间的通信,一个点是指一个硬件地址或IP地址,网络中参与通信的主机是通过硬件地址或IP地址标识的;端到端的通信是指运行在不同主机内的两个进程之间的通信,一个进程由一个端口来标识,所以称端到端通信。
ARPA在研究ARPAnet时提出了TCP/IP 模型,模型从低到高依次为网络接口层(对应OSI参考模型中的物理层和数据链路层)、网际层、传输层和应用层(对应OSI参考模型中的会话层、表示层和应用层)。TCP/IP 由于得到广泛应用而成为事实上的国际标准。
TCP/IP 的层次结构及各层的主要协议如下图所示。
网络接口层的功能类似于OSI的物理层和数据链路层。它表示与物理网络的接口,但实际上TCP/IP本身并未真正描述这一部分,只是指出主机必须使用某种协议与网络连接,以便在其上传递IP分组。网络接口层的作用是从主机或结点接收IP分组,并把它们发送到指定的物理网络上。
网际层(主机-主机)是TCP/IP体系结构的关键部分。它和OSI网络层在功能上非常相似。网际层将分组发往任何网络,并为之独立地选择合适的路由,但它不保证各个分组有序地到达,各个分组的有序交付由高层负责。网际层定义了标准的分组格式和协议,即IP。
传输层(应用-应用或进程-进程)的功能同样和OSI中的传输层类似,即使得发送端和目的端主机上的对等实体进行会话。传输层主要使用以下两种协议:
1)传输控制协议(Transmission Control Protocol, TCP)。它是面向连接的,数据传输的单位
是报文段,能够提供可靠的交付。
2)用户数据报协议(User Datagram Protocol, UDP)。它是无连接的,数据传输的单位是用
户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付”。
应用层(用户-用户)包含所有的高层协议,如虚拟终端协议(Telnet)、 文件传输协议(FTP)、域名解析服务(DNS)、 电子邮件协议(SMTP)和超文本传输协议(HTTP)。
由上图可以看出,IP 协议是因特网中的核心协议; TCP/IP 可以为各式各样的应用提供服务(所谓的everything over IP),同时TCP/IP也允许IP协议在由各种网络构成的互联网上运行(所谓的IP over everything)。正因为如此,因特网才会发展到今天的规模。
TCP/IP模型与OSI参考模型有许多相似之处。
首先,二者都采取分层的体系结构,将庞大且复杂的问题划分为若干较容易处理的、范围较小的问题,而且分层的功能也大体相似。其次,二者都是基于独立的协议栈的概念。最后,二者都可以解决异构网络的互联,实现世界上不同厂家生产的计算机之间的通信。
它们之间的比较如下图所示。
两个模型除具有这些基本的相似之处外,也有很多差别。
第一,OSI参考模型的最大贡献就是精确地定义了三个主要概念:服务、协议和接口,这与现代的面向对象程序设计思想非常吻合。而TCP/IP模型在这三个概念上却没有明确区分,不符 合软件工程的思想。
第二,OSI参考模型产生在协议发明之前,没有偏向于任何特定的协议,通用性良好。但设计者在协议方面没有太多经验,不知道把哪些功能放到哪一层更好。TCP/IP模型正好相反,首先出现的是协议,模型实际上是对已有协议的描述,因此不会出现协议不能匹配模型的情况,但该模型不适合于任何其他非TCP/IP的协议栈。
第三,TCP/IP模型在设计之初就考虑到了多种异构网的互联问题,并将网际协议(IP)作为一个单独的重要层次。OSI参考模型最初只考虑到用一种标准的公用数据网将各种不同的系统互联。OSI参考模型认识到网际协议IP的重要性后,只好在网络层中划分出一个子层来完成类似于 TCP/IP模型中的IP的功能。
第四,OSI参考模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信。而TCP/IP模型认为可靠性是端到端的问题,因此它在网际层仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式。
无论是OSI参考模型还是TCP/IP模型,都不是完美的,对二者的讨论和批评都很多。OSI参考模型的设计者从工作的开始,就试图建立一个全世界的计算机网络都要遵循的统一标准。从技术角度来看,他们希望追求一种完美的理想状态,这也导致基于OSI参考模型的软件效率极低。OSI参考模型缺乏市场与商业动力,结构复杂,实现周期长,运行效率低,这是它未能达到预期 目标的重要原因。
在学习计算机网络时,我们综合OSI和TCP/IP的优点,采用如下图所示的五层协议的体系结构,包括物理层、数据链路层、网络层、传输层和应用层。
下面简单介绍使用通信协议栈进行通信的结点的数据传输过程。
每个协议栈的最顶端都是一个面向用户的接口,下面各层是为通信服务的协议。用户传输一个数据报时,通常给出用户能够理解的自然语言,然后通过应用层将自然语言会转化为用于通信的通信数据。通信数据到达传输层,作为传输层的数据部分(传输层SDU),加上传输层的控制信息(传输层PCI),组成传输层的PDU,然后交到网络层,传输层的PDU下放到网络层后,就成为网络层的SDU,然后加上
网络层的PCI,又组成了网络层的PDU,下放到数据链路层,就这样层层下放,层层包裹,最后形成的数据报通过通信线路传输,到达接收方结点协议栈,接收方再逆向地逐层把“包裹”拆开,然后把收到的数据提交给用户,如下图所示。