标题：HTTP权威指南
编辑推荐
本书是HTTP及其相关核心Web技术方面的权威著作，主要介绍了Web应用程序是如何工作的，核心的因特网协议如何与架构构建块交互，如何正确实现因特网客户和服务器等。
前言
超文本传输协议（Hypertext Transfer Protocol，HTTP）是在万维网上进行通信时所使用的协议方案。HTTP有很多应用，但最著名的是用于web浏览器和web服务器之间的双工通信。
HTTP起初是一个简单的协议，因此你可能会认为关于这个协议没有太多好说的。但现在，你手上拿着的是却一本两磅重 的书。如果你对我们怎么会写出一本650页 的关于HTTP的书感到奇怪的话，可以去看一下目录。本书不仅仅是一本HTTP首部的参考手册；它是一本名副其实的web结构圣经。
本书中，我们尝试着将HTTP中一些互相关联且常被误解的规则梳理清楚，并编写了一系列基于各种主题的章节，对HTTP各方面的特性进行了介绍。纵观全书，我们对HTTP“为什么”这样做进行了详细的解释，而不仅仅停留在它是“怎么做”的。而且，为了节省大家寻找参考文献的时间，我们还对很多HTTP应用程序正常工作所必须的、重要的非HTTP技术进行了介绍。在组织得便于使用的附录中，可以找到按照字母排序的首部参考（这些首部构成了最常见的HTTP文本的基础）。我们希望这种概念性的设计有助于读者对HTTP的使用。
本书是为所有希望理解HTTP以及Web底层结构的人编写的。软硬件工程师也可以将本书作为HTTP及相关web技术的条理清楚的参考书使用。系统架构师和网络管理员可以通过本书更好地了解如何设计、实现并管理复杂的网络架构。性能工程师和分析人员可以从高速缓存和性能优化的相关章节中获益。市场营销和咨询专家可以通过概念的介绍更好地理解web技术的前景。
本书对一些常见的误解进行了说明，推荐了“各种使用诀窍”，提供了便捷的参考资料，并且对枯燥且令人费解的标准规范进行了可读性很强的介绍。在这本书里，我们对Web正常工作所必须且互相关联的技术进行了详细的介绍。
本书是很多对因特网技术充满热情的人经过大量工作写成的。希望对你有所帮助。
运行实例：Joe的硬件商店
本书的很多章节都涉及到了一个假想的在线硬件及家装商店实例，通过这个名为“Joe硬件”的商店对一些技术概念进行了说明。我们为这个商店构建了一个真实的web站点，以便大家对书中的部分实例进行测试。只要本书仍在销售，我们就会一直维护好这个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　服务器端包含项（SSI） .............................................................................................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
第7 章　缓存 ....................................................................................................................................169
第8 章　集成点：网关隧道及中继 .............................................................................................207
第9 章　Web 机器人 ......................................................................................................................225
第10 章　HTTP-NG .......................................................................................................................261
第三部分　识别、认证与安全
第11 章　客户端识别与cookie 机制 ........................................................................................271
第12 章　基本认证机制 ................................................................................................................293
第13 章　摘要认证 .........................................................................................................................303
第14 章　安全HTTP .....................................................................................................................323
第四部分　实体、编码和国际化
第15 章　实体和编码 .....................................................................................................................357
第16 章　国际化 ..............................................................................................................................387
第17 章　内容协商与转码 ............................................................................................................413
第五部分　内容发布与分发
第18 章　Web 主机托管 ...............................................................................................................429
第19 章　发布系统 .........................................................................................................................443
第20 章　重定向与负载均衡 .......................................................................................................469
第21 章　日志记录与使用情况跟踪 ..........................................................................................505
第六部分　附　录
附录A　URI 方案 ............................................................................................................................521
附录B　HTTP 状态码 ....................................................................................................................529
附录C　HTTP 首部参考 ...............................................................................................................533
附录D　MIME 类型 ........................................................................................................................557
附录E　Base-64 编码 ....................................................................................................................603
附录F　摘要认证 .............................................................................................................................607
附录G　语言标记 ............................................................................................................................615
附录H　MIME 字符集注册表.......................................................................................................641
索引 ......................................................................................................................................................661[1]