HTTP权威指南
上QQ阅读APP看书,第一时间看更新

前言

HTTP(Hypertext Transfer Protocol,超文本传输协议HTTP译为“超文本传输协议”,其中“transfer”使用了“传输”的含义,但依据HTTP制定者之一Roy Fielding博士的论文,“transfer”表示的是“(状态的)转移”,而不是“传输”。怎样翻译才更符合HTTP的原意,其讨论可参见图灵社区的文章,地址是ituring.com.cn/article/details/1817。)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。

HTTP起初是一个简单的协议,因此你可能会认为关于这个协议没有太多好说的。但现在,你手上拿着的却是一本将近两斤重的书。如果你想知道我们怎么会写出一本700多页的关于HTTP的书,就去看看目录吧。本书不仅仅是一本HTTP首部参考手册,它还是一本名副其实的Web架构“圣经”。

本书中,我们会将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,我们对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。而且,为了节省大家寻找参考文献的时间,我们还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。在条理清晰的附录中,可以找到按照字母排序的首部参考(这些首部构成了最常见的HTTP文本的基础)。我们希望这种概念性的设计有助于读者更好地使用HTTP。

本书是为所有希望理解HTTP和Web底层结构的人编写的。软硬件工程师也可以将本书作为HTTP及相关Web技术参考书使用。系统架构师和网络管理员可以通过本书更好地了解如何设计、实现并管理复杂的网络架构。性能工程师和分析人员可以从缓存和性能优化的相关章节中获益。市场营销和咨询专家还可以通过概念介绍更好地理解Web技术的前景。

本书澄清了一些常见的误解,推荐了“各种业内诀窍”,提供了便捷的参考资料,并且用通俗易懂的语言阐述了枯燥且令人费解的标准规范,还详细探讨了Web正常工作所必需且互相关联的技术。

本书创作历时良久,是由很多热衷于因特网技术的人共同完成的,希望它能对你有所帮助。

运行实例:Joe的五金商店

本书的很多章节都涉及了一个假想的在线五金与家装商店示例,通过这个“Joe的五金商店”来说明一些技术概念。我们为这个商店构建了一个真实的Web站点(http://www.joes-hardware.com),以便大家能够测试书中的部分实例。只要本书仍在销售,我们就会一直维护好这个Web站点。

本书内容

本书包含21章,分为5个逻辑部分(每部分都是一个技术专题),以及8个很有用的附录,这些附录包含了参考资料,以及对相关技术的介绍。

第一部分 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章介绍了一些日志格式和常见问题。

第六部分是一些很有用的参考附录,以及相关技术的教程。

· 附录A详述了统一资源描述符(Uniform Resource Identifier, URI)方案所支持的协议。

· 附录B列出了HTTP的响应代码,方便使用。

· 附录C提供了HTTP首部字段的参考列表。

· 附录D列出了大量的MIME类型,解释了MIME类型的注册方式。

· 附录E介绍了HTTP认证中使用的Base-64编码。

· 附录F详述了如何实现HTTP中的各种认证方案。

· 附录G定义了HTTP首部的语言标签值。

· 附录H列出了用以支持国际化HTTP的字符编码。

每章都包含很多实例,以及到其他相关的参考资料的链接。

排版约定

本书使用了下列排版约定。

· 楷体

用于URL、C函数、命令名、MIME类型、新术语的定义以及重点内容。

· 等宽字体

用于计算机的输出、代码以及所有文字文本。

· 加粗等宽字体

用于用户的输入。

意见及问题

请将有关此书的意见及问题发给出版商:

美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

本书有一个Web页面,上面列出了勘误表、一些实例以及所有的附加信息。可以通过以下链接来访问这个页面。

http://www.oreilly.com/catalog/httptdg/

为本书提意见或者询问一些技术性问题,可以向以下地址发送邮件。

bookquestions@oreilly.com

更多与书籍、会议、资源中心以及O'Reilly网络有关的问题,都请参见O'Reilly的网站。

http://www.oreilly.com

致谢

本书是很多人共同劳动的成果。五位作者要感谢一些人,感谢他们为这本书所作出的巨大贡献。

首先,我们要感谢O'Reilly的编辑Linda Mui。Linda早在1996年就与David和Brian进行了首次接触,她还提炼了几个概念,并将其融入到今天大家拿到的这本书中。Linda还帮助我们这帮首次写书、徘徊不定的人协调一致地按计划逐步完成了这本书的写作(尽管我们完成得并不怎么快)。最重要的是,Linda给了我们一个创作此书的机会。我们要对她表示由衷的感谢。

我们还要感谢以下人士,他们非常聪明博学而且非常友善,为校对、注释并修订本书草稿花费了大量精力。他们是:Tony Bourke、Sean Burke、Mike Chowla、Shernaz Daver、Fred Douglis、Paula Ferguson、Vikas Jha、Yves Lafon、Peter Mattis、Chuck Neerdaels、Luis Tavera、Duane Wessels、Dave Wu和Marco Zagha。他们的一些观点和建议大大提升了本书的质量。

本书大部分精美的插图都是由O'Reilly的Rob Romano制作的。为了能够更加清晰地描述一些微妙的概念,本书使用了大量详尽备至的插图。其中很多插图制作起来都很费劲,而且还经过了大量的修改。如果一幅图相当于一千个字的话,Rob就相当于为本书增加了数百页的篇幅。

Brian还要特别感谢所有作者对本项目的付出。为了对HTTP作出首次详细而又切实可行的剖析,作者们投入了大量的时间。其间虽然出现了婚礼、孩子出世、刻不容缓的工作项目、创业公司起步以及就读研究生院等诸多问题,但作者们的共同努力使这个项目得以圆满完成。我们相信,每个人的努力付出都是值得的,而且最重要的是,这项工作为大家提供了一项很有价值的服务。Brian还要感谢Inktomi的员工们,感谢他们的热情和支持,以及他们对HTTP在实际应用程序中应用状况的深刻洞察力。同时,还要感谢Cajun-shop.com允许我们使用他们的站点来展示书中的一些范例。

David要感谢他的家人,尤其是母亲和祖父长期以来不懈的支持。他要感谢那些在写书这几年中忍受他古怪作息习惯的家人们。他要对Slurp、Orctomi和Norma所做的一切表示感谢,还要感谢合作者们的辛勤工作。最后,他要感谢Brian说服自己再次冒险。

Marjorie要感谢她丈夫Alan Liu的技术洞察力,以及他对家庭的支持和理解。Marjorie还要感谢合作者们丰富且深刻的灵感和洞察力。在编写过程中能够与他们共同工作,她感到非常开心。

Sailu要感谢David和Brian为他提供机会参与编写本书,感谢Chuck Neerdaels将他引入了HTTP的世界。

Anshu要感谢他的妻子Rashi和他的父母。尽管本书的编写旷日持久,但家人依旧对他有着足够的耐心,不断地支持并鼓励他。

最后,作者们要集体感谢各位著名和无名的因特网先驱们,他们在过去40年中所做的研究、开发和传播工作对我们的科学界、社会及经济团体作出了巨大的贡献。没有他们的工作,就没有本书所要讨论的话题。