计算机网络体系结构是指计算机网络的分层、各层协议和各层间接口的集合。即网络体系结构由层、协议和接口三要素组成,可以表示为
网络体系结构={层,协议,接口}
层是指能提供某一种或某一类服务功能集合的逻辑构造;协议是指为完成该层对等实体之间通信所必须遵循的规则或标准,某层对等实体之间的通信都是在该层协议控制下进行的;接口是指两个相邻协议层之间交换信息的连接点,包括上层对下层、下层对上层的调用以及其他所有层间的关系。
网络体系结构各层是垂直方向的服务关系,这种服务关系是一种嵌套服务关系,即完成n层功能必须使用n-1服务,目的是为了向n+1层提供服务,如图2-6所示。
图2-6 计算机网络的分层结构
为了使不同计算机厂家的计算机能够互相通信,以便在更大范围内建立计算机网络,有必要建立一个国际范围内的计算机体系结构标准。下面主要介绍OSI参考模型和TCP/IP。
1.OSI参考模型
在20世纪80年代早期,国际标准化组织(International Standard Organization,ISO)即开始致力于制定一套普遍适用的规范集合,以使得全球范围的计算机平台可进行开放式通信,并于不久后提出了一个使各种计算机能够互连的标准框架——开放式系统互连参考模型(Open System Interconnection/Reference Model,OSI/RM),简称OSI参考模型。OSI模型是一个开放体系结构,它规定将网络分为7层,并规定每层的功能,如图2-7所示。
图2-7 OSI参考模型
(1)物理层
物理层(Physical Layer)的主要功能是完成相邻结点之间原始比特流的传输。物理层协议关心的典型问题是使用什么样的物理信号来表示数据“1”和“0”;一个比特位持续的时间多长;数据传输是否可同时在两个方向上进行;最初的连接如何建立和完成通信后连接如何终止;物理接口(插头和插座)有多少针以及各针的用途等。物理层的设计主要涉及物理层接口的机械、电气、功能和过程特性,以及物理层接口连接的传输介质等问题。
(2)数据链路层
数据链路层(Data Link Layer)的主要功能是如何在不可靠的物理线路上进行数据的可靠传输。数据链路层完成的是网络中相邻结点之间可靠的数据通信。为了保证数据的可靠传输,发送方把用户数据封装成帧(Frame),并按顺序传送各帧。由于物理线路的不可靠,发送方发出的数据帧有可能在线路上发生出错或丢失(所谓丢失实际上是数据帧的帧头或帧尾出错),从而导致接收方不能正确接收到数据帧。为了保证能让接收方对接收到的数据进行正确性判断,发送方为每个数据块计算出CRC(循环冗余检验)并加入到帧中,这样接收方就可以通过重新计算CRC来判断数据接收的正确性。一旦接收方发现接收到的数据有错,则发送方必须重传这一帧数据。然而,相同帧的多次传送也可能使接收方收到重复帧。比如,接收方给发送方的确认帧被破坏后,发送方也会重传上一帧,此时接收方就可能接收到重复帧。数据链路层必须解决由于帧的损坏、丢失和重复所带来的问题。另一个需要解决的问题是防止高速发送方的数据把低速接收方“淹没”,因此需要某种信息流量控制机制使发送方得知接收方当前还有多少缓存空间。为了控制的方便,流量控制常常和差错处理一同实现。
(3)网络层
网络层(Network Layer)的主要功能是完成网络中主机间的报文传输,其关键问题之一是使用数据链路层的服务将每个报文从源端传输到目的端。在广域网中,这包括产生从源端到目的端的路由,并要求这条路径经过尽可能少的IMP。如果在子网中同时出现过多的报文,子网可能形成拥塞,必须加以避免,此类控制也属于网络层的内容。当报文不得不跨越两个或多个网络时,又会产生很多新问题。例如第二个网络的寻址方法可能不同于第一个网络;第二个网络也可能因为第一个网络的报文太长而无法接收;两个网络使用的协议也可能不同等。网络层必须解决这些问题,使异构网络能够互连。在单个局域网中,网络层是冗余的,因为报文是直接从一台计算机传送到另一台计算机的,因此网络层所要做的工作很少。
(4)传输层
传输层(Transport Layer)的主要功能是完成网络中不同主机上的用户进程之间可靠的数据通信。传输层要决定对会话层用户,最终对网络用户提供什么样的服务。最好的传输连接是一条无差错的、按顺序传送数据的管道,即传输层连接是真正端到端的。换言之,源端机上的某进程,利用报文头和控制报文与目标机上的对等进程进行对话。在传输层下面的各层中,协议是每台机器与它的直接相邻机器之间(主机—IMP、IMP—IMP)的协议,而不是最终的源端机和目标机之间(主机—主机)的协议。在它们中间,可能还隔着多个IMP。即1~3层的协议是点到点的协议,而4~7层的协议是端到端的协议。由于绝大多数主机都支持多用户操作,因而机器上有多道程序,这意味着多条连接将进出于这些主机,因此需要以某种方式区别报文属于哪条连接。识别这些连接的信息可以放入传输层的报文头中。除了将几个报文流多路复用到一条通道上,传输层还必须管理跨网连接的建立和拆除。这就需要某种命名机制,使机器内的进程能够讲明其希望交谈的对象。另外,还需要有一种机制来调节信息流,使高速主机不会过快地向低速主机传送数据。
(5)会话层
会话层(Session Layer)允许不同机器上的用户之间建立会话关系。会话层允许进行类似传输层的普通数据的传送,在某些场合还提供一些有用的增强型服务。例如允许用户利用一次会话在远端的分时系统上登录,或者在两台机器间传递文件。会话层提供的服务之一是管理对话控制。会话层允许信息同时双向传输,或任一时刻只能单向传输。如果属于后者,类似于物理信道上的半双工模式,会话层将记录此时该轮到哪一方。一种与对话控制有关的服务是令牌管理(Token Management)。为了管理这些活动,会话层提供了令牌,令牌可以在会话双方之间移动,只有持有令牌的一方可以执行某种关键性操作。另一种会话层服务是同步。如果在平均每小时出现一次大故障的网络上,两台机器间要进行一次两小时的文件传输,试想会出现什么样的问题?每一次传输中途失败后,都不得不重新传送这个文件。当网络再次出现大故障时,可能又会半途而废。为了解决这个问题,会话层提供了一种方法,即在数据中插入同步点。每次网络出现故障后,仅仅重传最后一个同步点以后的数据。
(6)表示层
表示层(Presentation Layer)用来完成某些特定的功能,对这些功能人们常常希望找到普遍的解决办法,而不必由用户自己来实现。值得一提的是,表示层以下各层只关心从源端机到目标机可靠地传送比特,而表示层关心的是所传送信息的语法和语义。表示层服务的一个典型例子是用一种大家一致选定的标准方法对数据进行编码。大多数用户程序之间并非交换随机的比特,而是交换诸如人名、日期、货币数量和发票之类的信息。这些对象是用字符串、整型数、浮点数的形式,以及由几种简单类型组成的数据结构来表示的。网络上计算机可能采用不同的数据表示,所以需要在数据传输时进行数据格式的转换。例如在不同的机器上常用不同的代码来表示字符串(ASCII和EBCDIC)、整型数(二进制反码或补码)以及机器字的不同字节顺序等。为了让采用不同数据表示法的计算机之间能够相互通信并交换数据,在通信过程中使用抽象的数据结构(如抽象语法表示ASN.1)来表示传送的数据,而在机器内部仍然采用各自的标准编码。管理这些抽象数据结构,并在发送方将机器的内部编码转换为适合网上传输的传送语法以及在接收方做相反的转换等工作,都是由表示层来完成的。另外,表示层还涉及数据压缩和解压、数据加密和解密等工作。
(7)应用层
应用层(Application Layer)包含人们普遍需要的大量协议。虽然,对于需要通信的不同应用来说,应用层的协议都是必需的。例如,PC用户使用仿真终端软件通过网络仿真某个远程主机的终端并使用该远程主机的资源,这个仿真终端程序使用虚拟终端协议将键盘输入的数据传送到主机的操作系统,并接收显示于屏幕的数据。再比如,当某个用户想要获得远程计算机上的一个文件拷贝时,他要向本机的文件传输软件发出请求,这个软件与远程计算机上的文件传输进程通过文件传输协议进行通信,这个协议主要处理文件名、用户许可状态和其他请求细节的通信。远程计算机上的文件传输进程使用其他特征来传输文件内容。由于每个应用有不同的要求,应用层的协议集在ISO/OSI模型中并没有定义,但是,有些确定的应用层协议,包括虚拟终端、文件传输和电子邮件等都可作为标准化的候选。
综上所述,可以对OSI参考模型的每层功能做一个简单的总结,如表2-1所示。
表2-1 OSI参考模型每层的基本功能
2.TCP/IP模型和TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,目前包含100多个协议,它是为广域网(WAN)设计的。TCP/IP的前身是由美国国防部在20世纪60年代末期为其远景研究规划署网络(ARPAnet)而开发的。由于其低成本以及在多个不同平台间通信的可靠性,TCP/IP迅速发展并开始流行。一些最近发行的网络操作系统(NOS)(如NetWare 5.0)即使用TCP/IP为默认协议。TCP/IP最大的优势之一是其可路由性,也就意味着它可以携带被路由器解释的网络编址信息。TCP/IP还具有灵活性,可在多个网络操作系统(NOS)或网络介质的联合系统中运行。TCP和IP是其中的两个协议。
(1)TCP/IP模型
TCP/IP先有协议,再有模型,模型是对TCP/IP的描述。对应于OSI模型的七层结构,TCP/IP模型可被大致分为四层,分别为应用层、传输层、网际层和网络接口层,如图2-8所示。其中,网络接口层大致对应于OSI模型的数据链路层和物理层,该层处理数据的格式化以及将数据传输到网络电缆;网际层对应于OSI模型的网络层,处理信息的路由以及主机地址解析,主要负责路由选择、流量控制等;传输层大致对应于OSI模型的会话层和传输层,负责端到端的可靠通信,负责提供流控制、错误校验和排序服务;应用层大致对应于OSI模型的应用层和表示层,为了解决某一类问题而设定,应用程序通过该层利用网络完成格式转换、数据压缩等。
每层都有相关的一些协议,其中HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)以及DHCP(动态主机配置协议)等都是应用层协议;TCP(传输控制协议)和UDP(用户数据报协议)都是传输层协议;IP(网际协议)、ARP(地址解析协议)等都是网际层协议;Ethernet、FDDI等都是网络接口层协议,如图2-9所示。
图2-8 TCP/IP模型
图2-9 TCP/IP主要协议
TCP/IP模型和OSI参考模型对比图如图2-10所示。从图中可以看出,OSI参考模型共分七层,TCP/IP模型共分四层,它们之间有一定的对应关系。下面简单地对这两种模型进行一定的评价:
图2-10 TCP/IP模型和OSI参考模型对比图
1)OSI参考模型先提出体系结构模型,然后再实现,其模型层次结构清晰,概念明确,所提出的层次结构、服务、接口和协议等概念清楚,具有重要的理论价值,被广泛应用于网络研究和开发中。但是,作为一个国际标准出台,OSI参考模型太全面、太大,基于它实现协议有一定困难,因而没有在实际中成为国际标准。
2)TCP/IP体系结构的模型本身还没有确立,协议已被广泛应用。这些协议被提出后,其实现被自由发布,并被广泛应用,从而确立了这些协议的牢固地位。但因为没有预先进行完善的规划和设计,模型的系统性不够强,逐渐在应用中暴露出越来越多的问题。主要表现在以下几个方面。
● 服务、接口和协议的概念区分不清楚,层次、功能结构不清晰。
● TCP/IP体系结构不通用,不能用来描述其他协议栈,如不能用来描述蓝牙(Blue-tooth)。
● 没有区分物理层和数据链路层,而这两层的功能是完全不同的。
(2)网际协议(IP)
网际协议(IP)是TCP/IP模型的网际层协议,提供关于数据应如何传输以及传输到何处的信息。在网际层,传输数据的基本单位是IP数据报,包括报头和数据,总长度不能超过65535字节。下面具体描述IP数据报的各部分,结构如图2-11所示。
图2-11 IP数据报
1)版本:标识协议的版本号。接收方工作站首先查看该域以决定它是否能够读取该输入数据。若不能,它将拒绝该数据报。然而,由于大多数TCP/IP网络使用IP版本4(IPv4),很少发生拒绝事件。一个更高级的IP版本,即IP版本6(IPv6)已经开发出来并将在不久使用。IPv6将具有向后兼容性以便能够接收IPv4的数据。
2)网际报头长度(IHL):用32位编组形式标识IP报头的长度。最常用的IP报头由4个编组,或20个8位字节组成。该域的重要性在于它向接收点指示数据从何处开始。
3)服务类型(ToS):通过指定数据的速度、优先权或可靠性,通知IP如何处理输入的数据报。
4)总长度:用字节标识数据报的总长度,包括报头和数据。
5)标志号:标识一个数据报所属的消息,以使得接收节点可以重组被分断或分段的消息。该域和下面两个域,即标识符和段偏移量,在数据报的分段和重组过程中起作用。
6)标志符:无分段(DF)或多个分段(MF),标识一个消息是否被分段,如果是,则表示数据报是否是最后一个段。
7)段偏移量:标识数据报段属于输入段集的哪一段。
8)生存期(TTL):标识一个数据报在它被抛弃前在网络中存在的最大时间,单位为秒。TTL对应于一个数据报通过路由器的数目;一个数据报每次通过一个路由器,TTL将减去1秒,不论路由器是否花费一整秒进行数据处理。(www.daowen.com)
9)协议:标识将接收数据报的传输层协议类型(如TCP、UDP)。
10)报头校验和:决定IP报头是否已被破坏。
11)源IP地址:标识源节点的完整的IP地址。
12)目标IP地址:标识目标节点的完整的IP地址。
13)可选项:包含可选的路由和实时信息。
14)填充位:包含填充信息以确保报头是32位的倍数,该域的大小可变。
15)数据:包括了由源节点发送的原始数据,外加TCP信息。
IP是一种不可靠的、无连接的协议,即意味着它不保证数据的可靠传输。然而,TCP/IP协议群中更高层协议可使用IP信息确保数据报按正确的地址进行传输。注意到IP数据报并不包含一个校验和部件,报头校验和仅仅验证IP报头中路由信息的完整性。如果当数据报被接收时伴随信息的校验和值不正确,则数据报将被认为已破坏并被抛弃,同时,一个新的数据报被发送。
(3)传输控制协议(TCP)
传输控制协议(TCP)属于TCP/IP协议群中的传输层协议,提供可靠的数据传输服务。TCP是一种面向连接的子协议,意味着在该协议准备发送数据时,通信节点之间必须建立起一个连接。TCP位于IP的上层,通过提供校验和、流控制及序列信息弥补IP可靠性的缺陷。如果一个应用程序只依靠IP发送数据,则将杂乱地发送数据,如不检测目标节点是否脱机,或数据是否在发送过程中已被破坏。另一方面,TCP包括了可保证数据可靠性的几个组件。TCP协议段的各个域描述如下,图2-12描述了一个TCP协议段和它的各个域。
图2-12 TCP
1)源端口:指示源节点的端口号。一个端口是位于主机上的一个地址。在端口处,一个应用程序可以获得输入数据。例如端口80,一般用于接收Web页请求。
2)目标端口:指示目标节点的端口号。
3)序列号:标识数据段在已发送的数据流中的位置。
4)应答号(ACK):发送方通过返回一条消息来验证数据已被接收。
5)TCP报头长度:指示了TCP报头的长度。
6)代码:包括标识特殊条件的标识符。例如,一个消息是紧迫的,或源节点希望请求一个连接或结束一个连接。
7)滑动窗口尺寸:指示接收方机器可接收的数据块个数。
8)校验和:允许接收节点判定TCP段是否在发送过程中被破坏。
9)紧急段指针:能够指示出紧迫数据驻留在数据中的位置。
10)可选项:用于具体指定一些特殊选项。
11)数据:包含由源节点发送的原始数据。
(4)用户数据报协议(UDP)
用户数据报协议(UDP),如同TCP,位于TCP/IP模型中网际层和应用层之间的传输层中。不同于TCP的是,UDP是一种无连接的传输服务,它不保证数据报以正确的序列被接收。事实上,该协议根本不保证数据报的接收,而且,它不提供错误校验或序列编号。然而通过Internet进行实况录音或电视转播,要求迅速发送数据时,UDP的不精确性使得它比TCP更加有效。在这些情况下,具有验证、校验和以及流控制机制的TCP将增加太多的报头,使得其难以发送。与TCP的10个域相对照,UDP报头仅包含4个域:源端口、目标端口、长度和校验和。
(5)网际控制报文协议(ICMP)
虽然IP能确保数据报到达正确的目标点,但当发送过程出了某些问题时,网际控制报文协议(ICMP)将通知发送方且数据不再被传送。ICMP位于TCP/IP模型网际层的IP和TCP之间,它不提供错误控制服务,而是仅仅报告哪一个网络是不可到达的,哪一个数据报因分配的生存时间过期而被抛弃。ICMP常用于诊断实用程序中,如ping和TRACERT。
(6)地址解析协议(ARP)
地址解析协议(ARP)是一个网际层协议,它获取主机或节点的MAC地址(物理地址)并创建一个本地数据库,以将MAC地址映射到主机IP(逻辑)地址上。ARP与IP紧密协作,因为IP在直到发送数据到目标主机之前必须具有目标主机的地址。如果一个主机需要知道在同一子网的另一主机的MAC地址,第一个主机将向网络发送一条广播消息,“IP地址为AA.BB.CC.DD的计算机请发送给我你的MAC地址”。在本地子网中具有IP地址AA.BB.CC.CC的主机将广播一条包括目标主机物理地址的ARP响应。为使ARP更加有效,计算机在一个缓冲区保存已经知道的IP-MAC地址映射表,这样就无需广播冗余请求。
(7)TCP/IP应用层协议
除核心的传输层和网际层协议之外,TCP/IP协议群还包括几个应用层协议。这些协议工作于TCP、UDP及IP之上,将用户的请求翻译成网络可阅读的格式。下面具体描述较通用的应用层协议。
1)Telnet:一种终端仿真协议。用于通过TCP/IP协议群登录到远程主机上。例如,网络管理员使用Telnet从家中登录到公司的路由器上,以修改路由器的配置。
2)文件传输协议(FTP):一种借助TCP/IP进行发送和接收文件的协议。FTP是一种客户机/服务器协议,在该协议中运行FTP服务器部分的主机接收来自于运行FTP客户机部分的另一主机的命令。它通过一组非常简单的命令构成它的用户接口。
3)简单邮件传输协议(SMTP):该协议负责将消息从一个邮件服务器上传输到Internet上或其他基于TCP/IP的网络上的另一个邮件服务器。SMTP使用简单的请求-响应机制传输信息,并依据更复杂的协议,如邮局协议(POP)来跟踪邮件的存储和转发。
4)简单网络管理协议(SNMP):一种用于管理TCP/IP网络设备的通信协议。为使用SNMP,网络中的每个设备将运行一个代理程序以收集关于该设备的信息。SNMP将收集到的信息传输给一个中央数据库。所有的标准网络管理程序都使用SNMP。
(8)TCP/IP协议群中编址
网络中的每个节点必须有一个唯一的称之为地址的标识号。网络可以识别两类地址:逻辑和物理(或MAC)地址。MAC地址被嵌入进一个设备的网络接口卡中,因而是不可变的。但逻辑地址依赖于协议标准所制定的规则。在TCP/IP协议群中,IP是负责逻辑编址的核心。因此,在TCP/IP网络中地址有时也被称为“IP地址”,IP地址依据非常特定的参数进行分配和使用。IP地址也称为Internet协议地址,用作Internet上独立的计算机的唯一标识,通信时要指出目的机的IP地址。每个IP地址是32位的二进制地址,被分割成4组十进制数,每组用“.”分开。一个合法的IP地址:
100000000 00001011 00001001 00000011
十进制表示:128.11.9.3
一个IP地址分为两部分:网络地址和主机地址。网络地址标识主机所在的网络,主机地址用来标识主机本身。IP地址通常有A、B、C、D、E五类,目前使用的是A、B、C三类,如图2-13所示。表2-2总结了TCP/IP网络通用的三种类型的详细信息。
图2-13 IP地址的五种类型
表2-2 TCP/IP网络通用的三种类型的详细信息
1)A类网络中的所有节点共享IP号的第一个字节,该号从1开始到126。
例如,具有下列IP地址的节点可能属于相同的A类网络:
23.78.110.109,23.164.32.97,23.48.112.43,23.108.37.22。
2)B类网络中的所有节点共享IP号的最初两个字节,它们的IP地址从128开始到191。
例如,具有下列IP地址的节点可能属于相同的B类网络:
168.34.88.29,168.34.55.41,168.34.73.49,168.34.205.113。
3)C类网络IP号共享最初三个字节,第一个字节位于192与223之间。
例如,具有下列IP地址的节点可能属于相同的C类网络:
204.139.118.7,204.139.118.54,204.139.118.14,204.139.118.31。
由于只有在因特网上才能获得A类网络,因此大部分A类网络被保留用于大公司或政府,此外,一些IP地址被保留用于网络功能,如广播消息不能被分配给机器或设备使用。注意127对于任何IP号都不是一个合法的开始字节,因而地址从127开始的IP地址被保留用于在网络接口卡内循环传输信息,如地址为127.0.0.1的IP地址称为内循环地址。当必须解决工作站的TCP/IP通信问题时,这个地址是非常有用的。如果从内循环测试中接收到一个正确的响应,则证明TCP/IP在工作站上已被安装和使用。
一个公司能从Inter NIC(即当前的因特网命名机构)或ISP(因特网服务提供商)处申请一个网络地址类,其中ISP可能代表公司从Inter NIC申请网络地址或其保留的IP地址给公司。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。