我是一名初级前端开发者,目前精力着眼于 Plain JavaScript 上,我的博客 if-true.com,原文链接:《图解 HTTP》读书笔记。欢迎交流 :)
第二章 简单的 HTTP 协议
请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字 代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
HTTP 是不保存状态的协议,引入 Cookie 实现持久化。
持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的 额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应 提高了。
-
管线化
持久连接使得多数请求以管线化(pipelining)方式发送成为可能。 从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术 出现后,不用等待响应亦可直接发送下一个请求。
第3章 HTTP 报文内的 HTTP 信息
HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。
-
首部字段
一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。
常用的内容编码有以下几种
* gzip(GNU zip)
* compress(UNIX 系统的标准压缩)
* deflate(zlib)
* identity(不进行编码)
MIME(Multipurpose Internet Mail Extensions,多用途因特网 邮件扩展)机制
内容协商技术
第4章 返回结果的 HTTP 状态码
第5章 与 HTTP 协作的 Web 服务器
-
信数据转发程序:代理、网关、隧道
代理:转发时,需要附加 Via 首部字段以标记出经过的主机信息。
网管:利用网关可以由 HTTP 请求转化为其他协议通信。
隧道:隧道的目的是确保客户端能与服务器进行安全的通信。
第6章 HTTP 首部
- 请求首部字段
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 为 Cookie 服务的首部字段
第7章 确保 Web 安全的 HTTPS
-
HTTP 主要有这些不足,例举如下
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
HTTPS 是身披 SSL 外壳的 HTTP
对称密钥加密:加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system)
使用两把密钥的公开密钥加密:公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。
HTTPS 采用混合加密机制:HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
-
SSL 速度慢
SSL 的慢分两种。一种是指通信慢。另一种是指由于大量消耗 CPU 及内存等资源,导致处理速度变慢。
第8章 确认访问用户身份的认证
- HTTP/1.1 使用的认证方式如下所示。
* BASIC 认证(基本认证)
* DIGEST 认证(摘要认证)
* SSL 客户端认证
* FormBase 认证(基于表单认证)
第9章 基于 HTTP 的功能追加协议
AJAX
Comet
-
SPDY
SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输 层之间通过新加会话层的形式运作。使用 SPDY 后,HTTP 协议额外获得以下功能。
- 多路复用流
- 赋予请求优先级
- 压缩 HTTP 首部
- 推送功能
- 服务器提示功能
-
使用浏览器进行全双工通信的 WebSocket,特点有
- 推送功能
- 减少通信量
期盼已久的 HTTP/2.0
第10章 构建 Web 内容的技术
第11章 Web 的攻击技术
-
针对 Web 应用的攻击模式
- 主动攻击
- 被动攻击
-
以服务器为目标的主动攻击
具有代表性的攻击是 SQL 注入攻击和 OS 命令注入攻击。
-
以服务器为目标的被动攻击
具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。