auto commit
This commit is contained in:
parent
04a8572e18
commit
0da4cf12c2
|
@ -422,7 +422,7 @@ Session 可以存储在服务器上的文件、数据库或者内存中,现在
|
||||||
### 1. 优点
|
### 1. 优点
|
||||||
|
|
||||||
- 缓解服务器压力;
|
- 缓解服务器压力;
|
||||||
- 减低客户端获取资源的延迟(缓存资源比服务器上的资源离客户端更近)。
|
- 降低客户端获取资源的延迟(缓存资源比服务器上的资源离客户端更近)。
|
||||||
|
|
||||||
### 2. 实现方法
|
### 2. 实现方法
|
||||||
|
|
||||||
|
@ -473,7 +473,7 @@ max-age 指令出现在响应报文中,表示缓存资源在缓存服务器中
|
||||||
Cache-Control: max-age=31536000
|
Cache-Control: max-age=31536000
|
||||||
```
|
```
|
||||||
|
|
||||||
Expires 字段也可以用于告知缓存服务器该资源什么时候会过期。在 HTTP/1.1 中,会优先处理 Cache-Control : max-age 指令;而在 HTTP/1.0 中,Cache-Control : max-age 指令会被忽略掉。
|
Expires 首部字段也可以用于告知缓存服务器该资源什么时候会过期。在 HTTP/1.1 中,会优先处理 Cache-Control : max-age 指令;而在 HTTP/1.0 中,Cache-Control : max-age 指令会被忽略掉。
|
||||||
|
|
||||||
```html
|
```html
|
||||||
Expires: Wed, 04 Jul 2012 08:26:05 GMT
|
Expires: Wed, 04 Jul 2012 08:26:05 GMT
|
||||||
|
@ -481,7 +481,7 @@ Expires: Wed, 04 Jul 2012 08:26:05 GMT
|
||||||
|
|
||||||
### 4. 缓存验证
|
### 4. 缓存验证
|
||||||
|
|
||||||
需要先了解 ETag 首部字段的含义,它是资源的唯一表示。URL 不能唯一表示资源,例如 `http://www.google.com/` 有中文和英文两个资源,只有 ETag 才能对这两个资源进行唯一表示。
|
需要先了解 ETag 首部字段的含义,它是资源的唯一标识。URL 不能唯一表示资源,例如 `http://www.google.com/` 有中文和英文两个资源,只有 ETag 才能对这两个资源进行唯一标识。
|
||||||
|
|
||||||
```html
|
```html
|
||||||
ETag: "82e22293907ce725faf67773957acd12"
|
ETag: "82e22293907ce725faf67773957acd12"
|
||||||
|
@ -511,7 +511,7 @@ If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
|
||||||
|
|
||||||
当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源,如果每进行一次 HTTP 通信就要断开一次 TCP 连接,连接建立和断开的开销会很大。长连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。
|
当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源,如果每进行一次 HTTP 通信就要断开一次 TCP 连接,连接建立和断开的开销会很大。长连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。
|
||||||
|
|
||||||
HTTP/1.1 开始默认是长连接的,如果要断开连接,需要由客户端或者服务器端提出断开,使用 Connection : close;而在 HTTP/1.1 之前默认是短连接的,如果需要长连接,则使用 Connection : Keep-Alive。
|
从 HTTP/1.1 开始默认是长连接的,如果要断开连接,需要由客户端或者服务器端提出断开,使用 Connection : close;而在 HTTP/1.1 之前默认是短连接的,如果需要长连接,则使用 Connection : Keep-Alive。
|
||||||
|
|
||||||
### 2. 流水线
|
### 2. 流水线
|
||||||
|
|
||||||
|
@ -631,6 +631,7 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名,
|
||||||
使用代理的主要目的是:
|
使用代理的主要目的是:
|
||||||
|
|
||||||
- 缓存
|
- 缓存
|
||||||
|
- 负载均衡
|
||||||
- 网络访问控制
|
- 网络访问控制
|
||||||
- 访问日志记录
|
- 访问日志记录
|
||||||
|
|
||||||
|
@ -666,25 +667,29 @@ HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)
|
||||||
|
|
||||||
### 1. 对称密钥加密
|
### 1. 对称密钥加密
|
||||||
|
|
||||||
对称密钥加密(Symmetric-Key Encryption),加密的加密和解密使用同一密钥。
|
对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。
|
||||||
|
|
||||||
- 优点:运算速度快;
|
- 优点:运算速度快;
|
||||||
- 缺点:密钥容易被获取。
|
- 缺点:无法安全地将密钥传输给通信方。
|
||||||
|
|
||||||
<div align="center"> <img src="../pics//7fffa4b8-b36d-471f-ad0c-a88ee763bb76.png" width="600"/> </div><br>
|
<div align="center"> <img src="../pics//7fffa4b8-b36d-471f-ad0c-a88ee763bb76.png" width="600"/> </div><br>
|
||||||
|
|
||||||
### 2. 公开密钥加密
|
### 2.非对称密钥加密
|
||||||
|
|
||||||
公开密钥加密(Public-Key Encryption),也称为非对称密钥加密,使用一对密钥用于加密和解密,分别为公开密钥和私有密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。
|
非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。
|
||||||
|
|
||||||
- 优点:更为安全;
|
公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。
|
||||||
- 缺点:运算速度慢;
|
|
||||||
|
非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。
|
||||||
|
|
||||||
|
- 优点:可以更安全地将公开密钥传输给通信发送方;
|
||||||
|
- 缺点:运算速度慢。
|
||||||
|
|
||||||
<div align="center"> <img src="../pics//39ccb299-ee99-4dd1-b8b4-2f9ec9495cb4.png" width="600"/> </div><br>
|
<div align="center"> <img src="../pics//39ccb299-ee99-4dd1-b8b4-2f9ec9495cb4.png" width="600"/> </div><br>
|
||||||
|
|
||||||
### 3. HTTPs 采用的加密方式
|
### 3. HTTPs 采用的加密方式
|
||||||
|
|
||||||
HTTPs 采用混合的加密机制,使用公开密钥加密用于传输对称密钥来保证安全性,之后使用对称密钥加密进行通信来保证效率。(下图中的 Session Key 就是对称密钥)
|
HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证安全性,之后使用对称密钥加密进行通信来保证效率。(下图中的 Session Key 就是对称密钥)
|
||||||
|
|
||||||
<div align="center"> <img src="../pics//How-HTTPS-Works.png" width="600"/> </div><br>
|
<div align="center"> <img src="../pics//How-HTTPS-Works.png" width="600"/> </div><br>
|
||||||
|
|
||||||
|
@ -698,13 +703,15 @@ HTTPs 采用混合的加密机制,使用公开密钥加密用于传输对称
|
||||||
|
|
||||||
进行 HTTPs 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。
|
进行 HTTPs 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。
|
||||||
|
|
||||||
|
通信开始时,客户端需要使用服务器的公开密钥将自己的私有密钥传输给服务器,之后再进行对称密钥加密。
|
||||||
|
|
||||||
<div align="center"> <img src="../pics//2017-06-11-ca.png" width=""/> </div><br>
|
<div align="center"> <img src="../pics//2017-06-11-ca.png" width=""/> </div><br>
|
||||||
|
|
||||||
## 完整性保护
|
## 完整性保护
|
||||||
|
|
||||||
SSL 提供报文摘要功能来进行完整性保护。
|
SSL 提供报文摘要功能来进行完整性保护。
|
||||||
|
|
||||||
HTTP 也提供了 MD5 报文摘要功能,但是却不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生篡改。
|
HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。
|
||||||
|
|
||||||
HTTPs 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。
|
HTTPs 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user