HTTP: World Wide Web

来源:互联网 发布:java 对数组随机排序 编辑:程序博客网 时间:2024/04/25 22:11
下载
第32章HTTP: World Wide Web
作者:Neal S. Jamison
本章内容包括:
• 万维网( World Wide We b )
• 统一资源定位器( U R L )
• We b服务器与浏览器
• 理解H T T P
• 高级主题
• We b语言
• We b的未来
万维网被称为1 9 9 0年至今最引人注目的应用。没有什么技术或工具像它一样被广泛应用。
We b的增长现象是互联网技术重要性和潜力的体现。
32.1 万维网(WWW)
万维网、信息高速公路、网络,无论怎样称呼, We b无疑是个人计算机产生以来最轰动
的发明。从9 0年代初的小实验网络发展到今天拥有2 0 0 0万用户,We b在短暂的时间迈出了巨
大的一步。在1 9 9 5年,我们在几千个We b站点间漫无目的地遨游时,还可以知道自己在某个
地方。而今天却必须依靠智能搜索引擎的帮助,导航寻找需要信息,甚至通过它在线订购和
付款。
本节讨论万维网( W W W )及它短暂但辉煌的历史。
32.1.1 Web简史
World Wide We b最初在C E R N,量子物理欧洲实验室开发。为了提高物理学家之间文件的
共享及通信。1 9 9 3年,国家超级计算机中心( N C S A )开发出了第一个图形We b浏览器—
M o s a i c。We b客户方的发展加速了World Wide We b的发展。
We b的创建者和维护者
Tim Berbers-Lee为创建We b的C E R N雇员。他编写了第一个We b服务器,定义了We b语言
及协议。同时也编写了第一个基本浏览器。
第一个流行的We b服务器(NCSA HTTPd)由Bob McCool在美国国家超级计算机应用中心
创建。该服务器是当前最流行的We b服务器Apache We b服务器的前身。第一个图形界面的浏
览器也在N C S A创建,它的开发者是Marc Andreessen,他后来创立了网景通信公司,开发出
了众所周知的Netscape Navigator。
Tim Berners-Lee现在是万维网论坛( W 3 C )的经理,W 3 C是负责We b及其协议和标准持续发
展的主要组织。关于W 3 C的详细信息及它们的主要工作参见站点: h t t p : / / w w w. w 3 c . o rg。
另一个重要组织是互联网工程任务组( I E T F )。在组织的指导原则中写道“互联网工程任
务组是一个松散的自由组织,它由致力于互联网和互联网技术发展的人组成” ( 见
h t t p : / / w w w. i e t f . o rg / )。因此,它在We b的发展过程中尤其在H T T P的发展中扮演重要的角色。
关于I E T F在互联网中的作用,请访问站点: h t t p : / / w w w. i c s . u c i . e d u / p u b / i e t f / h t t p /。
还存在许多其他组织致力于互联网和We b的发展和标准化。它们包括互联网体系结构论
坛( I A B )、互联网社团( I S O C )及互联网研究任务组( I RT F )。
32.1.2 Web的发展
在1 9 9 4年中期, We b由大约3 0 0 0个We b站点组成,约有3 0 0万人使用We b。今天,据
N i e l s e n / N e t R a t i n g s的估计( h t t p : / / w w w. n i e l s e n - n e t r a t i n g s . c o m )互联网用户已超过1亿人,We b服
务器已超过5 0 0万。
注意在上面提到的统计数字中,“人”指主机。很难统计使用We b的实际人口数;统
计主机数相对较为简单,而且任何人都会同意每台机器至少有一个使用者。
We b最初由一群科学家和工程师开发出的不成熟但非常有希望的媒介发展成为可靠、安
全的环境,可实现电子商务及其他重要的功能。随着计算机和网络技术的发展,我们可以预
见使用We b的人口将不断增长,其功能也将不断增强。
32.2 统一资源定位器
在We b上寻找信息的关键在于了解We b服务器和客户端如何定位服务器和文件的位置。
We b使用统一资源定位器策略( U R L )标识We b页和其他资源。
下面是一个U R L示例:
h t t p : / / w w w. w 3 c . o r g / P r o t o c o l s / i n d e x . h t m l
这个U R L可以将用户带到万维网论坛的We b站点。它可以分为以下几部分:
P r o t o c o l : / / (协议)
S e r v e r n a m e . d o m a i n (服务器名.域)
d i r e c t o r y / (目录)
f i l e (文件)
在上述示例中:
• 协议是H T T P。
• 全称域命名为w w w. w 3 c . o rg。
• 目录名为P r o t o c o l s。
• 文件为i n d e x . h t m l。
注意大多数Web服务器都配置为可自动提供缺省主页。在大多数情况下,缺省主页为
i n d e x . h t m l,其他可能的缺省主页为:h o m e . h t m l、d e f a u l t . h t m l ,、h o m e . h t m及i n d e x . h t m。
使用这一属性,URL: http://www. w 3 c . o rg / P r o t o c o l s /将返回P r o t o c o l s目录下的i n d e x . h t m l
文件。
其他常见的U R L为:
f t p : / /服务器域名/目录/文件。
f t p : / /用户名@服务器域名/目录/文件。
354使用第八部分使用基于I P的应用
下载
t e l n e t : / /服务器域名。
n e w s : / /新闻服务器域名/新闻组。
以上U R L分别表示通过匿名F T P请求文档,使用用户名访问F T P请求文档,使用t e l n e t访
问服务器,请求访问u s e n e t新闻组等。
用户也可以使用U R L向服务器传递数据。典型应用为向服务器方函数传递参数。例如:
h t t p : / /服务器域名/目录/文件/file.html? 用户名=Jamison & uid=300
此U R L向f i l e . h t m l主页传递一对参数:用户名J a m i s o n和UID 300。
有时,需要在U R L中包含特殊字符如空隔或斜杠( / )。此时,这些特殊字符必须重新编码
以避免服务器出现问题。编码过程(有时指1 6进制编码)包括将特殊字符用其1 6进制的数取代。
例如:假设用户需要在U R L中列出用户全名:
h t t p : / /服务器域名/目录/file.html? 用户名=Neal%20 Jamison
在示例中, N e a l和J a m i n s o n间的空隔由与空隔等价的1 6进制的数取代。在U R L中传递的
信息通常使用通用网关接口( C G I )程序处理。关于C G I的详细信息参见本章3 2 . 6节。
32.3 Web服务器与浏览器
We b服务器是We b的内容提供者。它响应客户端请求,并向客户端提供某种形式的数据。
通常,这些数据采用超文本标记语言( H T M L )。服务器也可提供其他形式的数据如:图像、声
音、应用程序,甚至是视频。We b浏览器是We b的客户端。浏览器包括与We b服务器建立通信
所需的软件及转换,并显示从服务器方返回数据的软件。表3 2 - 1列出了目前We b中主要的服务
器软件。表3 2 - 2列出了主流浏览器。
表32-1 主流We b服务器
表32-2 主流We b浏览器
A p a c h e与互联网哲学
互联网的主流We b服务器“免费”是不值得惊讶的。互联网就是由黑客与科学家
自由的思想和免费的软件构成。据1 9 9 9年7月统计,超过5 6%的We b服务器使用
A p a c h e。其次是使用微软I I S中的We b服务器,占2 2%。
A p a c h e及其他免费软件产品如P e r l编程语言和L i n u x操作系统的成功,再一次掀
起了自由软件或源码公开的热潮。目前, Netscape Navigator(http://www. m o z i l l a . o rg )
和AOL We b服务器( h t t p : / / w w w. a o l s e r v e r. c o m )也加入到这一浪潮中。其他已加入的公
第3 2章HTTP: World Wide We b使用355
下载
服务器对应U R L
浏览器对应U R L
司包括I B M和S u n公司等。
关于自由软件哲学的详细信息,请参见站点: h t t p : / / w w w. g n u . o rg / p h i l o s o p h y /。
A p a c h e 的详细信息可在h t t p : / / w w w. a p a c h e . o rg / 上可找到。L i n u x 信息可在
h t t p : / / w w w. l i n u x . c o m上找到。
We b服务器与浏览器的通信协议是超文本传输协议。
32.4 理解HTTP
h t t p协议使We b服务器和浏览器可以通过We b交换数据。它是一种请求/响应协议,即服务
器等待并响应客户方请求。H T T P不维护与客户方的连接,它使用可靠的T C P连接,通常采用
TCP 80端口。客户/服务器传输过程可分为四个基一步骤: 1) 浏览器与服务器建立连接; 2) 浏
览器向服务器请求文档; 3) 服务器响应浏览器请求; 4) 断开连接。H T T P是一种无状态协议,
它不维护连接的状态信息。
本节讨论H T T P协议的标准版本。
32.4.1 HTTP/1.1
注意在编写本书时, H T T P / 1 . 1是当前的标准,因此,本书讨论1 . 1版本。它在R F C
2616中描述,RFC文档可从http://www.w3c.org/Protocols/中找到。
为了使服务器与客户端通信成为可能, H T T P协议建立了一种由请求和响应消息组成的
We b语言。
1. 客户请求
客户请求包含以下信息:
• 请求方法
• 请求头
• 请求数据
请求方法是用于特定U R L或We b页面的程序。表3 2 - 3列出了可用的请求方法。
表32-3 HTTP请求方法
方法描述
G E T 请求指定的文档
H E A D 仅请求文档头
P O S T 请求服务器接收指定文档作为可执行的信息
P U T 用从客户端传送的数据取代指定文档中的内容
D E L E T E 请求服务器删除指定页面
O P T I O N S 允许客户端查看服务器的性能
T R A C E 用于测试—允许客户端查看消息回收过程
头信息是可选项,它用于向服务器提供客户端的其他信息。请求头在表3 2 - 4中显示。
表32-4 HTTP请求头
头描述头描述
A c c e p t 客户端接收的数据类型U s e r- A g e n t 客户方软件类型
A u t h o r i z a t i o n 认证消息,包括用户名和口令R e f e r e r 用户获取的We b页面
356使用第八部分使用基于I P的应用
下载
如果客户采用某种方法获取数据(如P O S T ),数据就放在头( h e a d e r )之后;否则客户机等待
从服务器传来的响应。
2. 服务器响应
服务器响应包括以下关键部分:
• 状态码
• 响应头
• 响应数据
H T T P定义了多组返回给浏览器的状态码。表3 2 - 5中详细列出了这些状态码信息。
表32-5 HTTP状态码
客户方错误( 1 x x ) 4 0 2 需要付费
1 0 0 继续4 0 3 禁止
1 0 1 交换协议4 0 4 未找到
成功( 2 x x ) 4 0 5 方法不允许
2 0 0 O K 4 0 6 不接受
2 0 1 已创建4 0 7 需要代理认证
2 0 2 接收4 0 8 请求超时
2 0 3 非认证信息4 0 9 冲突
2 0 4 无内容4 1 0 失败
2 0 5 重置内容4 11 需要长度
2 0 6 部分内容4 1 2 条件失败
重定向( 3 x x ) 4 1 3 请求实体太大
3 0 0 多路选择4 1 4 请求U R I太长
3 0 1 永久转移4 1 5 不支持媒体类型
3 0 2 暂时转移服务器错误
3 0 3 参见其他5 0 0 服务器内部错误
3 0 4 未修改5 0 1 未实现
3 0 5 使用代理5 0 2 网关失败
客户方错误( 4 x x ) 5 0 4 网关超时
4 0 0 错误请求5 0 5 H T T P版本不支持
4 0 1 未认证
响应头向客户方提供服务器和/或请求文档的信息。表3 2 - 6列出了所有头信息。所有的头
均以空行结束。
表32-6 HTTP响应头
方法描述
S e r v e r We b服务器信息
D a t e 当前日期/时间
Last Modified 请求文档最近修改时间
E x p i r e s 请求文档过期时间
Co n t e n t - l e n g t h 数据长度(字节)
Co n t e n t - t y p e 数据M I M E类型
W W W- a u t h e n t i c a t e 用于通知客户方需要的认证信息(如用户名、口令等)
如果有客户方请求的数据,数据放在响应头之后,否则服务器断开连接。
第3 2章HTTP: World Wide We b使用357
下载
32.4.2 MIME与Web
多用途互联网邮件扩充( M I M E )在We b中用于指定大量数据的类型(如文件或We b页面)。
M I M E使用户可发送多种格式的数据,而不单单是文本数据。由于使用了M I M E,用户可以发
送和接收包含非A S C I I码数据如声音、视频、图像应用等的页面。
当We b浏览器与服务器建立连接时,它们协商M I M E类型。浏览器向服务器发送它所能接
收的M I M E类型,这部分信息位于请求头标中。服务器通知客户方它发送的数据包含的M I M E
类型。
表3 2 - 7列出了在We b中常见的M I M E类型。
表32-7 We b中常见的M I M E类型
M I M E类型描述
t e x t / p l a i n 纯A S C I I码文本
t e x t / h t m l H T M L文本
i m a g e / g i f G I F图像
i m a g e / j p e g J P E G图像
a p p l i c a t i o n / m s w o r d Microsoft Wo r d
v i d e o / m p e g M P E G视频
a u d i o / w a v e Wa v e音频
a p p l i c a t i o n / x - t a r Ta r压缩数据
32.4.3 HTTP通信示例
我们已经讲述了服务器和浏览器通信的机制及可共享的数据类型,下面举例说明协议的
工作原理。
1. 请求
在本例中,浏览器请求文档的U R L为h t t p : / / w w w. h o s t n a m e . c o m / i n d e x . h t m l。所有的请求均
以空行结束。
浏览器使用G e t方法请求文档/ i n d e x . h t m l。浏览器声明它只能接收纯文本和h t m l数据,它
使用M o z i l l a / 4 . 5 ( N e t s c a p e )引擎。
2. 响应
服务响应包括状态码、一些头信息(以空行结束)及请求数据,假设数据存在,则响应信息
如下:
358使用第八部分使用基于I P的应用
下载
假设文档未找到,响应信息如下:
32.5 高级主题
本节简单讨论一些与We b相关的高级主题,这些高级主题包括:服务器方功能和安全信
息机制。
32.5.1 服务器方功能
We b服务器可以向浏览器提供范围较广的多种类型的数据,包括H T M L主页、视频、声音
和图像等。这些数据可来自静态主页和文件,也可以根据请求动态产生。动态内容可根据对
主页的实际请求动态生成。例如,对电话号码的表的查询结果就需根据用户的查询条件动态
产生。用于产生动态数据的技术包括:
• 通用网关接口
• 应用程序接口
• Java Servlets
• 服务器方J a v a S c r i p t
• 服务器方I n c l u d e
关于这些技术的详细信息,参见3 2 . 6节。
32.5.2 SSL和S-HTTP
安全套接字层(Secure Socket Layer,S S L )和安全H T T P ( S - H T T P )是We b上传输敏感信息的
协议。
S S L由网景通信公司开发,采用私钥加密算法传送敏感数据。它主要用于加强连接的安全。
基于S S L的服务器用h t t p s标识,以取代U R L中的h t t p。
关于S S L的详细信息,参见h t t p : / / h o m e . n e t s c a p e . c o m / s e c u r i t y / t e c h b r i e f s / s s l . h t m l。
S - H T T P是H T T P的增强版。它主要用于加强发送信息的安全。并非所有的浏览器和服务
器都支持S - H T T P。
32.6 Web语言
H T T P提供使We b服务器与浏览器通信的一组规则。但是,使我们对通信感兴趣的是We b
第3 2章HTTP: World Wide We b使用359
下载
编程语言,它向We b的使用者提供他们需要的信息。最通用的We b编程语言是H T M L。但是,
还存在其他一些We b编程语言,它们或者与H T M L结合使用,或单独使用。本节将讨论常见的
We b编程语言。
32.6.1 HTML
超文本标记语言是所有浏览器都可以理解的标准语言。它是一组标明We b页面内容的标
记组成。H T M L与平台无关,因此,可以高效地从一个计算机环境传输到另一个计算机环境。
这些特性使H T M L成为We b中最通用的语言。
注意HTML是标准通用标记语言(Standard Generalized Markup Language,SGML)的一
个应用。S G M L是电子文档标记的国际标准。使用S G M L,用户可以创建类似于H T M L
的文档类型定义(Document Type Definitions,DTD)。
H T M L使用标记指明信息的表现形式,标记的语法格式如下:
< t a g >信息< / t a g >
类型开始于< t a g >结束于< / t a g >,并且标记可以嵌套。
HTML We b页面示例如下:
上例说明了H T M L的简单性。在信息两边的标记指定信息的风格、字体类型、颜色等。
关于H T M L的详细信息,用户可访问站点h t t p : / / w w w. b u i l d e r. c o m。
32.6.2 XML
扩展标记语言( X M L )是S G M L的子集,它使通用的S G M L直接用于We b。X M L可看作
S G M L除去复杂且很少使用的特性后剩下的部分。X M L文档示例如下:
虽然X M L相对较新,但它已经得到支持。微软的IE 5支持X M L,M o z i l l a (网景公司源码公
开的浏览器)也有支持X M L的版本,而且正在开发基于M o z i l l a的浏览器D o c Z i l l a,它可读取
360使用第八部分使用基于I P的应用
下载
H T M L、X M L和S G M L (参见h t t p : / / w w w. d o c z i l l a . c o m )。
关于X M L的详细信息,参见W 3 C站点h t t p : / / w w w. w 3 c . o rg / x m l或访问站点http:// www.
u c c . i e / x m l /。
32.6.3 CGI
通用网关接口( C G I )是We b服务器向基于C G I的程序传递数据的标准。C G I程序可以使用任
何语言编写,但它通常使用C或P e r l语言编写。C G I脚本的典型用法是从We b页面上获取信息,
处理这些信息然后向用户提供他所需的信息。
关于C G I的详细信息,参见h t t p : / / w w w. w 3 . o rg / C G I。
P e r l
P e r l是源码公开的编程语言,通常用于We b。因为其文本处理能力出众,所以最早用于
U n i x系统,系统管理员使用它来简化日常工作。在We b应用中,P e r l语言的文本处理能力再一
次发挥作用。
下面的示例使用Perl CGI脚本向用户输出信息:
关于P e r l的详细信息,请访问站点h t t p : / / w w w. p e r l . o rg / p e r l . h t m l。
32.6.4 Java
J a v a语言由S u n公司开发,与C + +类似,也是一种面向对象的程序设计语言。J a v a比C + +
更容易使用而且更加健壮。因此,它是We b开放的最佳选择。关于J a v a的详细信息,参见
h t t p : / / j a v a . s u n . c o m。
A p p l e t与S e r v l e t
应用到We b上的J a v a主要有两种方式:在客户端或在服务器端。客户方J a v a程序(称为
第3 2章HTTP: World Wide We b使用361
下载
A p p l e t )从服务器方下载,则客户方执行,其执行区域称为S a n d b o x。因为A p p l e t通常较大,下
载到客户方往往需要较长时间。出于安全等方面的考虑,在客户方执行时, A p p l e t的功能也
受到限制。例如,A p p l e t不可以写访问客户计算机,也不能运行本地程序。
另一种运行J a v a的方法是在服务器方执行,称为S e r v l e t。虽然, S e r v l e t可能需要更多的
We b服务器处理时间,但它大大削减了将数据传送到客户方的时间,并取消了对于A p p l e t的安
全限制。S e r v l e t的性能比C G I程序好。在执行完成后, S e r v l e t仍保留在内存区中,使下次执行
更快。C G I程序不驻留内存。
32.6.5 JavaScript
J a v a S c r i p t由网景公司开发,使We b开发人员可在他们的主页中添加交互功能。常用的客
户方变量有点击数、按钮及其他交互性内容。J a v a S c r i p t还可以实现C G I程序的功能。例如:
We b 格式的错误检查:与以往将数据发送回服务器来确认完整性及正确性不同,通过
J a v a S c r i p t,可以在客户方实现上述操作,这样可获得更高的性能。示例如下:
服务器方Java Script是Java Script的一个版本。它运行于服务器方,实现与C G I类似的功
能。Netscape Enterprise Server拥有较强的绑定服务器方J a v a S c r i p t能力。关于J a v a S c r i p t的详
细信息,参见h t t p : / / d e v e l o p e r. n e t s c a p e . c o m / t e c h /。
32.6.6 动态服务器页面
微软的动态服务器页面在We b页面上完成与C G I类似的功能。与C G I不同, A S P仅需要简
362使用第八部分使用基于I P的应用
下载
单的脚本语言如J a v a S c r i p t、V B S c r i p t或Visual Basic就可实现。
关于A S P及其支持语言的详细信息,参见http://msdn.microsoft.com/ workshop
/ s e r v e r / a s p / A S P o v e r. a s p。
32.7 Web的未来
本节讨论We b的发展趋势,虽然We b仅出现几年,但它呈现出强劲的发展势头。在其增长
的背后是强大的发展潜力。随着We b使用人数的不断增长,其功能也不断增加。H T T P - n g、
I P v 6、I I O P等技术给We b带来无限生机。
32.7.1 HTTP-ng
作为下一代H T T P协议, H T T P - n g的安全性更好,速度更高。它将更好地支持商业应用。
其改进包括:
• 模块化强
• 网络效率更高
• 安全性更好
• 结构简单
关于H T T P - n g的详细信息,参见h t t p : / / w w w. w 3 . o rg / P r o t o c o l s / H T T P - N G /。
32.7.2 IIOP
I I O P (互联网对象请求处理协议)为用户提供更有效的We b访问方式。与H T T P不同,它只
能在We b上传递文本, I I O P可以传递更复杂的数据,如数组和其他对象。I I O P通过We b实现
C O R B A (通用对象请求体系结构)。C O R B A使程序员开发与平台无关的应用。
关于I I O P及C O R B A的详细信息,请访问对象管理组织( O M G )的主页h t t p : / / w w w. o m g . o rg。
32.7.3 IPv6
下一代互联网正在孕育之中。网际协议版本6 ( I P v 6 )也称I P n g,在许多方面对正在使用的
网际协议I P v 4进行了改进:
• 增加了地址空间
• 增加了安全性/私用性
• 提高了网络服务质量
关于I P v 6的详细信息,参见h t t p : / / w w w. i p v 6 . o rg。
32.7.4 IPP
互联网打印协议( I P P )由N o v e l l和X e r o x提出并由I E T F开发。I P P的基础是H T T P / 1 . 1,它为
用户提供多种打印功能:
• 确定可用的打印机
• 提交和取消打印作业。
• 查询打印作业的状态。
关于I P P的详细信息请查阅L E T F的主页h t t p : / / w w w. ietf. org/html. charters/ipp-charter. h t m l .。
第3 2章HTTP: World Wide We b使用363
下载
32.8 小结
本章介绍了万维网及其实现技术。首先我们讲述了统一资源定位器( U R L )及如何使用U R L
从We b服务器上获取信息,然后讨论了We b服务器、浏览器及使两者传输信息的协议。其中,
我们详细讲述了H T T P / 1 . 1。随后,我们浏览了多种We b语言: H T M L、P e r l和J a v a等。最后,
我们展望We b的未来,介绍了可能改变We b的革命性技术: H T T P - n g、I I O P、I P v 6等。We b
U R L贯穿本章。读者可以通过这些U R L访问相关站点,获取需要的信息。
364使用第八部分使用基于I P的应用
下载 
原创粉丝点击