浅探HTTP协议 | 青训营

65 阅读3分钟

这篇文章要介绍的是HTTP协议,因为大家基本都是学计算机相关专业的,所有我相信我们大家对HTTP协议 都不会感到陌生,HTTP协议是当今使用最为广泛的协议之一,是前端、客户端与服务端通信的基础协议,前后端之间通过HTTP协议进行通信,HTTP框架负责的就是对HTTP请求的解析,根据对应的路由选择对应的后端逻辑。

一、对HTTP协议名字的理解

HTTP协议(Hypertext Transfer Protocol)的中文名为超文本传输协议,为什么叫超文本呢,什么又是超文本呢?随着社会的发展,最开始普通的text文本已经不能满足需要,随之发展出来的音频、图片、视频等对text就是一种扩充,所以叫超文本(Hypertext)。

二、HTTP协议存在的合理性

①我们需要明确的边界,信息是从什么时候开始,又是到什么时候结束的,明确了边界才能准确获取需要的信息。
②能够携带信息,包括信息类型、什么消息。

三、HTTP请求

HTTP请求包含请求行、请求头和请求体三部分。请求行包括请求方法名、URL和协议版本,其中常见的方法名有:GET、HEAD、POST、PUT、DELETE等;请求头是在HTTP协议中用于描述一个HTTP请求的元数据,它是客户端发送给服务器的一部分请求信息,包含了客户端的相关配置和要求;请求体是在HTTP协议中用于传输客户端向服务器发送的数据的部分,它是HTTP请求中可选的组成部分。

四、HTTP响应?

HTTP响应包含状态行、响应头和响应体三部分。状态行包含协议版本、状态码和状态码描述,其中状态码有五类:1××代表信息类、2××代表成功、3××代表重定向、4××代表客户端错误、4××代表服务端错误;响应头是在HTTP协议中用于描述服务器响应的元数据,它是服务器在响应客户端请求时发送给客户端的一部分响应信息,包含服务器的相关配置和对响应内容的描述;响应体是用来传输服务器响应给客户端的数据的部分,包含了服务器返回的实际响应内容。

五、请求流程

请求需要五层共同来完成,分别是业务层、服务治理层中间件层、路由层、协议编(解)码层、传输层,层与层之间具有联系,五层共同合作完成一个请求。

六、HTTP框架的设计

API设计:可理解性、简单性
中间件设计:洋葱模型
路由设计:前缀匹配树
协议层设计:抽象出合适的接口
网络层设计:网络模型

七、不足与展望

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