前面一般性地讨论了分层协议和网络体系结构。下面将具体分析和讨论两个重要的网络体系结构,即ISO/OSI参考模型和TCP/IP参考模型。
在网络发展的初期,许多研究机构、计算机厂商和公司都大力发展计算机网络,自从ARPANET出现后,市场上出现了许多商品化的网络系统。但是这些网络系统在体系结构上差异很大,它们之间互不相容,难于相互连接以构成更大的网络系统。为此,许多标准化机构积极开展了网络体系结构标准化方面的工作,其中最为著名的就是国际标准化组织(International Standard Organization,ISO)提出的开放系统互连参考模型(Open System Interconnection/Reference Model,OSI/RM)。ISO/OSI参考模型是国际标准化组织制定的一个用于计算机或通信系统间互联的标准体系。
ISO/OSI参考模型将计算机网络分为七层,如图1-15所示。我们将从最底层开始,依次讨论ISO/OSI参考模型各层所要实现的功能。
图1-15 ISO/OSI参考模型
1.物理层
物理层的主要功能是完成相邻节点之间比特传输。物理层关心的问题包括物理层接口使用什么样的电磁信号来表示“0”和“1”、“0”和“1”持续的时间有多长、比特传输能否在两个方向上同时进行、节点之间的物理连接是如何建立起来的、完成通信后如何终止连接、物理层接口(插头和插座)有多少个接头,以及接口的电气特性和功能特性如何。
物理层协议设计涉及物理层接口的机械、电气、功能和过程特性等问题,还涉及电子工程和通信工程等领域内的一些问题。物理层接口的例子有EIA RS-232、RS-422、RS-530、RJ-11、RJ-45、USB接口以及各种光接口。
2.数据链路层
数据链路层的主要功能是在不可靠的物理线路上保证相邻节点之间数据的可靠传输。为了保证数据传输的可靠性,发送端把高层数据封装成帧(frame),并按顺序发送每个帧。由于物理线路是不可靠的,因此发送端发出的帧有可能在物理线路上遭到破坏,引起错误,甚至丢失(所谓丢失实际上是数据帧的帧头或帧尾出错),从而导致接收端不能正确接收到数据。为了保证让接收端能正确接收到数据,首先必须让接收端对接收到的数据是否正确进行判断,为此发送端为每个数据帧计算检错码(比如CRC)并加入帧中,这样接收端就可以通过重新计算检错码判断接收到的数据是否正确。如果发送端发送的数据不能被接收端正确接收,则发送端必须重传该数据。然而,相同数据帧的多次重传也可能使接收端收到重复帧,因此数据链路层还必须解决由帧的损坏、丢失和重发所带来的重复帧的问题。
数据链路层要解决的另一个问题是防止发送端发送数据的速度快于接收端接收数据的速度,这样有可能引起数据的丢失。因此数据链路层需要某种机制来协调发送端和接收端之间的收发速度。
对于局域网来说,数据链路层又分为逻辑链路控制(Logical Link Control,LLC)子层和介质访问控制(Media Access Control,MAC)子层。在局域网中,逻辑链路控制子层的功能相当于数据链路层,用于提供两个节点之间的可靠数据传输;而介质访问控制子层则用于控制局域网中的多个节点如何访问共享介质。
3.网络层
网络层的主要功能是完成网络中不同主机之间的数据通信。网络层交换的数据单元一般用报文(packet)来表示。
在网络中的两台主机之间可能存在不止一条路径,因此网络层涉及的关键问题是如何为发送端主机和接收端主机选择一条合适的路径,以保证发送端主机发送的报文正确到达接收端主机,这就是路由。
网络层需要解决的另一个关键问题是:如何防止主机将过多的报文注入网络中,从而引起网络拥塞,导致报文传输的延迟过大,甚至造成报文丢失。
另外,如何将不同的物理网络连接起来,使其逻辑上看起来像一个统一的网络,这就是网络互联,也是网络层的功能之一。
4.传输层
传输层的主要功能是完成网络中不同主机上用户进程之间的数据通信。传输层交换的数据单元一般用报文段(segment)来表示。
传输层要决定网络向上能够提供什么样的服务。传输层可以提供可靠的数据通信,也可以提供不可靠的数据通信。传输层协议是端到端(end-to-end)的,即传输层协议是支持端用户进程之间进行数据通信的。在传输层以下的各层中,各层协议是每个节点与它的直接相邻节点之间(主机-IMP、IMP-IMP)的协议,而不是最终的发送端主机和接收端主机之间(主机-主机)的协议。也就是说,在ISO/OSI参考模型中,物理层、数据链路层和网络层协议都是跳到跳(hop-by-hop)协议,而从传输层开始都采用端到端(end-to-end)协议。
由于目前绝大多数机器都采用多用户操作系统,因此一台机器上会同时运行多个用户进程,这意味着需要某种命名机制,使机器内的进程能够清楚说明它希望与哪台机器的哪个进程建立传输连接。另外,传输层协议还必须引入流量控制机制,以避免发送端主机发送数据速度过快而导致接收端主机来不及处理,从而造成数据丢失。
5.会话层
会话层允许不同机器上的用户之间建立会话关系。会话层允许进行类似传输层的普通数据的传送,在某些场合还提供了一些有用的增值服务。会话层允许用户利用一次会话在远端的分时系统上登录或者在两台机器之间传输文件。
会话层提供的服务之一是会话管理。有些网络服务允许信息双向同时传输(类似于物理信道上的全双工模式),而有些网络服务只允许信息单向传输(类似于物理信道上的半双工模式),此时,会话层将进行有效控制。一般采取的会话控制方式是令牌管理(token management),会话层让令牌在会话双方之间来回移动,任何一方要想发送数据必须首先持有令牌,这样双方可以通过交替拥有令牌而实现数据的半双工传输。
会话层提供的另一种服务是同步。例如,在每隔一段时间就有可能出现故障的网络上,两台机器之间要进行长时间的文件传输会出现什么样的问题?在每一次的文件传输过程中都会由于网络故障不得不重传整个文件。为了解决这个问题,会话层提供数据传输过程中插入同步点的服务,这样当网络出现故障后,发送端只需要重传最后一个同步点以后的数据,而不需要重传整个文件。当然,如果网络中没有会话层提供的增值服务,主机之间的数据通信仍然是可以正常进行的。
6.表示层
表示层完成某些特定的功能,对这些功能人们常常希望找到普遍的解决办法,而不必由每个网络应用来解决。值得一提的是,表示层以下各层只关心如何将发送端主机上某用户进程的数据可靠地传送到接收端主机上的用户进程,而表示层关心的是用户进程所传送数据的语法格式和语义(含义或意义)。
表示层提供的典型服务是对数据进行统一编码。大多数用户程序之间并非交换任意组合的比特串,而是交换人名、日期、货币数量和发票之类的数据,甚至是音频、视频等多媒体数据。这些数据对象用字符串、整型数、浮点数的形式,以及由几种简单类型组成的复杂数据结构来表示。
另外,不同的计算机可能采用不同的数据表示方式,所以需要在数据传输时进行数据格式的转换。例如,不同的机器可能会用不同的代码来表示字符串(如大部分计算机用ASCII码来表示,但是有些早期的计算机可能用其他编码来表示),采用不同字节顺序来存放数据,等等。为了让采用不同数据表示法的计算机之间能够相互通信并交换数据,我们可以在数据通信过程中使用抽象的数据结构(如ISO提供的抽象语法表示ASN.1)来抽象地表示要传送的数据,而在机器内部仍然采用各自的编码方式。管理这些抽象数据结构、在发送端将机器的内部编码转换为适合网上传输的传送语法以及在接收端做相反的转换等工作都是由表示层来完成的。
另外,表示层的工作还涉及数据的压缩和解压、数据的加密和解密等。
7.应用层
应用层是用户与网络的接口。应用层支持各种不同的网络应用,每种网络应用都使用不同的应用层协议。
比如,PC用户通过使用仿真终端软件可以远程登录到某台主机上使用该远程主机的资源。这个仿真终端程序通过虚拟终端协议将PC键盘输入的信息传送到远程主机,由远程主机来解释键盘命令并执行,同时将结果回送到PC的屏幕上。
再比如,当某个用户想要获得远程计算机上的一个文件拷贝时,他要向本机的文件传输软件发出请求,该软件与远程计算机上的文件传输进程通过文件传输协议进行通信,这个协议主要处理文件名、用户许可状态和其他文件访问等细节。
ISO/OSI参考模型可以很好地描述广域网的体系结构,图1-16给出了两台主机通过广域网进行通信对应的ISO/OSI参考模型。
图1-16 广域网参考模型
在图1-16中,广域网由通信子网和主机构成,主机之间通过通信子网进行通信。通信子网由通信介质和交换机构成。
值得注意的是,ISO/OSI参考模型本身不是网络体系结构的全部内容,它并未确切地描述用于ISO/OSI参考模型各层的协议,而仅仅规定了ISO/OSI参考模型每一层必须完成的功能。不过,ISO为各层制定了相应的标准,但这些标准并不是ISO/OSI参考模型的一部分,它们是作为独立的国际标准发布的,只是目前已经不常引用OSI协议标准了。
现在我们从ISO/OSI参考模型转到另一个参考模型,即TCP/IP(Transmission Control Protocol/Internet Protocol)参考模型,如图1-17所示。
TCP/IP参考模型只有四层,下面分别讨论这四层的功能。
图1-17 TCP/IP参考模型
1.网络接入层
网络接入层是TCP/IP参考模型的最底层,它的主要功能是负责底层物理网络的接入。比如:接收互联网层交来的IP报文,将IP报文封装成物理网络需要的格式然后发送到物理网络中;或者从物理网络接收IP报文,然后把它交给互联网层。
网络接入层连接的可以是各种类型的物理网络,如各种广域网、局域网和点到点线路(包含拨号线路和专线)。
2.互联网层
互联网层是TCP/IP参考模型中最关键的一层,它将TCP/IP参考模型上下层贯穿在一起。互联网层的主要功能是实现任意两台主机之间的IP报文传送。TCP/IP参考模型在互联网层只定义了一个协议,即互联网协议(Internet Protocol,IP)。IP定义了IP报文的格式,它支持将各种不同的物理网络互联成一个统一的逻辑网络。
为了实现主机之间IP报文的传送,路由器必须完成对IP报文的正确转发,这就涉及IP路由。
3.传输层
TCP/IP参考模型传输层的功能与ISO/OSI参考模型传输层的功能是一样的,即在发送端主机和接收端主机的两个应用进程之间提供端到端的数据通信服务。
TCP/IP参考模型在传输层提供了两个传输层协议,即传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)。TCP支持面向连接服务,提供可靠的数据传输。UDP是一个无连接的传输层协议,只提供不可靠的数据传输服务。
4.应用层
TCP/IP参考模型的应用层包括所有的应用层协议。早期的网络应用主要有远程登录、文件传输和电子邮件,现在的网络应用更多基于WWW。图1-18给出了TCP/IP参考模型中每一层常用的协议。
图1-18 TCP/IP协议栈
在图1-18中,我们可以看到IP是互联网的核心。在互联网中,对于高层协议而言,通过统一的IP协议层屏蔽了各种底层物理网络(如各种点到点链路、广域网、局域网和无线网等)技术的差异,实现了“IP over everything”的目标。IP技术成功的关键是其概念、方法与思想,如层次结构的包容性与开放性,以及简单、实用、有效的原则。目前互联网的另一个目标是实现“everything over IP”,其中的“everything”是指所有业务,包括数据、图像和话音等,这些业务既有实时的也有非实时的。要实现这样的目标,对于目前的IP技术来说是相当困难的,需要新技术来帮助解决。
通过前面的讨论,大家已经看到ISO/OSI参考模型和TCP/IP参考模型有许多相似之处,例如,两种模型中都包含能提供应用进程之间可靠数据通信的传输层。
ISO/OSI参考模型是在其协议开发之前设计出来的,这意味着ISO/OSI参考模型不是基于某个特定的协议集而设计的,因而它更具有通用性。但是由于ISO/OSI协议栈过于复杂,因此ISO/OSI在协议实现方面存在很大不足,这也是ISO/OSI协议栈和网络从未真正流行的原因。
TCP/IP参考模型正好相反。先有TCP/IP协议栈,TCP/IP模型只是TCP/IP协议栈的归纳总结,因而TCP/IP参考模型与TCP/IP协议栈非常吻合。但TCP/IP参考模型不适合描述其他协议栈。
虽然ISO/OSI协议栈和网络并未获得巨大的成功,但ISO/OSI参考模型在计算机网络的发展过程中起了非常重要的指导作用,而且它对今后计算机网络朝标准化、规范化的方向发展仍然具有指导意义。