描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115281487
HTTP及相关核心Web技术方面的权威著作
权威专家详解HTTP协议、深入说明Web工作原理
语言简洁精确,细节图解翔实
高效Web开发、Web程序员权威指南
HTTP是Web的基础,这里所说的Web,不仅只是通常意义上的Browser/Server端的开发,而是Web Service。
HTTP初看上去似乎是非常简单的协议,是的,HTTP 0.9确实是非常简单的,简单到只有一个GET方法,更不用说什么持久连接了。HTTP协议还有一个显著特点,那就是其协议是明文的基于文本的。这使得通过工具与HTTP进行交互变得非常简单,*原始的telnet也可以发送HTTP请求(参考本书15页)。
而大多数人对HTTP的了解也就是这种程度了(没有读此书之前的我也是这样)。此书的意义在于,它让你知道,HTTP不仅只有一个简单的GET,HTTP可以做为一种通用的分布式编程的协议。现如今Web上大行其道的所谓Restful Web Service,其基础就是HTTP,而提出Rest这个概念的Roy Fielding,也是HTTP协议(RFC2616)的主要作者之一
《HTTP权威指南》是HTTP及其相关核心Web技术方面的权威著作,主要介绍了Web应用程序是如何工作的,核心的因特网协议如何与架构构建块交互,如何正确实现因特网客户和服务器等。
《HTTP权威指南》适合所有想了解HTTP和Web底层结构的人阅读。
部分 HTTP:Web的基础
第1章 HTTP概述 3
1.1 HTTP——因特网的多媒体信使 4
1.2 Web客户端和服务器 4
1.3 资源 5
1.3.1 媒体类型 6
1.3.2 URI 7
1.3.3 URL 7
1.3.4 URN 8
1.4 事务 9
1.4.1 方法 9
1.4.2 状态码 10
1.4.3 Web页面中可以包含多个对象 10
1.5 报文 11
1.6 连接 13
1.6.1 TCP/IP 13
1.6.2 连接、IP地址及端口号 14
1.6.3 使用Telnet实例 16
1.7 协议版本 18
1.8 Web的结构组件 19
1.8.1 代理 19
1.8.2 缓存 20
1.8.3 网关 20
1.8.4 隧道 21
1.8.5 Agent代理 21
1.9 起始部分的结束语 22
1.10 更多信息 22
1.10.1 HTTP协议信息 22
1.10.2 历史透视 23
1.10.3 其他万维网信息 23
第2章 URL与资源 25
2.1 浏览因特网资源 26
2.2 URL的语法 28
2.2.1 方案——使用什么协议 29
2.2.2 主机与端口 30
2.2.3 用户名和密码 30
2.2.4 路径 31
2.2.5 参数 31
2.2.6 查询字符串 32
2.2.7 片段 33
2.3 URL快捷方式 34
2.3.1 相对URL 34
2.3.2 自动扩展URL 37
2.4 各种令人头疼的字符 38
2.4.1 URL字符集 38
2.4.2 编码机制 38
2.4.3 字符限制 39
2.4.4 另外一点说明 40
2.5 方案的世界 40
2.6 未来展望 42
2.7 更多信息 44
第3章 HTTP报文 45
3.1 报文流 46
3.1.1 报文流入源端服务器 46
3.1.2 报文向下游流动 47
3.2 报文的组成部分 47
3.2.1 报文的语法 48
3.2.2 起始行 50
3.2.3 53
3.2.4 实体的主体部分 55
3.2.5 版本0.9的报文 55
3.3 方法 56
3.3.1 安全方法 56
3.3.2 GET 56
3.3.3 HEAD 57
3.3.4 PUT 57
3.3.5 POST 58
3.3.6 TRACE 58
3.3.7 OPTIONS 60
3.3.8 DELETE 60
3.3.9 扩展方法 61
3.4 状态码 62
3.4.1 100~199——信息性状态码 62
3.4.2 200~299——成功状态码 63
3.4.3 300~399——重定向状态码 64
3.4.4 400~499——客户端错误状态码 68
3.4.5 500~599——服务器错误状态码 69
3.5 70
3.5.1 通用 71
3.5.2 请求 72
3.5.3 响应 74
3.5.4 实体 75
3.6 更多信息 77
第4章 连接管理 79
4.1 TCP连接 80
4.1.1 TCP的可靠数据管道 80
4.1.2 TCP流是分段的、由IP分组传送 81
4.1.3 保持TCP连接的正确运行 82
4.1.4 用TCP套接字编程 84
4.2 对TCP性能的考虑 85
4.2.1 HTTP事务的时延 86
4.2.2 性能聚焦区域 87
4.2.3 TCP连接的握手时延 87
4.2.4 延迟确认 88
4.2.5 TCP慢启动 89
4.2.6 Nagle算法与TCP_NODELAY 89
4.2.7 TIME_WAIT累积与端口耗尽 90
4.3 HTTP连接的处理 91
4.3.1 常被误解的Connection 91
4.3.2 串行事务处理时延 92
4.4 并行连接 94
4.4.1 并行连接可能会提高页面的加载速度 94
4.4.2 并行连接不一定更快 95
4.4.3 并行连接可能让人“感觉”更快一些 95
4.5 持久连接 96
4.5.1 持久以及并行连接 96
4.5.2 HTTP/1.0 keep-alive连接 97
4.5.3 Keep-Alive操作 98
4.5.4 Keep-Alive选项 98
4.5.5 Keep-Alive连接的限制和规则 99
4.5.6 Keep-Alive和哑代理 100
4.5.7 插入Proxy-Connection 102
4.5.8 HTTP/1.1持久连接 104
4.5.9 持久连接的限制和规则 104
4.6 管道化连接 105
4.7 关闭连接的奥秘 106
4.7.1 “任意”解除连接 106
4.7.2 Content-Length及截尾操作 107
4.7.3 连接关闭容限、重试以及幂等性 107
4.7.4 正常关闭连接 108
4.8 更多信息 110
4.8.1 HTTP连接 110
4.8.2 HTTP性能问题 110
4.8.3 TCP/IP 111
第二部分 HTTP结构
第5章 Web服务器 115
5.1 各种形状和尺寸的Web服务器 116
5.1.1 Web服务器的实现 116
5.1.2 通用软件Web服务器 117
5.1.3 Web服务器设备 117
5.1.4 嵌入式Web服务器 118
5.2 小的Perl Web服务器 118
5.3 实际的Web服务器会做些什么 120
5.4 步——接受客户端连接 121
5.4.1 处理新连接 121
5.4.2 客户端主机名识别 122
5.4.3 通过ident确定客户端用户 122
5.5 第二步——接收请求报文 123
5.5.1 报文的内部表示法 124
5.5.2 连接的输入/输出处理结构 125
5.6 第三步——处理请求 126
5.7 第四步——对资源的映射及访问 126
5.7.1 docroot 127
5.7.2 目录列表 129
5.7.3 动态内容资源的映射 130
5.7.4 服务器端包含项 131
5.7.5 访问控制 131
5.8 第五步——构建响应 131
5.8.1 响应实体 131
5.8.2 MIME类型 132
5.8.3 重定向 133
5.9 第六步——发送响应 134
5.10 第七步——记录日志 134
5.11 更多信息 134
第6章 代理 135
6.1 Web的中间实体 136
6.1.1 私有和共享代理 136
6.1.2 代理与网关的对比 137
6.2 为什么使用代理 138
6.3 代理会去往何处 143
6.3.1 代理服务器的部署 144
6.3.2 代理的层次结构 144
6.3.3 代理是如何获取流量的 147
6.4 客户端的代理设置 148
6.4.1 客户端的代理配置:手工配置 149
6.4.2 客户端代理配置:PAC文件 149
6.4.3 客户端代理配置:WPAD 150
6.5 与代理请求有关的一些棘手问题 151
6.5.1 代理URI与服务器URI的不同 151
6.5.2 与虚拟主机一样的问题 152
6.5.3 拦截代理会收到部分URI 153
6.5.4 代理既可以处理代理请求,也可以处理服务器请求 154
6.5.5 转发过程中对URI的修改 154
6.5.6 URI的客户端自动扩展和主机名解析 155
6.5.7 没有代理时URI的解析 155
6.5.8 有显式代理时URI的解析 156
6.5.9 有拦截代理时URI的解析 157
6.6 追踪报文 158
6.6.1 Via 158
6.6.2 TRACE方法 162
6.7 代理认证 164
6.8 代理的互操作性 165
6.8.1 处理代理不支持的和方法 166
6.8.2 OPTIONS:发现对可选特性的支持 166
6.8.3 Allow 167
6.9 更多信息 167
第7章 缓存 169
7.1 冗余的数据传输 170
7.2 带宽瓶颈 170
7.3 瞬间拥塞 171
7.4 距离时延 172
7.5 命中和未命中的 173
7.5.1 再验证 173
7.5.2 命中率 175
7.5.3 字节命中率 176
7.5.4 区分命中和未命中的情况 176
7.6 缓存的拓扑结构 177
7.6.1 私有缓存 177
7.6.2 公有代理缓存 177
7.6.3 代理缓存的层次结构 179
7.6.4 网状缓存、内容路由以及对等缓存 180
7.7 缓存的处理步骤 181
7.7.1 步——接收 181
7.7.2 第二步——解析 182
7.7.3 第三步——查找 182
7.7.4 第四步——新鲜度检测 182
7.7.5 第五步——创建响应 182
7.7.6 第六步——发送 183
7.7.7 第七步——日志 183
7.7.8 缓存处理流程图 183
7.8 保持副本的新鲜 183
7.8.1 文档过期 184
7.8.2 过期日期和使用期 185
7.8.3 服务器再验证 185
7.8.4 用条件方法进行再验证 186
7.8.5 If-Modified-Since:Date再验证 187
7.8.6 If-None-Match:实体标签再验证 189
7.8.7 强弱验证器 190
7.8.8 什么时候应该使用实体标签和近修改日期 190
7.9 控制缓存的能力 191
7.9.1 no-Store与no-Cache响应 191
7.9.2 max-age响应 192
7.9.3 Expires响应 192
7.9.4 must-revalidate响应 192
7.9.5 试探性过期 193
7.9.6 客户端的新鲜度限制 194
7.9.7 注意事项 194
7.10 设置缓存控制 195
7.10.1 控制Apache的HTTP 195
7.10.2 通过HTTP-EQUIV控制HTML缓存 196
7.11 详细算法 197
7.11.1 使用期和新鲜生存期 198
7.11.2 使用期的计算 198
7.11.3 完整的使用期计算算法 201
7.11.4 新鲜生存期计算 202
7.11.5 完整的服务器——新鲜度算法 202
7.12 缓存和广告 204
7.12.1 发布广告者的两难处境 204
7.12.2 发布者的响应 204
7.12.3 日志迁移 205
7.12.4 命中计数和使用限制 205
7.13 更多信息 205
第8章 集成点:网关、隧道及中继 207
8.1 网关 208
8.2 协议网关 210
8.2.1 HTTP/*:服务器端Web网关 211
8.2.2 HTTP/HTTPS:服务器端安全网关 212
8.2.3 HTTPS/HTTP客户端安全加速器网关 212
8.3 资源网关 213
8.3.1 CGI 215
8.3.2 服务器扩展API 215
8.4 应用程序接口和Web服务 216
8.5 隧道 217
8.5.1 用CONNECT建立HTTP隧道 217
8.5.2 数据隧道、定时及连接管理 219
8.5.3 SSL隧道 219
8.5.4 SSL隧道与HTTP/HTTPS网关的对比 220
8.5.5 隧道认证 221
8.5.6 隧道的安全性考虑 221
8.6 中继 222
8.7 更多信息 224
第9章 Web机器人 225
9.1 爬虫及爬行方式 226
9.1.1 从哪儿开始:根集 226
9.1.2 链接的提取以及相对链接的标准化 227
9.1.3 避免环路的出现 228
9.1.4 循环与复制 228
9.1.5 面包屑留下的痕迹 229
9.1.6 别名与机器人环路 230
9.1.7 规范化URL 230
9.1.8 文件系统连接环路 231
9.1.9 动态虚拟Web空间 232
HTTP(Hypertext Transfer
Protocol,超文本传输协议①)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但著名的是用于Web浏览器和Web服务器之间的双工通信。
HTTP起初是一个简单的协议,因此你可能会认为关于这个协议没有太多好说的。但现在,你手上拿着的却是一本将近两斤重的书。如果你想知道我们怎么会写出一本700多页的关于HTTP的书,就去看看目录吧。本书不仅仅是一本HTTP参考手册,它还是一本名副其实的Web架构“圣经”。
本书中,我们会将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,我们对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。而且,为了节省大家寻找参考文献的时间,我们还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。在条理清晰的附录中,可以找到按照字母排序的参考(这些构成了常见的HTTP文本的基础)。我们希望这种概念性的设计有助于读者更好地使用HTTP。
本书是为所有希望理解HTTP和Web底层结构的人编写的。软硬件工程师也可以将本书作为HTTP及相关Web技术参考书使用。系统架构师和网络管理员可以通过本书更好地了解如何设计、实现并管理复杂的网络架构。性能工程师和分析人员可以从缓存和性能优化的相关章节中获益。市场营销和咨询专家还可以通过概念介绍更好地理解Web技术的前景。
① HTTP译为“超文本传输协议”,其中“transfer”使用了“传输”的含义,但依据HTTP制定者之一Roy
Fielding博士的论文,“transfer”表示的是“(状态的)转移”,而不是“传输”。怎样翻译才更符合HTTP的原意,其讨论可参见图灵社区的文章,地址是ituring.com.cn/article/details/1817。
本书澄清了一些常见的误解,推荐了“各种业内诀窍”,提供了便捷的参考资料,并且用通俗易懂的语言阐述了枯燥且令人费解的标准规范,还详细探讨了Web正常工作所必需且互相关联的技术。
本书创作历时良久,是由很多热衷于因特网技术的人共同完成的,希望它能对你有所帮助。
运行实例:Joe的五金商店
本书的很多章节都涉及了一个假想的在线五金与家装商店示例,通过这个“Joe的五金商店”来说明一些技术概念。我们为这个商店构建了一个真实的Web站点(),以便大家能够测试书中的部分实例。只要本书仍在销售,我们就会一直维护好这个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页面,上面列出了勘误表、一些实例以及所有的附加信息。可以通过以下链接来访问这个页面。
为本书提意见或者询问一些技术性问题,可以向以下地址发送邮件。
更多与书籍、会议、资源中心以及O’Reilly网络有关的问题,都请参见O’Reilly的网站。
hinews_SA –
唯一一本对****讲的比较透的书,如果英文水平好的话,可以考虑看英文版,如果想对****作深入的理解,推荐阅读。
煜雨 –
高手写的书不得不看呀,很全面。出的书基本都看了
xyxieying –
这本书我是看了网络的PDF版后,决定买的。内容很好,纸的质量也很好。赞。
海龙君 –
很不错的一本书,值得阅读。人的生命有限,希望大家可以珍惜时间,多读那些经过岁月检验的经典书(不一定是畅销书),少读快餐式的书!