2018-08-15 19:58:57 +08:00
|
|
|
|
<!-- TOC -->
|
|
|
|
|
|
|
|
|
|
- [Http常见状态码](#http常见状态码)
|
2018-08-27 23:22:27 +08:00
|
|
|
|
- [http 和 https 的区别](#http-和-https-的区别)
|
2018-08-28 12:16:15 +08:00
|
|
|
|
- [http](#http)
|
|
|
|
|
- [https](#https)
|
|
|
|
|
- [http 2.0 的优势](#http-20-的优势)
|
|
|
|
|
- [二进制分帧层](#二进制分帧层)
|
|
|
|
|
- [服务端推送](#服务端推送)
|
|
|
|
|
- [首部压缩](#首部压缩)
|
2018-08-15 19:58:57 +08:00
|
|
|
|
|
|
|
|
|
<!-- /TOC -->
|
|
|
|
|
# Http常见状态码
|
|
|
|
|
|
|
|
|
|
2XX 成功
|
|
|
|
|
|
|
|
|
|
200 OK,表示从客户端发来的请求在服务器端被正确处理
|
|
|
|
|
204 No content,表示请求成功,但响应报文不含实体的主体部分
|
|
|
|
|
206 Partial Content,进行范围请求
|
|
|
|
|
|
|
|
|
|
3XX 重定向
|
|
|
|
|
|
|
|
|
|
301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
|
|
|
|
|
302 found,临时性重定向,表示资源临时被分配了新的 URL
|
|
|
|
|
303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源
|
|
|
|
|
304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
|
|
|
|
|
307 temporary redirect,临时重定向,和302含义相同
|
|
|
|
|
|
|
|
|
|
4XX 客户端错误
|
|
|
|
|
|
|
|
|
|
400 bad request,请求报文存在语法错误
|
|
|
|
|
401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
|
|
|
|
|
403 forbidden,表示对请求资源的访问被服务器拒绝
|
|
|
|
|
404 not found,表示在服务器上没有找到请求的资源
|
|
|
|
|
|
|
|
|
|
5XX 服务器错误
|
|
|
|
|
|
|
|
|
|
500 internal sever error,表示服务器端在执行请求时发生了错误
|
|
|
|
|
503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
|
2018-08-27 23:22:27 +08:00
|
|
|
|
|
|
|
|
|
# http 和 https 的区别
|
|
|
|
|
|
2018-08-28 12:16:15 +08:00
|
|
|
|
## http
|
2018-08-27 23:22:27 +08:00
|
|
|
|
|
2018-08-28 12:16:15 +08:00
|
|
|
|
- 采用明文传输数据,内容可能遭到窃听;
|
|
|
|
|
- 不验证通信方的身份,通信方的身份有可能遭遇伪装;
|
|
|
|
|
- 无法证明报文的完整性,报文有可能遭篡改。
|
|
|
|
|
|
|
|
|
|
## https
|
|
|
|
|
|
|
|
|
|
HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPs 使用了隧道进行通信。
|
|
|
|
|
|
|
|
|
|
通过使用 SSL,HTTPs 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
|
|
|
|
|
|
|
|
|
|
https 的加密方式:
|
|
|
|
|
|
|
|
|
|
HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。
|
|
|
|
|
|
|
|
|
|
# http 2.0 的优势
|
|
|
|
|
|
|
|
|
|
## 二进制分帧层
|
|
|
|
|
|
|
|
|
|
在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream)。
|
|
|
|
|
|
|
|
|
|
- 一个数据流都有一个唯一标识符和可选的优先级信息,用于承载双向信息。
|
|
|
|
|
- 消息(Message)是与逻辑请求或响应消息对应的完整的一系列帧。
|
|
|
|
|
- 帧(Fram)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装。
|
|
|
|
|
|
|
|
|
|
## 服务端推送
|
|
|
|
|
|
|
|
|
|
HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。
|
|
|
|
|
|
|
|
|
|
## 首部压缩
|
|
|
|
|
|
|
|
|
|
HTTP/1.1 的首部带有大量信息,而且每次都要重复发送。
|
|
|
|
|
|
|
|
|
|
HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见过的首部字段表,从而避免了重复传输。
|
|
|
|
|
|
|
|
|
|
不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩。
|