auto commit

This commit is contained in:
CyC2018 2018-03-14 12:04:26 +08:00
parent 3413f4f343
commit 82d237df68
2 changed files with 41 additions and 13 deletions

View File

@ -366,13 +366,13 @@ Expires 字段可以用于告知缓存服务器该资源什么时候会过期。
## 持久连接
当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源,如果每进行一次 HTTP 通信就要断开一次 TCP 连接,连接建立和断开的开销会很大。 **持久连接** 只需要进行一次 TCP 连接就能进行多次 HTTP 通信。HTTP/1.1 开始,所有的连接默认都是持久连接。
当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源,如果每进行一次 HTTP 通信就要断开一次 TCP 连接,连接建立和断开的开销会很大。持久连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。
<div align="center"> <img src="../pics//c73a0b78-5f46-4d2d-a009-dab2a999b5d8.jpg"/> </div><br>
持久连接需要使用 Connection 首部字段进行管理。HTTP/1.1 开始 HTTP 默认是持久化连接的,如果要断开 TCP 连接,需要由客户端或者服务器端提出断开,使用 Connection: close而在 HTTP/1.1 之前默认是非持久化连接的,如果要维持持续连接,需要使用 Keep-Alive。
持久连接需要使用 Connection 首部字段进行管理。HTTP/1.1 开始 HTTP 默认是持久化连接的,如果要断开 TCP 连接,需要由客户端或者服务器端提出断开,使用 Connection : close而在 HTTP/1.1 之前默认是非持久化连接的,如果要维持持续连接,需要使用 Connection : Keep-Alive。
管线化方式可以同时发送多个请求和响应,而不需要发送一个请求然后等待响应之后再发下一个请求。
**管线化方式** 可以同时发送多个请求和响应,而不需要发送一个请求然后等待响应之后再发下一个请求。
<div align="center"> <img src="../pics//6943e2af-5a70-4004-8bee-b33d60f39da3.jpg"/> </div><br>
@ -386,11 +386,25 @@ Expires 字段可以用于告知缓存服务器该资源什么时候会过期。
## 多部分对象集合
一份报文主体内可含有多种类型的实体同时发送,每个部分之间用 boundary 字段定义的分隔符进行分隔每个部分都可以有首部字段。
一份报文主体内可含有多种类型的实体同时发送,每个部分之间用 boundary 字段定义的分隔符进行分隔每个部分都可以有首部字段。
例如,上传多个表单时可以使用如下方式:
<div align="center"> <img src="../pics//2279cc60-9714-4e0e-aac9-4c348e0c2165.png"/> </div><br>
```html
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
```
## 范围请求
@ -398,12 +412,28 @@ Expires 字段可以用于告知缓存服务器该资源什么时候会过期。
在请求报文首部中添加 Range 字段,然后指定请求的范围,例如 Range:bytes=5001-10000。请求成功的话服务器发送 206 Partial Content 状态。
```html
GET /z4d4kWk.jpg HTTP/1.1
Host: i.imgur.com
Range: bytes=0-1023
```
```html
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/146515
Content-Length: 1024
...
(binary content)
```
## 内容协商
通过内容协商返回最合适的内容,例如根据浏览器的默认语言选择返回中文界面还是英文界面。
涉及以下首部字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。
<div align="center"> <img src="../pics//39a27cca-c9af-482a-8a87-5522557a309e.jpg"/> </div><br>
## 虚拟主机
使用虚拟主机技术,使得一台服务器拥有多个域名,并且在逻辑上可以看成多个服务器。
@ -454,15 +484,13 @@ HTTPs 采用 **混合的加密机制** ,使用公开密钥加密用于传输
## 认证
通过使用 **证书** 来对通信方进行认证。证书中有公开密钥数据,如果可以验证公开密钥的确属于通信方的,那么就可以确定通信方是可靠的。
数字证书认证机构CACertificate Authority可以对其颁发的公开密钥证书对其进行验证。
通过使用 **证书** 来对通信方进行认证。证书中有公开密钥数据如果可以验证公开密钥的确属于通信方的那么就可以确定通信方是可靠的。数字证书认证机构CACertificate Authority可以对其颁发的公开密钥证书对其进行验证。
进行 HTTPs 通信时,服务器会把证书发送给客户端,客户端取得其中的公开密钥之后,就可以开始通信。
使用 OpenSSL 这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。浏览器在访问该服务器时,会显示“无法确认连接安全性”或“该网站的安全证书存在问题”等警告消息
除了上诉提到的服务器端证书之外,还有客户端证书,客户端证书的目的就是让服务器对客户端进行验证。客户端证书需要用户自行安装,只有在业务需要非常高的安全性时才使用客户端证书,例如网上银行
客户端证书需要用户自行安装,只有在业务需要非常高的安全性时才使用客户端证书,例如网上银行
使用 OpenSSL 这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。浏览器在访问该服务器时,会显示“无法确认连接安全性”或“该网站的安全证书存在问题”等警告消息
## 完整性
@ -484,11 +512,11 @@ HTTP/1.1 新增了以下内容:
**多路复用**
HTTP/2.0 使用多路复用技术,使用同一个 TCP 连接来处理多个请求。
HTTP/2.0 使用多路复用技术,使用同一个 TCP 连接来处理多个请求。
**首部压缩**
HTTP1.1 的首部带有大量信息,而且每次都要重复发送HTTP/2.0 要求通讯双方各自缓存一份首部字段表,从而避免了重复传输。
HTTP/1.1 的首部带有大量信息,而且每次都要重复发送HTTP/2.0 要求通讯双方各自缓存一份首部字段表,从而避免了重复传输。
**服务端推送**
@ -496,7 +524,7 @@ HTTP1.1 的首部带有大量信息而且每次都要重复发送HTTP/2.0
**二进制格式**
HTTP1.1 的解析是基于文本的,而 HTTP2.0 采用二进制格式。
HTTP/1.1 的解析是基于文本的,而 HTTP/2.0 采用二进制格式。
# 参考资料

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB