⚡️HTTP 实用指南 | 青训营笔记

59 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

1、是什么是 HTTP

HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一个应用层的协议,基于 TCP 协议。HTTP 请求分为请求和响应,简单可扩展,是一个无状态的协议。它可以拆成三个部分:

  • 超文本
  • 传输
  • 协议

超文本

超文本就是超越了普通文本的文本,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本

传输

传输实现的就是为两点之间的数据运输,实现了双向传递数据的效果

协议

用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理方式(行为约定和规范

2、HTTP 请求的构成

  • 请求行:方法名,url,协议版本
  • 状态行:协议版本,状态码,状态码描述
    • 1xx:表示请求已接收,继续处理
    • 2xx:表示请求已经被服务器端成功解析
    • 3xx:表示重定向
    • 4xx:表示客户端的请求存在错误,导致服务端不能正确处理这个请求
    • 5xx:表示服务端在处理请求的过程中发生了错误,无法处理这个请求
  • 请求头:请求的元数据,包括长度或者业务逻辑所需要的数据等
  • 响应头:响应的元数据
  • 请求体:请求的数据内容
  • 响应体:响应的数据内容

3、HTTP2

HTTP/1.1 存在的问题

  1. 并发连接数量有限
    • 每一个连接都得经过 TCP 和 TLS 握手耗时,建立连接得花额外的时间
  1. 服务器与客户端单方传递数据
    • 当客户端需要获取通知时,只能通过定时器不断地拉取消息,这无疑浪费大量了带宽和服务器资源
  1. HTTP 头部巨大且重复
    • 由于 HTTP 协议是无状态的,每一个请求都得携带 HTTP 头部,特别是对于有携带 cookie 的头部,而 cookie 的大小通常很大

HTTP/2 的优化

  1. 头部压缩
  2. 二进制帧
  3. 并发传输
  4. 服务器主动推送资源