diyi部分 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 zui小的Perl Web服务器 118
5.3 实际的Web服务器会做些什么 120
5.4 diyi步——接受客户端连接 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 diyi步——接收 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 什么时候应该使用实体标签和zui近修改日期 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:服务器端安quan网 关 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
9.1.10 避免循环和重复 233
9.2 机器人的HTTP 236
9.2.1 识别请求首部 236
9.2.2 虚拟主机 236
9.2.3 条件请求 237
9.2.4 对响应的处理 238
9.2.5 User-Agent导向 239
9.3 行为不当的机器人 239
9.4 拒绝机器人访问 240
9.4.1 拒绝机器人访问标准 241
9.4.2 Web站点和robots.txt文件 242
9.4.3 robots.txt文件的格式 243
9.4.4 其他有关robots.txt的知识 246
9.4.5 缓存和robots.txt的过期 246
9.4.6 拒绝机器人访问的Perl代码 246
9.4.7 HTML的robot-control元标签 249
9.5 机器人的规范 251
9.6 搜索引擎 254
9.6.1 大格局 255
9.6.2 现代搜索引擎结构 255
9.6.3 全文索引 255
9.6.4 发布查询请求 257
9.6.5 对结果进行排序,并提供查询结果 258
9.6.6 欺诈 258
9.7 更多信息 258
第10章 HTTP-NG 261
10.1 HTTP发展中存在的问题 262
10.2 HTTP-NG的活动 263
10.3 模块化及功能增强 263
10.4 分布式对象 264
10.5 diyi层——报文传输 264
10.6 第二层——远程调用 265
10.7 第三层——Web应用 265
10.8 WebMUX 265
10.9 二进制连接协议 266
10.10 当前的状态 267
10.11 更多信息 267
第三部分 识别、认证与安全
第11章 客户端识别与cookie机制 271
11.1 个性化接触 272
11.2 HTTP首部 273
11.3 客户端IP地址 274
11.4 用户登录 275
11.5 胖URL 277
11.6 cookie 278
11.6.1 cookie的类型 278
11.6.2 cookie是如何工作的 279
11.6.3 cookie罐:客户端的状态 280
11.6.4 不同站点使用不同的cookie 282
11.6.5 cookie成分 283
11.6.6 cookies版本0(Netscape) 284
11.6.7 cookies版本1(RFC 2965) 285
11.6.8 cookie与会话跟踪 288
11.6.9 cookie与缓存 290
11.6.10 cookie、安全性和隐私 291
11.7 更多信息 292
第12章 基本认证机制 293
12.1 认证 294
12.1.1 HTTP的质询/响应认证框架 294
12.1.2 认证协议与首部 295
12.1.3 安全域 296
12.2 基本认证 297
12.2.1 基本认证实例 298
12.2.2 Base-64用户名/密码编码 298
12.2.3 代理认证 299
12.3 基本认证的安全缺陷 300
12.4 更多信息 301
第13章 摘要认证 303
13.1 摘要认证的改进 304
13.1.1 用摘要保护密码 304
13.1.2 单向摘要 306
13.1.3 用随机数防止重放攻击 307
13.1.4 摘要认证的握手机制 307
13.2 摘要的计算 308
13.2.1 摘要算法的输入数据 308
13.2.2 算法H(d)和KD(s,d) 310
13.2.3 与安全性相关的数据(A1) 310
13.2.4 与报文有关的数据(A2) 310
13.2.5 摘要算法总述 311
13.2.6 摘要认证会话 312
13.2.7 预授权 312
13.2.8 随机数的选择 315
13.2.9 对称认证 315
13.3 增强保护质量 316
13.3.1 报文完整性保护 316
13.3.2 摘要认证首部 317
13.4 应该考虑的实际问题 317
13.4.1 多重质询 318
13.4.2 差错处理 318
13.4.3 保护空间 318
13.4.4 重写URI 319
13.4.5 缓存 319
13.5 安全性考虑 320
13.5.1 首部篡改 320
13.5.2 重放攻击 320
13.5.3 多重认证机制 320
13.5.4 词典攻击 321
13.5.5 恶意代理攻击和中间人攻击 321
13.5.6 选择明文攻击 321
13.5.7 存储密码 322
13.6 更多信息 322
第14章 安全HTTP 323
14.1 保护HTTP 的安全 324
14.2 数字加密 326
14.2.1 密码编制的机制与技巧 326
14.2.2 密码 327
14.2.3 密码机 328
14.2.4 使用了密钥的密码 328
14.2.5 数字密码 328
14.3 对称密钥加密技术 330
14.3.1 密钥长度与枚举攻击 330
14.3.2 建立共享密钥 332
14.4 公开密钥加密技术 332
14.4.1 RSA 333
14.4.2 混合加密系统和会话密钥 334
14.5 数字签名 334
14.6 数字证书 336
14.6.1 证书的主要内容 336
14.6.2 X.509 v3证书 337
14.6.3 用证书对服务器进行认证 338
14.7 HTTPS——细节介绍 339
14.7.1 HTTPS概述 339
14.7.2 HTTPS方案 340
14.7.3 建立安全传输 341
14.7.4 SSL握手 341
14.7.5 服务器证书 343
14.7.6 站点证书的有效性 344
14.7.7 虚拟主机与证书 345
14.8 HTTPS客户端实例 345
14.8.1 OpenSSL 346
14.8.2 简单的HTTPS客户端 347
14.8.3 执行OpenSSL客户端 350
14.9 通过代理以隧道形式传输安全流量 351
14.10 更多信息 353
14.10.1 HTTP安全性 353
14.10.2 SSL与TLS 353
14.10.3 公开密钥基础设施 354
14.10.4 数字密码 354
第四部分 实体、编码和国际化
第15章 实体和编码 357
15.1 报文是箱子,实体是货物 359
15.2 Content-Length: 实体的大小 361
15.2.1 检测截尾 361
15.2.2 错误的Content-Length 362
15.2.3 Content-Length与持久连接 362
15.2.4 内容编码 362
15.2.5 确定实体主体长度的规则 362
15.3 实体摘要 364
15.4 媒体类型和字符集 364
15.4.1 文本的字符编码 365
15.4.2 多部分媒体类型 365
15.4.3 多部分表格提交 366
15.4.4 多部分范围响应 367
15.5 内容编码 368
15.5.1 内容编码过程 368
15.5.2 内容编码类型 369
15.5.3 Accept-Encoding首部 369
15.6 传输编码和分块编码 371
15.6.1 可靠传输 371
15.6.2 Transfer-Encoding首部 372
15.6.3 分块编码 373
15.6.4 内容编码与传输编码的结合 375
15.6.5 传输编码的规则 375
15.7 随时间变化的实例 375
15.8 验证码和新鲜度 376
15.8.1 新鲜度 377
15.8.2 有条件的请求与验证码 378
15.9 范围请求 380
15.10 差异编码 382
15.11 更多信息 385
第16章 国际化 387
16.1 HTTP对国际性内容的支持 388
16.2 字符集与HTTP 389
16.2.1 字符集是把字符转换为二进制码的编码 389
16.2.2 字符集和编码如何工作 390
16.2.3 字符集不对,字符就不对 391
16.2.4 标准化的MIME charset值 391
16.2.5 Content-Type首部和Charset首部以及META标志 393
16.2.6 Accept-Charset首部 393
16.3 多语言字符编码入门

HTTP权威指南 目录的更多相关文章

  1. HTML5权威指南 中文版 高清PDF扫描版​

    HTML5权威指南是一本系统学习网页设计的权威参考图书.<HTML5权威指南>分为五部分:第一部分介绍学习本书的预备知识和HTML.CSS和JavaScript的最新进展:第二部分讨论HT ...

  2. Web性能权威指南 PDF扫描版​

    Web性能权威指南是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物.<Web性能权威指南>目标是涵盖Web开发者技术体系中应该掌握的所有网络及性能优化知识.全书 ...

  3. 跟小静读《jQuery权威指南》——目录

    前言 2014年开始了,年底给自己制订的学习计划,第一步先从学习<jQuery权威指南>开始. jQuery大家都很比较熟悉,但是我经常是边用的时候边对照着API,这次找本书通读一遍,记录 ...

  4. 《Netty 权威指南(第2 版)》目录

    图书简介:<Netty 权威指南(第2 版)>是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内很难得一见的深入介绍Netty 原理和架构的书籍,也是作者多年实 ...

  5. Hadoop权威指南(中文版-带目录索引)pdf电子书

      Hadoop权威指南(中文版-带目录索引)pdf电子书下载地址:百度网盘点击下载:链接:https://pan.baidu.com/s/1E-8eLaaqTCkKESNPDqq0jw 提取码:g6 ...

  6. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  7. 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令

    2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...

  8. maven权威指南学习笔记(五)—— POM

    1. 简介 Archetype插件通过 pom.xml 文件创建了一个项目.这就是项目对象模型 (POM),一个项目的声明性描述. 当Maven运行一个目标的时候,每个目标都会访问定 义在项目POM里 ...

  9. maven权威指南学习笔记(一)——简介

    maven是什么?有什么用? Maven是一个项目管理工具,它包含了     一个项目对象模型 (Project Object Model),     一组标准集合,     一个项目生命周期(Pro ...

随机推荐

  1. scala 函数式编程之集合操作

    Scala的集合体系结构 // Scala中的集合体系主要包括:Iterable.Seq.Set.Map.其中Iterable是所有集合trait的根trai.这个结构与Java的集合体系非常相似. ...

  2. FPGA成神之路

    先占个坑,网上写的都太没有体系了,打算写一个从电路到语法,从软件使用到硬件调试,从IP核调用到时序分析的系列帖子,人就是太懒,想把自己这两年踩的坑分享一下,加油,特种兵

  3. shell-快速入门_批处理脚本编程语言

    1. Shell概述 1.1. Shell是什么 Shell是一门批处理脚本编程语言. 批处理是什么? 操作系统都分为(GUI)图形界面,命令界面(command). 命令操作的可以不用一一条执行.可 ...

  4. 【拆分版】Docker-compose构建Kibana单实例,基于7.1.0

    写在前边 今凌晨的时候已经把这整个Docker-compose构建的ELK集群跑起来了,有点没熬住,所以早上起来补文档,今天就上到公司测试服务器上测试了,好开森. 本文内容就是红框的部分,只是启动个K ...

  5. SQL分类之DDL:操作数据库表

    DDL:操作数据库表 1.操作数据库:CRUD 1.C(Create):创建 创建数据库: create database 数据库名称 创建数据库,判断不存在,再创建: create database ...

  6. 面试题 js重写原生函数(以push为例)

    先说明一下为什么要写这个,因为最近在面试,面试的时候面试官问了这个问题,当时是真的没有答上来,回来之后自己考虑了一下,现在给大家分享 要求如下: 重写js push函数,使其能够在push的同时打印出 ...

  7. Java自学-日期 日期格式化

    Java中使用SimpleDateFormat 进行日期格式化类 SimpleDateFormat 日期格式化类 示例 1 : 日期转字符串 y 代表年 M 代表月 d 代表日 H 代表24进制的小时 ...

  8. C++ 中的静态成员函数与静态成员变量

    于CSDN 2014-01-17 与静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分.如果要在类外调用公用的静态成员函数,要用类名和域运算符"∷".如Box∷volu ...

  9. Java 之 自定义异常

    1.为什么需要自定义异常类 Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是没有定义好的,此时我们根据自己业务的异常情况来定义异常类.  一些异常都是 Java ...

  10. 英语catarinite天铁托甲catarinite镍铁陨石

    中文名称:天铁 镍铁陨石(catarinite)是铁质陨石的一种,发现地有南非,美国,澳洲,南极大陆等.镍铁陨石有著美丽的韦德曼交纹及高含量的镍成分,因此不易氧化,大部分都用来制造饰品或展现陨石韦德曼 ...