问题25:如何从计算机体系结构的角度来认识物联网的组成与结构?
这是一个很有趣的问题,作者在为计算机专业学生讲授“计算机网络”课程的30多年中,一直在思考如何从计算机体系结构的角度认识计算机网络组成与结构。在接触到物联网之后,作者又开始思考如何从计算机体系结构的角度认识物联网的组成与结构。作者认为:只有正确地回答这个问题,才能真正理解计算机网络与物联网的工作原理,才能够从计算机专业最成熟的理论与技术角度来认识计算机网络、互联网、物联网的设计方法与处理问题的基本思路。但是,所有“计算机体系结构”、“计算机组成原理”的教材几乎都没有涉及网络硬件组成的问题,“操作系统”的教材没有涉及网络协议与网络软件的问题,“程序设计”相关的教材不涉及网络软件编程的问题,而“计算机网络”的教材也没有涉及网络与计算机体系结构、操作系统的关系问题,不讨论网络软件编程的问题。这一鸿沟反映出计算机网络作为一门交叉学科,涉及计算机专业与通信专业两个学科的知识,从不同领域的角度切入和诠释交叉部分的内容是一件困难的工作。但是,随着技术的发展,需要有不同学科的学者共同研究这个问题。下面作者结合自己的科研与教学实践,尝试从计算机体系结构的角度来描述计算机网络组成与结构,进而诠释物联网的组成与结构问题。
1.计算机互联的结构
为了使问题讨论简化,我们给出如图2-20所示的一台作为客户端的计算机与一台作为服务器的计算机通过网络互联的结构。
图2-20 简化的计算机网络结构
这里我们并没有强调互联两台计算机的是什么网络,可以是图2-21a所示的Ethernet局域网,可以是图2-21b所示的802.11标准的无线局域网(Wi-Fi),也可以是通过广域网互联的结构,或者是通过由多个路由器、网络构成的互联网络(internet)连接起来。这里需要注意三个问题。
图2-21 计算机通过局域网互联的结构
第一,目前大量的计算机是以图2-21所示的方式,采用IEEE802.3协议的以太网(Ethernet)或IEEE802.11的无线局域网(Wi-Fi)的结构互联成网。在办公室、实验室大量存在的局域网中,普通用户的计算机运行的是客户端(Client)软件,为大量客户端提供软件、硬件与数据资源与服务的是配置很高、专用的服务器(Server)。人们将这种计算模式称为客户机/服务器(Client/Server,C/S)模式。服务器一般固定安装在机房中,通过结构化布线方式与分布在各个办公室、实验室的客户端计算机连接,无线局域网多用于移动用户计算机的连接。无线局域网可以通过网桥或路由器与Ethernet连接,构成更大的网络系统。
第二,广域网的结构随着技术的发展是在不断变化的。早期的计算机网络是广域网,它用于将分布在不同地区的大型机互联起来,让用户能够共享大型机的计算资源。随着个人计算机的广泛应用,通过广域网互联大型机的网络越来越少。但是,在一些专用网络中,通过多段通信线路将多个路由器连接成覆盖很大地理范围的广域网,客户端主机与服务器通过广域网互联起来也是可行的一种结构(如图2-22所示)。
图2-22 计算机通过广域网互联的结构
第三,随着网络技术的发展,大量个人计算机通过多个路由器、通信线路,将多个网络(局域网、广域网)互联成大型的互联网络。我们将这种由多个网络互联的网络结构用图2-23表示。这里所说的互联网络(internet)是一种专用的网络,不是我们通常意义上所讲的互联网(Internet)。客户端主机与服务器通过互联网络连接起来也是一种常见的结构。
图2-23 计算机通过互联网络连接的结构
2.计算机网络最本质的活动—为分布式进程通信提供服务
当我们完成了一些通过局域网、广域网,以及互联网络将多台计算机互联,完成互联网(Internet)应用系统设计与网络软件编程课题之后,我们会深刻地认识到:无论用哪种网络结构将计算机互联起来,计算机网络只起到一个作用—“为分布在不同地理位置、互联计算机之间的分布式进程通信提供服务”。
要了解网络环境中的分布式进程通信,需要与单机环境的进程通信做一个比较。进程和进程通信是操作系统中基本的概念。在单机系统中,多个进程共享单一的CPU,在一个时刻有的进程在使用CPU,有的进程在等待分配CPU,而有的进程在等待其他条件。一个进程在不同时刻处于不同状态。正在运行的进程处于运行态;等待分配CPU的进程处于就绪态,而等待其他条件的进程处于等待态。进程的状态反映出进程执行过程的变化。为了保证系统正常地工作,操作系统必须对进程的创建、撤销与状态转换进行控制。在操作系统的支持下,计算机系统中的各个进程互相独立地并发运行。但是它们要共享计算机资源,因此,进程在运行过程中互相之间存在着互斥和同步的关系。从进程的观点来看,操作系统是由可以同时独立运行的程序和一个对这些程序进行协调的核心组成,这些同时运行的程序叫做进程,每个进程都完成一种特定的任务,而操作系统的核心任务则是控制和协调这些进程的运行,解决进程之间的通信。
网络环境中的计算机系统之间的进程通信与单机状态下的进程通信有较大的差别。计算机网络的定义是:分布在不同地理位置的多台独立的计算机系统的集合。“独立的计算机系统”意味着联网的每台计算机的操作与资源是由各自的操作系统管理的。所有联网的计算机硬件、软件与数据构成网络资源,提供规定的网络服务功能。用户共享的网络资源及网络所能提供的服务功能,最终是通过网络环境中的分布式进程通信来实现的。这种网络环境中的进程通信与单机系统内部的进程通信的区别在于网络中主机的高度自主性。因为网络中不同的计算机系统之上,不存在一个高层的操作系统进行统一的进程与资源的控制与管理,因此网络中一台计算机对某台计算机的活动状态、位于这台计算机系统中的各个进程状态、这些进程什么时间参与网络活动,以及它们希望与网络中哪台计算机的什么进程通信等情况一概不知。如果要在网络环境中让分布在不同计算机系统中的进程间实现通信,就必须为这些重要的问题提出解决方案。要实现网络环境中分布式进程通信,就必须解决以下三个主要的问题:进程命名与寻址方法、多重协议的识别与进程间相互作用的模式。
3.客户端/服务器工作模式
在网络环境中,每种网络应用都采用客户端/服务器(Client/Server)工作模式。根据这个模型,一个网络应用由一个服务器进程与一个或多个客户端进程组成。服务器管理网络资源(Resource),并通过操作这些资源来为客户端提供某种服务(Service)。例如,一个Web服务器管理一组磁盘文件,在客户端提出服务请求时,它将代替客户端搜索,并将结果返回给客户端。一个FTP服务器管理一组磁盘文件,它会按照客户端的要求进行存储和检索。一个电子邮件服务器管理着一个spool文件,它为客户端进行读写与更新。这样一个客户端/服务器模式中的基本操作是事务(Transaction)。这里所说的“事务”不是数据库的事务。客户端/服务器事务是指客户端进程与服务器进程之间执行的一系列操作步骤。一个客户端/服务器事务是由四步组成(如图2-24所示)。
图2-24 一个客户端/服务器事务
第一步,当一个客户端需要服务时,它向服务器发出一个请求(Requet),发起一个事务。例如,当客户端需要通过浏览器看一条新闻时,它就向Web服务器发出一个请求。
第二步,服务器接收到请求后,解释并以适当的方式操作它的资源。例如,Web服务器接收到浏览器发出的请求之后,就读取对应的一个磁盘文件。
第三步,服务器向客户端发出一个响应(Response),并等待下一个请求。例如,Web服务器将文件发送回客户端。
第四步,客户端收到响应并处理它。例如,Web浏览器收到来自服务器的一页内容后,在屏幕上显示出来。
在这里我们需要注意四个基本的问题。
第一,作为认识计算机网络第一步,我们将注意力集中在作为客户端的计算机(或主机)、作为服务器的计算机如何互联的问题。
第二,在讨论计算机网络服务功能实现方法时,我们已经深入到计算机内部,了解在各自操作系统控制下的客户端进程与服务器端进程之间的通信过程。
第三,一台客户端主机可以运行多个客户端进程,一台服务器可以同时为多个客户端提供服务。
第四,在很多计算机网络应用系统中,从提高性价比的角度,设计者一般采用配置高的计算机系统作为服务器,而对客户端计算机的要求比较低,可以使用台式机、笔记本计算机,甚至是PDA或智能手机。
但是,从进程通信的角度来看,客户端进程与服务器进程并不是固定不变的。在一次进程通信中,发起一次进程通信请求的一方就是客户端;接收请求,提供服务的一方就是服务器端。与客户端/服务器(C/S)工作模式不同,对等(Peer-to-Peer,P2P)工作模式下,客户端与服务器端是根据其在一次进程通信中的所起的作用来决定的。
4.从计算机组成的角度认识计算机网络
在讨论过网络环境中分布式进程通信之后,我们可以进一步从计算机组成原理的角度深入认识计算机网络。客户端与服务器通常运行在不同的计算机系统中,它们通过复杂的计算机网络硬件、通信协议与网络软件实现进程之间的通信。如图2-25所示,对于一台计算机来说,网络只是计算机的一种I/O设备。网络接口卡(Network Interface Card,NIC)或网络适配器(Network Interface Adapter,NIA)也称做“网卡”,它是将计算机连接到局域网的硬件。对于联网计算机来说,网卡被插入主机的I/O扩展槽中,作为主机的一个外设。网卡在主机CPU的控制下发送和接收数据。在这点上,网卡与其他I/O外设卡,如显示卡、磁盘控制器卡、异步通信接口适配器卡,没有本质的区别。例如,我们常用的Ethernet(以太)局域网的网卡叫做“以太网卡”。它按照以太网协议(IEEE802.3)标准工作。以太网卡通过RJ-45接口,用非屏蔽双绞线连接到以太交换机(Switch)或以太集线器(Hub)上,再通过路由器与其他局域网、广域网互联。由于每一块Ethernet网卡的EPROM里都保存着一个48位的物理地址(如00-60-08-00-A6-38),并且这个地址在全世界是唯一的,因此计算机之间可以通过这个唯一的Ethernet物理地址相互识别和寻址。
图2-25 从计算机组成原理的角度认识计算机网络
5.从网卡设计、网卡驱动程序编写的角度认识计算机网络与计算机组成的关系
图2-26给出了典型的IEEE803.3标准的Ethernet实现方法。从实现的角度来看,Ethernet网络连接设备包括三部分:网卡、收发器和收发器电缆。
图2-26 Ethernet网卡实现方法
理解网卡实现方法时,需要注意以下几个问题:
1)网卡应该包含发送与接收信号的收发器、曼彻斯特编码与解码器、Ethernet数据链路控制、组帧与拆帧软件、与主机的接口,它覆盖了802.3协议的数据链路层与物理层。
2)Ethernet网络收发器实现主机与总线同轴电缆的电信号连接,完成数据发送与接收、冲突检测功能。收发器电缆完成收发器与网卡的信号连接。如果主机出现故障,收发器可以方便地将主机与总线传输介质隔离开来。
3)网卡的一端通过收发器与总线传输介质连接,另一端通过接口电路与计算机连接。网卡实现发送数据的编码、接收数据的解码、CRC产生与校验、帧装配与拆封,以及CSMA/CD介质访问控制等功能。
4)网卡的CSMA/CD控制功能、CRC校验、曼彻斯特编码与解码、收发器与冲突检测功能都是由专用的VLSI芯片实现的。Intel、Motorola、AMD和富士通等公司都能提供生产Ethernet网卡的VLSI。例如,利用Intel公司的82586、82588 Ethernet链路控制处理器与82501 Ethernet串行接口、82502收发器芯片,可以简单地构成实现Ethernet功能的网卡。
5)网卡将接收到的数据通过I/O总线、存储器总线以直接存储器访问(DMA)方式传送到计算机的主存中。待发送的数据也从主存传送到网卡的存储器中。网卡独立地将数据通过网络发送出去。从计算机接口编程的角度看,编写网卡的驱动程序和编写异步通信接口适配器、打印机驱动程序的方法是一致的。
6.从计算机体系结构的角度看物联网组成与结构
在了解了计算机网络与计算机系统结构的关系之后,我们进一步讨论物联网的组成与结构问题。图2-27给出了基于RFID物联网应用系统的结构。
图2-27 基于RFID物联网应用系统的结构示意图
从图中可以看出,基于RFID应用系统的物联网只是在计算机网络的基础上,增加了RFID标签、RFID读写器,以及将读写器接入计算机系统的通信适配器,其他部分并没有实质性的变化,变化的部分主要表现在应用层。这个结论也可以推广到基于无线传感器的物联网系统,以及采用其他传感技术的物联网应用系统中。