1
计算机网络技术理论与实践
1.9.3 8.3 Web服务原理及实践

8.3 Web服务原理及实践

万维网是无数个网络站点和网页的集合,是由超链接连接而成的多媒体信息的集合。万维网的历史很短,1989年CERN(欧洲粒子物理实验室)的研究人员为了研究需要,希望能开发出一种共享资源的远程访问系统,这种系统能够提供统一的接口来访问各种不同类型的信息,包括文字、图像、音频、视频等信息。1990年完成了最早期的浏览器产品,1991年开始在内部发布WWW,这就是万维网的开始。目前,大多数知名公司都在Internet上建立了自己的万维网站。

万维网上最主要的构成部分是Web页面(Web Page),它由多个对象构成。对象(Object)是指可由单个URL寻址的文件,例如HTML文件、JPG图像、GIF图像、JAVA小应用程序、语音片段等。大多数Web页面由单个基本HTML文件和若干个所引用的对象构成。例如,如果一个Web页面包含一个HTML文本文件和5个JPEG图像,那么它由6个对象构成,即基本HTML文件对象加5个图像对象。基本HTML文件使用相应的URL来引用本页面的其他对象。每个URL由存放该对象的服务器主机名和该对象在服务器上的路径名两部分构成。

例如,一个图像的URL为:

www.sina.com/picpath/picture.gif

其中www.sina.com是一个主机名,/picpath/picture.gif是一个路径名。

在万维网上需要通过Web服务才能访问Web页面。Web服务是典型的基于客户机/服务器模式的Internet服务,客户端使用Web浏览器,而服务器端使用Web服务器,它们之间采用应用层协议HTTP进行消息传输。Web浏览器是Web的用户代理,它向用户显示所请求的Web页面,并提供大量的导航与配置特性。Web浏览器还实现HTTP的客户端。当前流行的Web浏览器有Netscape Communicator、firefox和微软的IE等。Web服务器存放可由URL寻址的Web对象,它还实现HTTP的服务器端。流行的Web服务器有Apache、微软的IIS以及Netscape Enterprise Server等。Web服务的应用层协议HTTP是Web的核心。HTTP在Web的客户程序和服务器程序中得以实现。运行在不同端系统上的客户程序和服务器程序通过交换HTTP消息彼此交流。HTTP定义这些消息的结构以及客户机和服务器之间如何交换这些消息。

HTTP协议定义Web客户端(即浏览器)如何从Web服务器上请求Web页面,以及服务器如何把Web页面传送给客户端。当用户请求一个Web页面(例如,点击某个超链接)时,Web浏览器把请求该页面中各个对象的HTTP请求消息发送给Web服务器。Web服务器收到请求后,以含有这些对象的HTTP响应消息作为响应。Web浏览器将收到的对象显示在浏览器的窗口中。不同的浏览器可能会以不同的方式解释(也就是向用户显示)同一个Web页面。HTTP与客户端如何解释Web页面没有任何关系,其规范仅仅定义了HTTP客户端和服务器端之间的通信协议。

到1997年年底,基本上所有的Web浏览器和Web服务器软件都实现了在RFC 1945中定义的HTTP/1.0版本。1998年年初,一些Web服务器软件和浏览器软件开始实现在RFC 2616中定义的HTTP/1.1版本。HTTP/1.1与HTTP/1.0后向兼容。

HTTP/1.0和HTTP/1.1都把TCP作为底层的传输协议。HTTP客户端首先发起建立与服务器的TCP连接。一旦连接建立,浏览器进程和服务器进程就可以通过TCP连接进行数据收发。TCP给HTTP提供一种可靠的数据传输服务,保证由客户端发出的每个HTTP请求消息都能够正确无误地到达服务器端,由服务器端发出的每个HTTP响应消息最终也可以无损地到达客户端。

HTTP服务器可以响应HTTP客户端的请求,但不会存储关于该客户端的任何状态信息。当某个客户端在几秒钟内再次请求同一个对象时,服务器也会重新发送这个对象,因为它并不记得刚才给这个客户端已经发过一遍。所以,HTTP服务器不维护客户端的状态信息,是一个无状态协议(Stateless Protocol)。