图解HTTP前半部分由HTTP的成长发展史娓娓道来,基于HTTP 1.1 标准讲解通信过程,包括HTTP方法、协议格式、报文结构、首部字段、状态码等的具体含义,还分别讲解HTTP通信过程中代理、网关、隧道等的作用。接着介绍SPDY、WebSocket、WebDAV等HTTP的扩展功能。作者还从细节方面举例,让读者更好地理解何为无状态(stateless)、301和302重定向的区别在哪、缓存机制,等等。本书后半部分的重心放在Web安全上,涵盖HTTPS、SSL、证书认证、加密机制、Web攻击手段等内容。 图解HTTP 目录: 第1章 了解Web及网络基础 001 1.1 使用HTTP协议访问Web 002 1.2 HTTP的诞生 003 1.2.1 为知识共享而规划Web 003 1.2.2 Web成长时代 004 1.2.3 驻足不前的HTTP 005 1.3 网络基础TCP/IP 006 1.3.1 TCP/IP协议族 006 1.3.2 TCP/IP的分层管理 007 1.3.3 TCP/IP通信传输流 009 1.4 与HTTP关系密切的协议:IP、TCP和DNS 010 1.4.1 负责传输的IP协议 011 1. 4.2 确保可靠性的TCP协议 012 1.5 负责域名解析的DNS服务 013 1.6 各种协议与HTTP协议的关系 014 1.7 URI和URL 016 1.7.1 统一资源标识符 016 1.7.2 URI格式 017 第2章 简单的HTTP协议 021 2.1 HTTP协议用于客户端和服务器端之间的通信 022 2.2 通过请求和响应的交换达成通信 022 2.3 HTTP是不保存状态的协议 025 2.4 请求URI定位资源 026 2.5 告知服务器意图的HTTP方法 027 2.6 使用方法下达命令 033 2.7 持久连接节省通信量 034 2.7.1 持久连接 036 2.7.2 管线化 037 2.8 使用Cookie的状态管理 037 第3章 HTTP报文内的HTTP信息 041 3.1 HTTP报文 042 3.2 请求报文及响应报文的结构 042 3.3 编码提升传输速率 044 3.3.1 报文主体和实体主体的差异 044 3.3.2 压缩传输的内容编码 044 3.3.3 分割发送的分块传输编码 045 3.4 发送多种数据的多部分对象集合 046 3.5 获取部分内容的范围请求 048 3.6 内容协商返回最合适的内容 050 第4章 返回结果的HTTP状态码 053 4.1 状态码告知从服务器端返回的请求结果 054 4.2 2XX成功 055 4.2.1 200OK 055 4.2.2 204NoContent 056 4.2.3 206PartialContent 056 4.3 3XX重定向 056 4.3.1 301MovedPermanently 057 4.3.2 302Found 057 4.3.3 303SeeOther 058 4.3.4 304NotModified 059 4.3.5 307TemporaryRedirect 059 4.4 4XX客户端错误 060 4.4.1 400BadRequest 060 4.4.2 401Unauthorized 060 4.4.3 403Forbidden 061 4.4.4 404NotFound 061 4.5 5XX服务器错误 062 4.5.1 500InternalServerError 062 4.5.2 503ServiceUnavailable 062 第5章 与HTTP协作的Web服务器 065 5.1 用单台虚拟主机实现多个域名 066 5.2 通信数据转发程序:代理、网关、隧道 067 5.2.1 代理 068 5.2.2 网关 070 5.2.3 隧道 070 5.3 保存资源的缓存 071 5.3.1 缓存的有效期限 072 5.3.2 客户端的缓存 072 第6章 HTTP首部 075 6.1 HTTP报文首部 076 6.2 HTTP首部字段 078 6.2.1 HTTP首部字段传递重要信息 078 6.2.2 HTTP首部字段结构 078 6.2.3 4种HTTP首部字段类型 079 6.2.4 HTTP/1.1首部字段一览 080 6.2.5 非HTTP/1.1首部字段 082 6.2.6 End—to—end首部和Hop—by—hop首部 083 6.3 HTTP/1.1通用首部字段 083 6.3.1 Cache—Control 084 6.3.2 Connection 091 6.3.3 Date 093 6.3.4 Pragma 094 6.3.5 Trailer 095 6.3.6 Transfer—Encoding 096 6.3.7 Upgrade 097 6.3.8 Via 098 6.3.9 Warning 099 6.4 请求首部字段 100 6.4.1 Accept 101 6.4.2 Accept—Charset 102 6.4.3 Accept—Encoding 103 6.4.4 Accept—Language 104 6.4.5 Authorization 105 6.4.6 Expect 106 6.4.7 From 107 6.4.8 Host 107 6.4.9 If—Match 108 6.4.10 If—Modified—Since 110 6.4.11 If—None—Match 111 6.4.12 If—Range 112 6.4.13 If—Unmodified—Since 113 6.4.14 Max—Forwards 114 6.4.15 Proxy—Authorization 115 6.4.16 Range 116 6.4.17 Referer 116 6.4.18 TE 117 6.4.19 User—Agent 118 6.5 响应首部字段119 6.5.1 Accept—Ranges 119 6.5.2 Age 120 6.5.3 ETag 120 6.5.4 Location 122 6.5.5 Proxy—Authenticate 123 6.5.6 Retry—After 123 6.5.7 Server 124 6.5.8 Vary 125 6.5.9 WWW—Authenticate 125 6.6 实体首部字段126 6.6.1 Allow 126 6.6.2 Content—Encoding 127 6.6.3 Content—Language 128 6.6.4 Content—Length 128 6.6.5 Content—Location 129 6.6.6 Content—MD5 129 6.6.7 Content—Range 130 6.6.8 Content—Type 131 6.6.9 Expires 131 6.6.10 Last—Modified 132 6.7 为Cookie服务的首部字段 132 6.7.1 Set—Cookie 134 6.7.2 Cookie 136 6.8 其他首部字段137 6.8.1 X—Frame—Options 137 6.8.2 X—XSS—Protection 138 6.8.3 DNT 138 6.8.4 P3P 139 第7章 确保Web安全的HTTPS 141 7.1 HTTP的缺点 142 7.1.1 通信使用明文可能会被窃听 142 7.1.2 不验证通信方的身份就可能遭遇伪装 146 7.1.3 无法证明报文完整性,可能已遭篡改 148 7.2 HTTP+加密+认证+完整性保护=HTTPS 150 7.2.1 HTTP加上加密处理和认证以及完整性保护后即是HTTPS 150 7.2.2 HTTPS是身披SSL外壳的HTTP 151 7.2.3 相互交换密钥的公开密钥加密技术 152 7.2.4 证明公开密钥正确性的证书 155 7.2.5 HTTPS的安全通信机制 161 第8章 确认访问用户身份的认证 167 8.1 何为认证 168 8.2 BASIC认证 169 8.3 DIGEST认证171 8.4 SSL客户端认证173 8.4.1 SSL客户端认证的认证步骤 174 8.4.2 SSL客户端认证采用双因素认证 175 8.4.3 SSL客户端认证必要的费用 175 8.5 基于表单认证 175 8.5.1 认证多半为基于表单认证 176 8.5.2 Session管理及Cookie应用 177 第9章 基于HTTP的功能追加协议 179 9.1 基于HTTP的协议180 9.2 消除HTTP瓶颈的SPDY 180 9.2.1 HTTP的瓶颈 180 9.2.2 SPDY的设计与功能 184 9.2.3 SPDY消除Web瓶颈了吗 185 9.3 使用浏览器进行全双工通信的WebSocket 186 9.3.1 WebSocket的设计与功能 186 9.3.2 WebSocket协议 186 9.4 期盼已久的HTTP/2.0 189 9.5 Web服务器管理文件的WebDAV 190 9.5.1 扩展HTTP/1.1的WebDAV 191 9.5.2 WebDAV内新增的方法及状态码 192 第10章 构建Web内容的技术 195 10.1 HTML 196 10.1.1 Web页面几乎全由HTML构建 196 10.1.2 HTML的版本 197 10.1.3 设计应用CSS 198 10.2 动态HTML 198 10.2.1 让Web页面动起来的动态HTML 198 10.2.2 更易控制HTML的DOM 198 10.3 Web应用 200 10.3.1 通过Web提供功能的Web应用 200 10.3.2 与Web服务器及程序协作的CGI 200 10.3.3 因Java而普及的Servlet 201 10.4 数据发布的格式及语言 203 10.4.1 可扩展标记语言 203 10.4.2 发布更新信息的RSS/Atom 204 10.4.3 JavaScript衍生的轻量级易用JSON 206 第11章 Web的攻击技术 207 11.1 针对Web的攻击技术 208 11.1.1 HTTP不具备必要的安全功能 208 11.1.2 在客户端即可篡改请求 209 11.1.3 针对Web应用的攻击模式 210 11.2 因输出值转义不完全引发的安全漏洞 212 11.2.1 跨站脚本攻击 213 11.2.2 SQL注入攻击 218 11.2.3 OS命令注入攻击 223 11.2.4 HTTP首部注入攻击 225 11.2.5 邮件首部注入攻击 228 11.2.6 目录遍历攻击 229 11.2.7 远程文件包含漏洞 230 11.3 因设置或设计上的缺陷引发的安全漏洞 232 11.3.1 强制浏览 232 11.3.2 不正确的错误消息处理 234 11.3.3 开放重定向 237 11.4 因会话管理疏忽引发的安全漏洞 237 11.4.1 会话劫持 238 11.4.2 会话固定攻击 239 11.4.3 跨站点请求伪造 241 11.5 其他安全漏洞 242 11.5.1 密码破解 242 11.5.2 点击劫持 247 11.5.3 DoS攻击 249 11.5.4 后门程序 250 4.2 确保可靠性的TCP协议 012 1.5 负责域名解析的DNS服务 013 1.6 各种协议与HTTP协议的关系 014 1.7 URI和URL 016 1.7.1 统一资源标识符 016 1.7.2 URI格式 017 第2章 简单的HTTP协议 021 2.1 HTTP协议用于客户端和服务器端之间的通信 022 2.2 通过请求和响应的交换达成通信 022 2.3 HTTP是不保存状态的协议 025 2.4 请求URI定位资源 026 2.5 告知服务器意图的HTTP方法 027 2.6 使用方法下达命令 033 2.7 持久连接节省通信量 034 2.7.1 持久连接 036 2.7.2 管线化 037 2.8 使用Cookie的状态管理 037 第3章 HTTP报文内的HTTP信息 041 3.1 HTTP报文 042 3.2 请求报文及响应报文的结构 042 3.3 编码提升传输速率 044 3.3.1 报文主体和实体主体的差异 044 3.3.2 压缩传输的内容编码 044 3.3.3 分割发送的分块传输编码 045 3.4 发送多种数据的多部分对象集合 046 3.5 获取部分内容的范围请求 048 3.6 内容协商返回最合适的内容 050 第4章 返回结果的HTTP状态码 053 4.1 状态码告知从服务器端返回的请求结果 054 4.2 2XX成功 055 4.2.1 200OK 055 4.2.2 204NoContent 056 4.2.3 206PartialContent 056 4.3 3XX重定向 056 4.3.1 301MovedPermanently 057 4.3.2 302Found 057 4.3.3 303SeeOther 058 4.3.4 304NotModified 059 4.3.5 307TemporaryRedirect 059 4.4 4XX客户端错误 060 4.4.1 400BadRequest 060 4.4.2 401Unauthorized 060 4.4.3 403Forbidden 061 4.4.4 404NotFound 061 4.5 5XX服务器错误 062 4.5.1 500InternalServerError 062 4.5.2 503ServiceUnavailable 062 第5章 与HTTP协作的Web服务器 065 5.1 用单台虚拟主机实现多个域名 066 5.2 通信数据转发程序:代理、网关、隧道 067 5.2.1 代理 068 5.2.2 网关 070 5.2.3 隧道 070 5.3 保存资源的缓存 071 5.3.1 缓存的有效期限 072 5.3.2 客户端的缓存 072 第6章 HTTP首部 075 6.1 HTTP报文首部 076 6.2 HTTP首部字段 078 6.2.1 HTTP首部字段传递重要信息 078 6.2.2 HTTP首部字段结构 078 6.2.3 4种HTTP首部字段类型 079 6.2.4 HTTP/1.1首部字段一览 080 6.2.5 非HTTP/1.1首部字段 082 6.2.6 End—to—end首部和Hop—by—hop首部 083 6.3 HTTP/1.1通用首部字段 083 6.3.1 Cache—Control 084 6.3.2 Connection 091 6.3.3 Date 093 6.3.4 Pragma 094 6.3.5 Trailer 095 6.3.6 Transfer—Encoding 096 6.3.7 Upgrade 097 6.3.8 Via 098 6.3.9 Warning 099 6.4 请求首部字段 100 6.4.1 Accept 101 6.4.2 Accept—Charset 102 6.4.3 Accept—Encoding 103 6.4.4 Accept—Language 104 6.4.5 Authorization 105 6.4.6 Expect 106 6.4.7 From 107 6.4.8 Host 107 6.4.9 If—Match 108 6.4.10 If—Modified—Since 110 6.4.11 If—None—Match 111 6.4.12 If—Range 112 6.4.13 If—Unmodified—Since 113 6.4.14 Max—Forwards 114 6.4.15 Proxy—Authorization 115 6.4.16 Range 116 6.4.17 Referer 116 6.4.18 TE 117 6.4.19 User—Agent 118 6.5 响应首部字段119 6.5.1 Accept—Ranges 119 6.5.2 Age 120 6.5.3 ETag 120 6.5.4 Location 122 6.5.5 Proxy—Authenticate 123 6.5.6 Retry—After 123 6.5.7 Server 124 6.5.8 Vary 125 6.5.9 WWW—Authenticate 125 6.6 实体首部字段126 6.6.1 Allow 126 6.6.2 Content—Encoding 127 6.6.3 Content—Language 128 6.6.4 Content—Length 128 6.6.5 Content—Location 129 6.6.6 Content—MD5 129 6.6.7 Content—Range 130 6.6.8 Content—Type 131 6.6.9 Expires 131 6.6.10 Last—Modified 132 6.7 为Cookie服务的首部字段 132 6.7.1 Set—Cookie 134 6.7.2 Cookie 136 6.8 其他首部字段137 6.8.1 X—Frame—Options 137 6.8.2 X—XSS—Protection 138 6.8.3 DNT 138 6.8.4 P3P 139 第7章 确保Web安全的HTTPS 141 7.1 HTTP的缺点 142 7.1.1 通信使用明文可能会被窃听 142 7.1.2 不验证通信方的身份就可能遭遇伪装 146 7.1.3 无法证明报文完整性,可能已遭篡改 148 7.2 HTTP+加密+认证+完整性保护=HTTPS 150 7.2.1 HTTP加上加密处理和认证以及完整性保护后即是HTTPS 150 7.2.2 HTTPS是身披SSL外壳的HTTP 151 7.2.3 相互交换密钥的公开密钥加密技术 152 7.2.4 证明公开密钥正确性的证书 155 7.2.5 HTTPS的安全通信机制 161 第8章 确认访问用户身份的认证 167 8.1 何为认证 168 8.2 BASIC认证 169 8.3 DIGEST认证171 8.4 SSL客户端认证173 8.4.1 SSL客户端认证的认证步骤 174 8.4.2 SSL客户端认证采用双因素认证 175 8.4.3 SSL客户端认证必要的费用 175 8.5 基于表单认证 175 8.5.1 认证多半为基于表单认证 176 8.5.2 Session管理及Cookie应用 177 第9章 基于HTTP的功能追加协议 179 9.1 基于HTTP的协议180 9.2 消除HTTP瓶颈的SPDY 180 9.2.1 HTTP的瓶颈 180 9.2.2 SPDY的设计与功能 184 9.2.3 SPDY消除Web瓶颈了吗 185 9.3 使用浏览器进行全双工通信的WebSocket 186 9.3.1 WebSocket的设计与功能 186 9.3.2 WebSocket协议 186 9.4 期盼已久的HTTP/2.0 189 9.5 Web服务器管理文件的WebDAV 190 9.5.1 扩展HTTP/1.1的WebDAV 191 9.5.2 WebDAV内新增的方法及状态码 192 第10章 构建Web内容的技术 195 10.1 HTML 196 10.1.1 Web页面几乎全由HTML构建 196 10.1.2 HTML的版本 197 10.1.3 设计应用CSS 198 10.2 动态HTML 198 10.2.1 让Web页面动起来的动态HTML 198 10.2.2 更易控制HTML的DOM 198 10.3 Web应用 200 10.3.1 通过Web提供功能的Web应用 200 10.3.2 与Web服务器及程序协作的CGI 200 10.3.3 因Java而普及的Servlet 201 10.4 数据发布的格式及语言 203 10.4.1 可扩展标记语言 203 10.4.2 发布更新信息的RSS/Atom 204 10.4.3 JavaScript衍生的轻量级易用JSON 206 第11章 Web的攻击技术 207 11.1 针对Web的攻击技术 208 11.1.1 HTTP不具备必要的安全功能 208 11.1.2 在客户端即可篡改请求 209 11.1.3 针对Web应用的攻击模式 210 11.2 因输出值转义不完全引发的安全漏洞 212 11.2.1 跨站脚本攻击 213 11.2.2 SQL注入攻击 218 11.2.3 OS命令注入攻击 223 11.2.4 HTTP首部注入攻击 225 11.2.5 邮件首部注入攻击 228 11.2.6 目录遍历攻击 229 11.2.7 远程文件包含漏洞 230 11.3 因设置或设计上的缺陷引发的安全漏洞 232 11.3.1 强制浏览 232 11.3.2 不正确的错误消息处理 234 11.3.3 开放重定向 237 11.4 因会话管理疏忽引发的安全漏洞 237 11.4.1 会话劫持 238 11.4.2 会话固定攻击 239 11.4.3 跨站点请求伪造 241 11.5 其他安全漏洞 242 11.5.1 密码破解 242 11.5.2 点击劫持 247 11.5.3 DoS攻击 249 11.5.4 后门程序 250