这是我参与「第四届青训营」笔记创作活动的的第 6 天
什么是 HTTP
HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一个应用层的协议,基于 TCP 协议。HTTP 请求分为请求和响应,简单可扩展,是一个无状态的协议。
HTTP 请求的构成
- 第一行:请求方法、请求 URL、使用的 HTTP 版本。
- 空行
- 请求体
HTTP 状态码
HTTP 状态码使用三位数字表示。
- 1xx:表示请求已接收,继续处理。
- 2xx:表示请求已经被服务器端成功解析。
- 3xx:表示重定向。
- 4xx:表示客户端的请求存在错误,导致服务端不能正确处理这个请求。
- 5xx:表示服务端在处理请求的过程中发生了错误,无法处理这个请求。
HTTP2
HTTP2 更快、更稳定、更简单。
HTTP2 在传输过程中把 message 拆分为多个帧,帧可以传输二进制而不再是纯文本,使得传输消息的速率更高。而且帧可以并行传输,不需要等待前一个序列的传输完成,所有帧传输完毕后由客户端按照帧头部的信息再合并为一个完整的 message。
多个帧组成一个完整的消息,而已建立的连接内的双向字节流可以承载一条或者多条消息。一个连接中可以有很多个双向字节流来发送数据。
HTTP2 连接都是永久的,而且仅需要每个来源一个连接。HTTP2 支持流控制,可以阻止发送方向接收方发送大量数据的机制。
HTTP2 还支持服务器推送,如当用户获取某个 HTML 页面后,服务器可以主动将页面中引用的 JS、CSS 等资源主动一起推送给客户端。
HTTPS
HTTPS 在 HTTP 传输的过程使用 TSL/SSL 加密,为了兼顾性能和安全性,HTTPS 同时采用对称加密和非对称加密来进行传输。在建立连接的时候,采用非对称加密,握手完成后,使用非对称加密过程中交换的密钥进行对称加密传输。