这是我参与「第四届青训营 」笔记创作活动的第3天
1、是什么是 HTTP
HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一个应用层的协议,基于 TCP 协议。HTTP 请求分为请求和响应,简单可扩展,是一个无状态的协议。它可以拆成三个部分:
- 超文本
- 传输
- 协议
超文本
超文本就是超越了普通文本的文本,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本
传输
传输实现的就是为两点之间的数据运输,实现了双向传递数据的效果
协议
用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理方式(行为约定和规范)
2、HTTP 请求的构成
- 请求行:方法名,url,协议版本
- 状态行:协议版本,状态码,状态码描述
-
- 1xx:表示请求已接收,继续处理
- 2xx:表示请求已经被服务器端成功解析
- 3xx:表示重定向
- 4xx:表示客户端的请求存在错误,导致服务端不能正确处理这个请求
- 5xx:表示服务端在处理请求的过程中发生了错误,无法处理这个请求
- 请求头:请求的元数据,包括长度或者业务逻辑所需要的数据等
- 响应头:响应的元数据
- 请求体:请求的数据内容
- 响应体:响应的数据内容
3、HTTP2
HTTP/1.1 存在的问题
- 并发连接数量有限
-
- 每一个连接都得经过 TCP 和 TLS 握手耗时,建立连接得花额外的时间
- 服务器与客户端单方传递数据
-
- 当客户端需要获取通知时,只能通过定时器不断地拉取消息,这无疑浪费大量了带宽和服务器资源
- HTTP 头部巨大且重复
-
- 由于 HTTP 协议是无状态的,每一个请求都得携带 HTTP 头部,特别是对于有携带 cookie 的头部,而 cookie 的大小通常很大
HTTP/2 的优化
- 头部压缩
- 二进制帧
- 并发传输
- 服务器主动推送资源