1.4 计算机网络体系结构
1.4.1 网络体系结构
计算机网络系统是一个非常复杂的系统,网络通信控制也涉及许多复杂的技术问题。计算机网络系统的设计采用结构化方法,它把一个较为复杂的系统分解为若干个容易处理的子系统,然后逐个加以解决,现代计算机网络都采用了层次化体系结构。分层及其协议的集合称为计算机网络体系结构CNA(Computer Network Architecture),它是关于计算机网络系统应设置多少层,每个层能提供哪些功能的精确定义,以及层之间的关系和如何联系在一起的。
1.分层结构的优点
分层结构有如下优点:
(1)由于系统被分解为相对简单的若干层,因此易于实现和维护。
(2)各层功能明确,相对独立,下层为上层提供服务,上层通过接口调用下层功能。而不必关心下层所提供服务的具体实现细节,因此各层都可以选择最合适的实现技术。
(3)当某一层的功能需要更新或被替代时,只要它和上、下层的接口服务关系不变,则相邻层都不受影响,因此灵活性好,这有利于技术进步和模型的改进。
(4)分层结构易于交流、理解和标准化。
2.分层原则
网络体系结构分层时有以下几个原则:层数要适中,过多则结构过于复杂,各层组装困难,而过少则层间功能划分不明确,多种功能在同一层中,造成每层协议复杂;层间接口要清晰,跨越接口的信息量尽可能要少。另外,划分时把应用程序和通信管理程序分开,还需要将通信管理程序分为若干模块,把专用的通信接口转变为公用的、标准化的通信接口,这样能使网络系统的构建更加简单。
3.常见的网络体系结构
20 世纪70 年代以来,一些计算机公司纷纷研究各自的网络,并提出各自的网络体系结构。较著名的有IBM公司在1974 年公布的分布式的系统网络体系结构SNA(System Network Architecture),美国DEC公司在1975 年公布的网络体系结构DNA(Distributing Network Architecture),以后,又不断出现了一些按照不同概念设计的网络,有力地推动了计算机网络的发展和广泛应用。但各种不同体系结构划分的层次都不相同,相互之间互不兼容,不能实现开放互联。下面三个标准得到了公认和应用:
(1)OSI/RM。为层次的划分建立标准的是国际标准化组织ISO的开放系统互联参考模型OSI/RM(Open System Interconnection Basic Reference Model),OSI/RM分层时除了遵循上述原则外,还考虑了已有网络体系结构及它们的经验。OSI/RM结构严密,理论性强,学术价值高,各种网络都参考它,它是局域网和广域网上一套普遍适用的规范集合。
(2)TCP/IP。Internet标准化组织所制定的参考模型TCP/IP(Reference Model),相对于OSI/RM来说更为简单,实用性强,现在已成为事实上的工业标准,现代计算机网络大多遵循这一标准。
(3)IEEE 802。IEEE 802标准是专门从事局域网的标准化工作,学习局域网必须学习IEEE 802标准。
本书主要以这三种结构模型为主线,介绍计算机网络技术。
1.4.2 OSI/RM参考模型
1.OSI/RM参考模型
OSI/RM已经被许多厂商所接受,成为指导网络发展方向的标准。“开放系统互联”的含义是任何两个不同的网络系统,只要遵循OSI标准是相互开放的,那么就可以进行互联。OSI/RM只给出了计算机网络系统的一些原则性说明,并不是一个具体的网络。它将整个网络的功能划分成七个层次,如图1.6 所示。七层模型从下到上分别为物理层(Physical Layer,PL)、数据链路层(Data Link Layer,DLL)、网络层(Network Layer,NL)、传输层(Transport Layer,TL)、会话层(Session Layer,SL)、表示层(Presentation Layer,PL)和应用层(Application Layer,AL)。层与层之间的联系是通过各层之间的接口进行的,上层通过接口向下层提出服务请求,而下层通过接口向上层提供服务。两个计算机通过网络进行通信时,除了物理层,其余各对等层之间均不存在直接的通信关系,而是通过各对等层之间的通信协议来进行通信的,只有两端的物理层之间通过传输介质才实现真正的数据通信。最高层是应用层,它面向用户提供应用服务。
图1.6 OSI七层参考模型
注意:会话层也称为会晤层或对话层,传输层也称为运输层或传输层。
七层模型中,低三层属于通信子网的范畴,它主要通过硬件来实现,高三层协议为用户提供网络服务,属于资源子网的范畴,主要由软件来实现。传输层的作用是屏蔽具体通信子网的通信细节,使得高层不关心通信过程而只进行信息的处理。只有在主机中才可能需要包含所有七层的功能,而在通信子网中一般只需要低三层甚至只要低两层的功能就可以了。
需要强调的是,OSI/RM并非具体网络实现的描述,它只是一个为制定标准而提供的概念性框架。网络中的设备只有当与OSI或有关协议相一致时才能互联。
2.OSI/RM各层功能简介
1)物理层
物理层的作用是传输原始的二进制比特流。它建立在通信介质的基础上,实现系统和通信介质的物理接口。需要明确的是,物理层并不是指物理设备或传输介质,而是有关物理设备通过传输介质进行互联的描述和规定。
物理层传输的单位为二进制位,它利用通信介质机械、电气性能及通信规则和协议,在数据终端设备(DTE)和数据通信设备(DCE)之间,实现物理链路的建立、保持和拆除功能,在两个或多个节点互联的链路上进行发送端到接收端(或多个接收端)数据的传输。物理层上执行的一些协议功能包括:建立和终止呼叫、控制半双工信道上的信道方向、错误控制、确定应该用多少伏电压表示“1”和“0”、信道是全双工还是半双工、连接口有多少个插脚及每一根插脚的用途等。
2)数据链路层
数据链路层的传输单位是帧,它在网络两点之间的链路上,控制信息帧的传输,并进行差错检测。帧是一系列比特组成的信息单元,也称数据包。帧中包含源、目标地址和检错码等信息。数据链路层利用物理层所建立的链路,将报文从一个节点传输至另一个节点。为使网络层无须了解物理层的特征而获得可靠的传输,数据链路层具有差错检测和校正功能,它的功能是依靠其协议实现。根据数据信息的基本单位不同。数据链路层的协议可分为面向字符型的传输协议和面向位型的传输协议两种。
数据链路层主要完成数据链路的建立、维持和释放、流量控制、差错控制等功能。
局域网中,网络协议只包括物理层、数据链路层。由于局域网没有路由选择问题,任何两节点之间都可用一条直接链路连接,所以不需要单独设置网络层,而是将寻址、排序、流量控制、差错控制等功能放在数据链路层实现。
3)网络层
网络层的传输单位是数据包(分组),它负责控制通信子网的工作,即控制报文分组的传输。注意,网络层考虑的是源和目标节点传输数据时需要经过许多中间节点的情况,两个节点之间到达的路径可能有很多,因此包括路由选择、流量控制、不同网络层协议的网络之间互联等功能。它的特性对高层是透明的,还可以根据传输层的要求选择服务质量,向传输层报告未恢复的差错。
网络层将数据单元分拆成若干小的数据单元,这个过程称为分段。当到达目标节点后(中间可能经过不同的路径),必须重构被分段的数据单元,这个过程称为重组。
4)传输层
传输层通过通信线路在不同机器之间进行程序和数据的交换。负责处理端到端的通信,即端点之间的逻辑连接。所谓端到端是指从一个主机到另一个主机,中间可以有一个或多个交换节点。其主要任务是为两个用户提供建立、维护和拆除传输连接的能力,在系统之间提供可靠透明的数据传输,提供端到端的错误恢复和流量控制。
传输层一个很重要的功能是数据的分段和重组,这里的分段和重组与网络层的分段和重组是两个不同的概念。网络层的分段是数据帧大小的减少,而传输层的分段是指把一个上层数据分割成一个个逻辑片或物理片。也就是说,发送方在传输层将上层交给它的较大的数据进行分段后交给网络层进行独立传输。这样可以实现传输层的流量控制,提高网络资源的利用率。
5)会话层
会话层实现各个进程之间的建立、维护和结束会话连接的功能,包括使用权、差错恢复、会话活动管理等。如网络上用户同时进行传输和接收信息时,此层能决定何时接收或发送信息,以免发生“碰撞”。
6)表示层
表示层是在网络内部实现不同语句格式和编码之间的转换和表示,为应用层提供服务。用户进程可以向表示层送入一个报文流,表示层再把该报文流压缩后送往目的主机,目的主机的表示层把报文解密和扩展后,再交给本主机的用户进程。
7)应用层
应用层由应用程序组成,直接为用户服务,包括文件传输、访问管理、电子邮件服务、查询服务及远程作业登录等。
3.OSI/RM数据封装过程
计算机网络利用协议进行通信,两个网络设备通信时,OSI/RM对等层之间通过附加到该层的信息头来进行通信,数据的封装过程如图1.7 所示。发送进程发送给接收进程的数据时,先经过发送方各层从上到下传输到物理传输媒体,通过物理媒体传输到接收方后,再经过从下到上各层的传递,最后到达接收进程。
在发送方从上到下逐层传递的过程中,每经过一层都对数据附加一个具有各种控制信息的信息头部,即封装,如图1.7 中的H7、H6、…、H1(统称为报头)。而各层的功能正是通过相应层的信息头部来实现的,因此,发送的数据会越来越大,直到物理层构成由“0”或“1”组成的二进制数据流,然后再将其转换为电或光信号在物理媒体上传输至接收方。
图1.7 OSI/RM数据封装过程
接收方在向上传递时过程正好相反,各层要去除发送方在相应层加上的控制信息,并进行相应的协议操作。发送方和接收方的对等实体看到的信息是相同的,就好像这些信息通过虚通道直接传输到了对方一样,同层节点之间通过协议实现对等层之间的通信。
1.4.3 TCP/IP参考模型
1.TCP/IP概述
TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的英文缩写,它主要考虑异种网络之间的互联问题,是网络发展至今最为成功的通信协议。TCP/IP是由一组通信协议所组成的协议簇,而TCP和IP是其中的两个主要协议。1980年,ARPA开始在ARPAnet的所有机器上都使用TCP/IP协议,并以ARPAnet为主干建立了Internet。为推广TCP/IP协议,ARPA以低价出售TCP/IP的使用权,还资助一些机构来开发应用于UNIX操作系统中的TCP/IP协议。美国国家科学基金NSF于1985 年开始涉足TCP/IP协议的研究与开发,到1986年NSF资助建立NSFnet,使全美最主要的科研机构连入NSFnet,NSF资助的所有网络机构均采用TCP/IP协议,1990年NSFnet代替ARPAnet成为Internet的主干。
TCP/IP协议使用范围广,既可用于广域网,又可用于局域网、内部网和外部网等各种网络中,许多单机操作系统和网络操作系统都采用或含有TCP/IP协议。TCP/IP协议已成为事实上的国际标准和工业标准。
2.TCP/IP体系结构
OSI/RM是分层(Layer)结构(层与层之间是调用关系),而TCP/IP协议是分级(Level)结构,它简化了层次设计,分为四级,习惯上称它为四层。自下而上依次是:网络接口层、网际层、传输层和应用层。它和OSI/RM的对应关系见表1.1。
表1.1 OSI/RM和TCP/IP的比较
1)网络接口层
TCP/IP与各种物理网络的接口称为网络接口层,它与OSI/RM的数据链路层和物理层对应,主要是由低层网络定义的协议。网络接口层负责接收数据报,并把数据报发送到指定网络上。实际上,TCP/IP在这一层并没有定义任何特定的协议,网络接口也可以有多种,它支持各种逻辑链路控制和介质访问控制协议,其目的是可以将各种类型的网络(LAN、WAN、MAN)进行互联。因此,TCP/IP可运行在任何网络上。
2)网际层
网际层是整个TCP/IP体系结构的关键部分,它解决两个不同IP地址的计算机之间的通信问题。具体包括形成IP数据报、寻址、检验数据报的有效性、去掉报头和选择路径等功能,将数据报转发到目的计算机。网际层可以将分组发往任何网络,并使分组独立地传向目的地(可能经由不同的网络或路径)。这些分组到达的顺序和发送的顺序可能不同,接收时高层则必须对分组排序。网际层包含下面几个核心协议:网际协议IP、网际控制报文协议ICMP、地址解析协议ARP、逆向地址解析协议RARP和网际组报文协议IGMP。
(1)网际协议(IP)
网际协议IP(Internet Protocol)是网际层的重要协议,主要功能是进行寻址和路由选择,并将数据包从一个网络转发到另一个网络。IP是不可靠和无连接的数据报传输协议。它将报文传输到目的主机后,不管传输正确与否都不进行检查,不回送确认,没有流量控制和差错控制功能。这些功能留给上层协议TCP来完成。IP只是尽力传输数据到目的地,但不提供任何保证。
(2)网际控制报文协议(ICMP)
IP数据包在实际传输过程中有可能出现差错、故障和发生拥塞等。网际控制报文协议ICMP(Internet Control Message Protocol)就是为IP协议提供差错报告和控制,处理路由,协助IP协议实现提出报文传输的控制机制。
在网络中,网关和主机利用ICMP发送关于所发数据包的有关问题报告,如目标或端口不可达,或者网络中出现拥塞等。
(3)地址解析协议(ARP)
局域网使用介质访问控制方法,通过物理地址(MAC地址或网卡地址)确定报文的发送目的地。但知道IP地址还并不能确定接收主机的MAC地址,地址解析协议ARP(Address Resolution Protocol)的任务就是完成IP地址向物理地址的转换。ARP采用广播消息的方法,完成IP地址到局域网物理地址的映射工作。
(4)逆向地址解析协议(RARP)
逆向地址解析协议RARP(Reverse Address Resolution Protocol)主要解决物理地址到IP地址的转换。RARP协议也采用广播消息的方法,来获取MAC地址相对应的网络IP地址。RARP协议对于在系统引导时无法知道自己IP地址的站点来说显得尤其重要,如无盘工作站或拨号上网的计算机,IP地址是不能从本机获得的。
(5)网际组报文协议(IGMP)
网际组报文协议IGMP(Internet Group Message Protocol)是用来帮助组播路由器标识LAN中的主机,这些主机是组播组的成员,它与IP协议一起使用。
3)传输层
传输层有两个端到端的协议:传输控制协议TCP和用户数据报协议UDP。
(1)传输控制协议(TCP)
传输控制协议TCP(Transmission Control Protocol)是一个面向连接的协议,提供有序可靠的全双工虚电路传输服务。它通过认证方式、重传机制等确保数据的可靠传输。TCP功能包括为了取得可靠的传输而进行的分组丢失检测,对收不到确认的信息自动重传,以及处理延迟的重复数据报等。TCP能进行流量控制和差错控制。适用于每个分组仅含少量字符的交互式终端的应用,也适合大量数据的文件传输。
(2)用户数据报协议(UDP)
用户数据报协议UDP(User Datagram Protocol)是最简单的传输层协议,它和IP一样提供面向无连接、不可靠的数据报传输服务,唯一与IP不同的是提供协议端口号,以保证进程通信。UDP可以根据端口号对许多应用程序进行多路复用,并利用校验和检查数据的完整性。UDP和TCP相比,协议更为简单,因为没有了建立、拆除连接过程和确认机制,数据传输速率较高。由于现代通信子网可靠性较高,因此UDP具有更高的优越性。UDP被广泛应用于一次性的交易型应用(一次交易只有一来一回两次报文交换),以及要求效率比可靠性更为重要的应用程序,如IP电话、网络会议、可视电话、现场直播、视频点播VOD等传输语音或影像等多媒体信息的场合。
有关数据报、虚电路、面向连接和无连接等概念将在第3章介绍。
4)应用层
TCP/IP的应用层与OSI/RM高三层相对应,将OSI/RM高三层合并为一层。它为用户提供调用和访问网络上各种应用程序的接口,并向用户提供各种标准的应用程序及相应的协议,用户还可以根据自己的需要建立自己的应用程序。应用层协议主要包括以下几类:
(1)基于TCP的应用层协议的有:远程登录(虚拟终端服务)Telenet(Telecommunication Network)、文件传输协议FTP(File Transfer Protocol)和简单邮件传输协议SMTP(Simple Mail Transfer Protocol)等。
(2)基于UDP的应用层协议的有:简单网络管理协议SNMP、域名服务DNS(Domain Name Service)、NetBIOS名字服务程序NetBIOS-NS、远程过程调用协议RPC等。
(3)基于TCP、UDP的应用层协议的有:超文本传输协议HTTP(Hyper Text Transfer Protocol)、域名系统DNS(Domain Name System)、简单网络管理协议SNMP(Simple Network Management Protocol)和通用管理信息协议CMOT等。
3.TCP/IP的数据封装
TCP/IP协议和OSI/RM一样都采用对等层通信的模式,相应地,在转发报文过程中,封装和解除封装也在各层进行。发送方在发送数据时,应用程序将要发送的数据加上应用层头部交给传输层,TCP或UDP再将数据分成大小一定的数据段,然后加上本层的报文头。传输层报文头部包含数据所属上层协议或应用程序的端口号,如HTTP的端口号为80,传输层协议利用端口号来调用和区分应用层的不同的应用程序。紧接着再将数据交给网络层,网络层对来自传输层的数据进行一定的处理,如利用协议号区分传输层协议是TCP还是UDP。然后寻找下一跳地址,解析数据链路层地址,并加上本层的IP报文头部,转换为数据包,发送给网络接口层。TCP/IP的数据封装过程如图1.8所示。
接收方去除封装的过程和发送方相反,从网络接口层到应用程序层,逐层去除封装,最后将数据传递给应用程序处理。
图1.8 TCP/IP的数据封装过程
4.TCP/IP和OSI/RM的比较
OSI/RM的抽象能力高,每层功能划分清晰,适合于各种网络。由于定义模型时对某些情况预计不足,造成了协议和模型脱节的情况。OSI的缺点是层次过多,事实证明会话层和表示层划分意义不大,反而增加了复杂性。OSI/RM虽然得到了各国政府和官方的支持,但是没能决定技术的发展方向。由于Internet的迅速发展,TCP/IP已成了事实上的工业标准。TCP/IP不是像OSI/RM那样先给出模型然后规定每层的协议,而是先有协议,有了实际网络后再总结出的参考模型,核心协议IP和TCP是被仔细设计的。TCP/IP和OSI/RM比较如下:
(1)OSI/RM以公用数据网为基础,TCP/IP是以计算机网络为基础的。OSI/RM结构严密,理论性强,学术价值高,各种网络、硬件设备和学术文献都参考它,具有更高的科学性和学术性。而TCP/IP相对简单,更多地体现了网络的设计、实现,因而其实用性更强。
(2)OSI模型比TCP/IP具有更好的隐藏性,在技术发生变化时每层的实现能比较容易被替换掉,这也是把协议分层的主要目的之一。OSI中高层只能调用和它相邻的低层所提供的服务,而TCP/IP可以跨层调用,即上级可以越级调用更低一些的下级所提供的服务,提高了协议的效率。
(3)TCP/IP一开始就考虑到多种异构网的互联问题,并将IP作为TCP/IP的重要组成部分。但ISO最初只考虑到用一种公共数据网将各种不同的系统互联在一起,只是在认识到IP协议的重要性后,在网络层划分出一个子层来完成类似IP的作用。
(4)TCP/IP一开始就对面向连接服务和面向无连接服务同样重视,而OSI很晚才开始制定无连接服务的有关标准。
(5)对可靠性的强调不同。OSI对可靠性的强调是第一位的,协议的所有各层都要检测和处理错误。TCP/IP认为可靠性是端到端的问题,应该由传输层来解决,由主机来承担,这样做的效果使TCP/IP成为效率很高的体系结构。但如果通信子网可靠性较差,使用TCP/IP协议的主机负担将会加重。
(6)系统中体现智能的位置不同。OSI的智能性问题如监视数据流量、控制网络访问、记账收费,甚至路径选择、流量控制等都由通信子网解决。TCP/IP则要求主机参与几乎所有的智能性活动。
(7)TCP/IP有很好的网络管理功能,OSI/RM后来才考虑这个问题。
1.4.4 IEEE 802 标准
OSI/RM和TCP/IP都是在IEEE 802出现以前针对广域网制定的,IEEE 802针对的是局域网。IEEE 802的发展不同于广域网,局域网厂商一开始就按照标准化、互相兼容的方向发展。局域网的拓扑结构非常简单,数据传输不经过中间节点的转发,因此,IEEE 802只定义了物理层和数据链路层两层,而没有定义网络层。对于流量控制、差错控制等功能,就在数据链路层中的LLC中实现了,高层协议主要由操作系统去处理。
1)物理层
IEEE 802的物理层同OSI/RM的物理层功能类似,主要完成编码、解码、时钟同步、发送和接收数据、载波检测及提供与数据链路层的接口。物理层定义的是在传输介质上传输的二进制比特流,因此它描述并规定了所有传输介质的特性,如接口的机械、电气、功能和规程特性等。
2)数据链路层
局域网大多数是共享传输介质,容易出现争用传输介质而引起的冲突和碰撞等情况,因此传输介质的访问控制是重点考虑的问题。局域网种类较多,访问传输介质的方法也各不相同,为了使数据链路层不致过于复杂,IEEE 802将数据链路层分为逻辑链路控制和介质访问控制两个子层。