HTTP权威指南

    HTTP权威指南

     

    编辑推荐

    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底层结构的人阅读。

    作者简介

    David Gourley是Endeca的首席技术官(Chief TechnologyOfficer),负责Endeca产品的研究及开发。Endeca开发的因特网及内部网络信息访问解决方案为企业级数据的导航及研究提供了一些新的方式。在到Endeca工作之前,David是Inktomi基础工程组的一员,他在那儿帮助开发了Inktomi的因特网搜索数据库,是Inktomi的Web缓存产品的主要开发者。David在加州大学伯克利分校获得了计算机科学的学士学位,还拥有Web技术方面的几项专利。

    BrianTotty最近出任了Inktomi公司(这是1996年他参与建立的一家公司)研发部副总裁,在公司中他负责Web缓存、流媒体及因特网搜索技术的研发工作。他曾是SiliconGraphics公司的一名科学家,他在那儿为高性能网络和超级计算机系统设计软件并对其进行优化。在那之前,他是苹果计算机公司高级技术组的一名工程师。Brian在伊利诺伊大学Urbana-Champaign分校获得了计算机科学的博士学位,在MIT获得了计算机科学及电子工程的学士学位,在那里他获得了计算机系统研究的Organick奖。他还为加州大学扩展系统开发并讲授了一些屡获殊荣的因特网技术方面的课程。

    MarjorieSayer在Inktomi公司负责编写Web缓存方面的软件。在加州大学伯克利分校获得了数学硕士和博士学位之后,一直致力于数学课程的改革。从1990年开始致力于能量资源管理、并行系统软件、电话和网络方面的写作。

    Sailu Reddy目前在Inktomi公司负责嵌入式的性能增强型HTTP代理的开发。Sailu从事复杂软件系统的开发已经有12年了,从1995年开始深入Web架构的研发工作。他是Netscape第一台Web服务器、Web代理产品,以及后面几代产品的核心工程师。他具备HTTP应用程序、数据压缩技术、数据库引擎以及合作管理等方面的技术经验。Sailu在亚里桑那大学获得了信息系统的硕士学位并握有Web技术方面的多项专利。

    AnshuAggarwal是Inktomi公司的工程总监。他领导着Inktomi公司Web缓存产品的协议处理工程组,从1997年就开始参与Inktomi的Web技术设计工作。Anshu在科罗拉多大学Boulder分校获得了计算机科学的硕士和博士学位,从事分布式多处理器的内存一致性技术研究。他还拥有电子工程的硕士和学士学位。Anshu撰写了多篇技术论文,还拥有两项专利。

    目录

    第一部分 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权威指南》直达购买
    • 微信号
    • 网站问题、用户注册登录请联系站长,看到第一时间及时回复。
    • weinxin
    • 公众号
    • 慧眼看每日荐书,关键字找书,新功能陆续增加中,敬请关注!
    • weinxin
    huiyan
    • 本文由 发表于 2019-08-0114:29:42
    • 转载请务必保留本文链接:https://www.huiyankan.com/20190801142016.html