走进HTTP协议 | 青训营笔记

84 阅读2分钟

HTTP协议是什么

说到Http协议我们都几乎很清楚了,我们第一个大规模使用的Http协议版本是0.9。

Http又称超文本传输协议(Hypertext Transfer Protocol)。

什么是超文本呢?顾名思义,就是超越文本或不只是文本,比如图片、音频、视频等。

为什么需要协议?

在网络传输中,传输的都是0、1这样的数据流,只有按照一定的规则,对方才能识别清楚,这样约定好的规则,就可以称为协议。

协议需要明确的边界:开始、结束。需要清楚数据流是从哪一部分开始的到哪一部分结束的。

协议能够携带信息:消息内容、消息类型等

协议里有什么?

先来看一个请求,请求头都包含了哪些信息

  • 首行

HTTP/2 200 OK

版本号+ 状态码 + 状态码解释

  • 协议头

协议头分为:请求头和响应头

协议头是键值对结构,每个键值对各占一行,键值对用冒号分隔

如:Content-Type: application/json

  • 空行

空行是协议头的结束标记

  • 正文

空行后的内容都是正文,正文可以是空字符串,也可以非空。

请求行/状态行

请求行包括方法名、URL、协议版本

常见的方法名有:

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
  • CONNECT
  • OPTIONS
  • TRACE
  • PATCH

状态行包括协议版本、状态码、状态码描述。

常见的状态码:

  • 1xx:信息类
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx: 服务端错误

请求流程

一个请求需要经过哪些层呢?

一个请求需要经过:业务层、服务治理层、中间件层、协议编解码层、传输层。

不足与展望

下面来对比下Http1、Http2、QUIC都有哪些优缺点:

  • Http1:队头阻塞、传输效率低、明文传输不安全
  • Http2:多路复用、头部压缩、二进制协议
  • QUIC:基于UDP实现、解决队头阻塞问题、加密减少握手次数、支持快速启动