HTTP权威指南(读书笔记) 1

第一部分 HTTP:Web 的基础
第二部分 HTTP 结构
第三部分 识别、认证与安全
第四部分 实体、编码和国际化
第五部分 内容发布与分发

第六部分 附录


第一部分用4 章的篇幅描述了Web 的基础构件与HTTP 的核心技术。
• 第 1 章简要介绍了 HTTP。
• 第 2 章详细阐述了统一资源定位符(Uniform Resource Locator,URL)的格式,
以及URL 在因特网上命名的各种类型的资源,还介绍了统一资源名(Uniform
Resource Name,URN)的演变过程。
• 第 3 章详细介绍了 HTTP 报文是如何传送 Web 内容的。
• 第 4 章解释了 HTTP 连接管理过程中一些经常会引起误解且少有文档说明的规则和
行为。
第二部分重点介绍了Web 系统的结构构造块:HTTP 服务器、代理、缓存、网关以
及机器人应用程序。(当然,Web 浏览器也是一种构造块,但在本书的第一部分已
经对其进行过很详细的介绍了。)第二部分包含以下6 章。

• 第 5 章简要介绍了 Web服务器结构。
• 第 6 章深入研究了 HTTP 代理服务器,HTTP 代理服务器是作为 HTTP 服务与控制
平台使用的中间服务器。
• 第 7 章深入研究了 Web 缓存的问题。缓存是通过保存常用文档的本地副本来提高
性能、减少流量的设备。
• 第 8 章探讨了网关和应用服务器的概念,通过它们,HTTP 就可以与使用不同协议
(包括SSL 加密协议)的软件进行通信了。
• 第 9 章介绍了 Web 上的各种客户端类型,包括无处不在的浏览器、机器人和网络
蜘蛛以及搜索引擎。
• 第 10 章讲述了仍在研究之中的 HTTP 协议:HTTP-NG 协议。
第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
包含下列4 章。

• 第 11章讨论了一些识别用户的技术,以便向用户提供私人化的内容服务。
• 第 12 章重点介绍了一些验证用户身份的基本方式。这一章还对 HTTP 认证机制与
数据库的接口问题进行了研究。
• 第 13 章详述了摘要认证,它是对 HTTP 的建议性综合增强措施,可以大幅度提高
其安全性。
• 第 14 章说明了因特网的密码体系、数字证书以及SSL。
第四部分涵盖HTTP 报文主体和Web 标准,前者包含实际内容,后者描述并处理主
体内容。第四部分包含以下3 章。

• 第 15 章介绍了 HTTP 内容的结构。
• 第 16 章探讨了一些 Web 标准,通过这些标准,全球范围内的用户都可以交换以不
同语言和字符集表示的内容。
• 第 17 章解释了一些用于协商可接受内容的机制。
第五部分介绍了发布和传播Web 内容的技巧。包括以下4 章。
• 第 18 章讨论了在现代的网站托管环境中布署服务器的方式以及 HTTP 对虚拟网站
托管的支持。
• 第 19 章探讨了一些创建 Web内容,并将其装载到 Web服务器中去的技术。
• 第 20 章介绍了能够将输入 Web流量分散到一组服务器上去的一些工具和技术。
• 第 21 章介绍了一些日志格式和常见问题。


第一章 HTTP概述

Web 浏览器、服务器和相关的Web 应用程序都是通过HTTP 相互通信的。HTTP 是
现代全球因特网中使用的公共语言。

HTTP 使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够
确保数据在传输的过程中不会被损坏或产生混乱。

浏览一个页面时( 比如http://www.oreilly.com/index.html), 浏览器会向服务器
www.oreilly.com 发送一条HTTP 请求1)。服务器会去寻找所期望的对
象(在这个例子中就是/index.html),如果成功,就将对象、对象类型、对象长度以
及其他一些信息放在HTTP 响应中发送给客户端。

每个Web 服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是
什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。
URI 就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。

统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器
上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。

大部分URL 都遵循一种标准格式,这种格式包含三个部分。
• URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这
部分通常就是HTTP 协议(http://)。
• 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
• 其余部分指定了 Web 服务器上的某个资源(比如,/specials/saw-blade.gif)

现在,几乎所有的URI 都是URL。


我们来更仔细地看看客户端是怎样通过HTTP 与Web 服务器及其资源进行事务处理
的。一个HTTP 事务由一条(从客户端发往服务器的)请求命令和一个(从服务器
发回客户端的)响应结果组成。这种通信是通过名为HTTP 报文(HTTP message)
的格式化数据块进行的。

HTTP 支持几种不同的请求命令,这些命令被称为HTTP 方法(HTTP method)。每
条HTTP 请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取
一个Web 页面、运行一个网关程序、删除一个文件等)。表1-2 列出了五种常见的
HTTP 方法。

表1-2 一些常见的HTTP方法
HTTP 方法    描  述
GET 从服务器向客户端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应用程序
HEAD 仅发送命名资源响应中的HTTP 首部

每条HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,
告知客户端请求是否成功,或者是否需要采取其他动作。表1-3 显示了几种常见的
状态码。

表1-3 一些常见的HTTP状态码
HTTP 状态码                                         描 述
200     OK。                                 文档正确返回
302 Redirect(重定向)            到其他地方去获取资源
404 Not Found(没找到)         无法找到这个资源

伴随着每个数字状态码HTTP 还会发送一条解释性的“原因短语”文本“。包含文本短

语主要是为了进行描述,所有的处理过程使用的都是数字码

HTTP 报文是由一行一行的简单字符串组成的。HTTP 报文都是纯文本,不是二进
制代码,所以人们可以很方便地对其进行读写1。图1-7 显示了一个简单事务所使用
的HTTP 报文。从Web 客户端发往Web 服务器的HTTP 报文称为请求报文(request message)。从
服务器发往客户端的报文称为响应报文(response message),此外没有其他类型的
HTTP 报文。HTTP 请求和响应报文的格式很类似。


HTTP 报文包括以下三个部分。
• 起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说
明出现了什么情况。
• 首部字段
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为
了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首
部字段和添加新行一样简单。
• 主体
空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括
了要发送给Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起
始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意
的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含
文本。


概要介绍了HTTP 报文的构成之后,我们来讨论一下报文是如何通过传输控制协议
(Transmission Control Protocol,TCP)连接从一个地方搬移到另一个地方去的。

HTTP 是个应用层协议。HTTP 无需操心网络通信的具体细节;它把联网的细节都
交给了通用、可靠的因特网传输协议TCP/IP。

TCP 提供了:

• 无差错的数据传输;
• 按序传输(数据总是会按照发送的顺序到达);
• 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)。

只要建立了TCP 连接,客户端和服务器之间的报文交换就不会丢失、不会被破坏,
也不会在接收时出现错序了。


在HTTP 客户端向服务器发送报文之前,需要用网际协议(Internet Protocol,IP)
地址和端口号在客户端和服务器之间建立一条TCP/IP 连接。

   基本的浏览器连接处理

步骤如下:
(a) 浏览器从URL 中解析出服务器的主机名;
(b) 浏览器将服务器的主机名转换成服务器的IP 地址;
(c) 浏览器将端口号(如果有的话)从URL 中解析出来;
(d) 浏览器建立一条与Web 服务器的TCP 连接;
(e) 浏览器向服务器发送一条HTTP 请求报文;
(f) 服务器向浏览器回送一条HTTP 响应报文;
(g) 关闭连接,浏览器显示文档。


Web的结构组件
在本章的概述中,我们重点介绍了两个Web 应用程序(Web 浏览器和Web 服务器)
是如何相互发送报文来实现基本事务处理的。在因特网上,要与很多Web 应用程序
进行交互。我们将列出其他一些比较重要的应用程序,如下所示。
• 代理
位于客户端和服务器之间的HTTP 中间实体。
• 缓存
HTTP 的仓库,使常用页面的副本可以保存在离客户端更近的地方。
• 网关
连接其他应用程序的特殊Web 服务器。
• 隧道

对HTTP 通信报文进行盲转发的特殊代理。
• Agent 代理
发起自动HTTP 请求的半智能Web 客户端。


      代理位于客户端和服务器之间,接收所有客户端的HTTP 请求,并
将这些请求转发给服务器(可能会对请求进行修改之后转发)。对用户来说,这些应
用程序就是一个代理,代表用户访问服务器.

     Web 缓存(Web cache)或代理缓存(proxy cache)是一种特殊的HTTP 代理服务
器,可以将经过代理传送的常用文档复制保存起来。下一个请求同一文档的客户端
就可以享受缓存的私有副本所提供的服务了。客户端从附近的缓存下载文档会比从远

程Web 服务器下载快得多。HTTP 定义了很多功能,使得缓存更加高效,并规范了文

档的新鲜度和缓存内容的隐私性。


         网关(gateway)是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于
将HTTP 流量转换成其他的协议。网关接受请求时就好像自己是资源的源端服务器
一样。客户端可能并不知道自己正在与一个网关进行通信。


        隧道(tunnel)是建立起来之后,就会在两条连接之间对原始数据进行盲转发的
HTTP 应用程序。HTTP 隧道通常用来在一条或多条HTTP 连接上转发非HTTP 数
据,转发时不会窥探数据。


       用户Agent 代理(或者简称为Agent 代理)是代表用户发起HTTP 请求的客户端程
序。所有发布Web 请求的应用程序都是HTTP Agent 代理。到目前为止,我们只提
到过一种HTTP Agent 代理:Web 浏览器,但用户Agent 代理还有很多其他类型。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值