HTTP权威指南 -- 第1章 HTTP概述
2013-09-09 20:24
190 查看
HTTP权威指南
第一部分:HTTP:Web的基础
本部分主要概述HTTP 协议。接下来的4章介绍了Web 的基础构件以及HTTP的核 心技术。• 第1 章简要概述HTTP。
• 第2 章详细介绍了URL 的格式,以及URL 在因特网上命名的各种类型的资源, 并对其向URN 的发展作了概要介绍。
• 第3 章详细说明了用来传输Web 内容的HTTP 报文。
• 第4 章讨论了一些通过HTTP 管理TCP 连接时常被误解且很少有文档说明的规 则和行为。
第1章 HTTP概述
本章是对HTTP 的简要介绍。在本章中可以看到Web 应用程序是如何使用HTTP 进 行通信的,这样就可以对HTTP 如何完成其工作有个大概印象。我们将特别介绍以 下方面的内容:• Web 客户端与服务器是如何通信的;
• (表示Web 内容的)资源来自何方
• Web 事务是怎样工作的;
• HTTP 通信所使用的报文格式;
• 底层TCP 网络传输;
• 不同的HTTP 协议变体;
• 因特网上安装的大量HTTP 架构组件中的一部分。
1.1 HTTP——因特网的多媒体信使
1.2 Web客户端和服务器
1.3 资源
Web 服务器是Web 资源(Web resource)的宿主。Web 资源是Web 内容的源头。 最简单的Web 资源就是Web 服务器文件系统中的静态文件。这些文件可以包含 任意内容:文本文件、HTML 文件、微软的Word 文件、Adobe 的Acrobat 文件、 JPEG 图片文件、AVI 电影文件,或所有其他你能够想到的格式。 但资源不一定非得是静态文件。资源还可以是根据需要生成内容的软件程序。这些 动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。1.3.1 媒体类型
因特网上有数千种不同的数据类型,HTTP 仔细地给每种要通过Web 传输的对 象都打上了名为MIME 类型(MIME type) 的数据格式标签。最初设计MIME (Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同 的电子邮件系统之间搬移报文时存在的问题。MIME 在电子邮件系统中工作得非常 好,因此HTTP 也采纳了它,用它来描述并标记多媒体内容。 Web 服务器会为所有HTTP 对象数据附加一个MIME 类型(参见图1-3)。当Web
浏览器从服务器中取回一个对象时,会去查看相关的MIME 类型,看看它是否知道 应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图 片文件、解析并格式化HTML 文件、通过计算机声卡播放音频文件,或者运行外部 插件软件来处理特殊格式的数据。
MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间 由一条斜杠来分隔。
• HTML 格式的文本文档由text/html 类型来标记。
• 普通的ASCII 文本文档由text/plain 类型来标记。
• JPEG 版本的图片为image/jpeg 类型。
• GIF 格式的图片为image/gif 类型。
• Apple 的QuickTime 电影为video/quicktime 类型。
• 微软的PowerPoint 演示文件为application/vnd.ms-powerpoint 类型。
常见的MIME 类型有数百个,实验性或用途有限的MIME 类型则更多。附录D 提 供了一个非常完整的MIME 类型列表。
1.3.2 URI
每个Web 服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是 什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。 URI 就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。
1.3.3 URL
统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器 上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。 图1-4 显示了URL 如何精确地说明某资源的位置以及如何去访问它。
表1-1 URL实例
URL | 描 述 |
http://www.oreilly.com/index.html | O’Reilly & Associates 公司的主URL |
http://www.yahoo.com/images/logo.gif | Yahoo! 的Web 站点标志URL |
http://www.joes-hardware.com/inventory-check. cgi?item=12731 | 一个查看库存条目#12731 是否有现货的程序的 URL |
ftp://joe:tools4u@ftp.joes-hardware.com/lockingpliers. gif | 以密码保护的FTP 作为访问协议的lockingpliers. gif 图片文件的URL |
• URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这
部分通常就是HTTP 协议(http://)。
• 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
• 其余部分指定了Web 服务器上的某个资源(比如,/specials/saw-blade.gif)。
现在,几乎所有的URI 都是URL。
1.3.4 URN
URI 的第二种形式就是统一资源名(URN)。URN 是作为特定内容的唯一名称使用 的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬 移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
比 如,不论因特网标准文档RFC 2141 位于何处(甚至可以将其复制到多个地方), 都可以用下列URN 来命名它: urn:ietf:rfc:2141 URN 仍然处于试验阶段,还未大范围使用。为了更有效地工作,URN 需要一个支 撑架构来解析资源的位置。而此类架构的缺乏也延缓了其被采用的进度。
1.4 事务
一个HTTP 事务由一条(从客户端发往服务器的)请求命令和一个(从服务器 发回客户端的)响应结果组成。这种通信是通过名为HTTP 报文(HTTP message) 的格式化数据块进行的包含命令和URI的HTTP请求报文:
|------》 GET /specials/saw-blade.gif HTTP/1.0 -----|
|------》 Host: www.joes-hardware.com -------|--------》 www.joes-hardware.com
客户端 --| |
| |--- HTTP/1.0 200 OK | |
|《--|--- Content-type: image/gif | -----《--------------------------------------------- |
|--- Content-length: 8572 | 包含事务结果的HTTP响应报文
1.4.1 方法
HTTP 支持几种不同的请求命令,这些命令被称为HTTP 方法(HTTP method)。每 条HTTP 请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取 一个Web 页面、运行一个网关程序、删除一个文件等)。
HTTP方法 | 描 述 |
GET | 从服务器向客户端发送命名资源 |
PUT | 将来自客户端的数据存储到一个命名的服务器资源中去 |
DELETE | 从服务器中删除命名资源 |
POST | 将客户端数据发送到一个服务器网关应用程序 |
HEAD | 仅发送命名资源响应中的HTTP 首部 |
1.4.2 状态码
每条HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码, 告知客户端请求是否成功,或者是否需要采取其他动作。
表1-3 显示了几种常见的 状态码。
HTTP状态码 | 描 述 |
200 | OK。文档正确返回 |
302 | Redirect(重定向)。到其他地方去获取资源 |
404 | Not Found(没找到)。无法找到这个资源 |
伴随着每个数字状态码,HTTP 还会发送一条解释性的“原因短语”文本(参见图 1-5 中的响应报文)。包含文本短语主要是为了进行描述,所有的处理过程使用的都 是数字码。
HTTP 软件处理下列状态码和原因短语的方式是一样的。
200 OK
200 Document attached
200 Success
200 All’s cool, dude
1.4.3 Web页面中可以包含多个对象
复合Web 页面要为每个嵌入式资源使用一个单独的HTTP 事务
1.5 报文
现在我们来快速浏览一下HTTP 请求和响应报文的结构。第3 章会深入研究HTTP 报文。HTTP 报文是由一行一行的简单字符串组成的。HTTP 报文都是纯文本,不是二进 制代码,所以人们可以很方便地对其进行读写1。
图1-7 显示了一个简单事务所使用 的HTTP 报文。
(a) 请求报文 (b) 响应报文
GET /test/hi-there.txt HTTP/1.0 起始行 HTTP/1.0 200 OK
Accept: text/* 首部 Content-type: text/plain
Accept-Language: en,fr 主体 Content-length: 19 Hi! I’m a message!
图1-7 由一行行的简单文本结构组成的HTTP 报文
从Web 客户端发往Web 服务器的HTTP 报文称为请求报文(request message)。从 服务器发往客户端的报文称为响应报文(response message),此外没有其他类型的 HTTP 报文。HTTP 请求和响应报文的格式很类似。
HTTP 报文包括以下三个部分。
• 起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说 明出现了什么情况。
• 首部字段
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为 了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首 部字段和添加新行一样简单。
• 主体
空 行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括 了要发送给Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起 始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意 的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含 文本。
相关文章推荐
- HTTP权威指南 第1章 HTTP概述
- Struts 2.1权威指南―第1章 Struts 2概述
- <Http权威指南 1,2,3>Http概述
- HTTP 权威指南 详解 ( 一、概述 )
- [置顶] 读《http 权威指南后》,写的一个只有18K 大小的httpClient
- HTTP权威指南摘录
- JS权威指南 读书笔记 第一章 JavaScript概述
- HTTP权威指南 读书笔记-server
- Web架构“圣经”-------HTTP权威指南--5
- Web架构“圣经”-------HTTP权威指南--2
- 【转】《Squid 中文权威指南》第1章 译者:彭勇华
- HTTP权威指南-基础知识-URL与HTTP报文
- Web架构“圣经”-------HTTP权威指南--1
- HTTP权威指南之连接管理
- http权威指南-http连接管理
- HTTP权威指南 1~6章笔记
- HTTP权威指南 第3章 HTTP报文
- Web架构“圣经”-------HTTP权威指南--6
- HTTP 权威指南学习计划
- Web架构“圣经”-------HTTP权威指南--3