auto commit
This commit is contained in:
parent
3413f4f343
commit
82d237df68
|
@ -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>
|
<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>
|
<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 状态。
|
在请求报文首部中添加 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。
|
涉及以下首部字段: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 采用 **混合的加密机制** ,使用公开密钥加密用于传输
|
||||||
|
|
||||||
## 认证
|
## 认证
|
||||||
|
|
||||||
通过使用 **证书** 来对通信方进行认证。证书中有公开密钥数据,如果可以验证公开密钥的确属于通信方的,那么就可以确定通信方是可靠的。
|
通过使用 **证书** 来对通信方进行认证。证书中有公开密钥数据,如果可以验证公开密钥的确属于通信方的,那么就可以确定通信方是可靠的。数字证书认证机构(CA,Certificate Authority)可以对其颁发的公开密钥证书对其进行验证。
|
||||||
|
|
||||||
数字证书认证机构(CA,Certificate Authority)可以对其颁发的公开密钥证书对其进行验证。
|
|
||||||
|
|
||||||
进行 HTTPs 通信时,服务器会把证书发送给客户端,客户端取得其中的公开密钥之后,就可以开始通信。
|
进行 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 采用二进制格式。
|
||||||
|
|
||||||
# 参考资料
|
# 参考资料
|
||||||
|
|
||||||
|
|
BIN
pics/39a27cca-c9af-482a-8a87-5522557a309e.jpg
Normal file
BIN
pics/39a27cca-c9af-482a-8a87-5522557a309e.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
Loading…
Reference in New Issue
Block a user