前言
HTTP协议是当今使用最为广泛的协议之一,也是客户端与服务端通信使用的基础协议。然而在学校的课程中对于HTTP一般只是粗略介绍,很少进行深入的学习和了解。如果能够深入了解HTTP工作的原理、了解HTTP框架的设计与实现,就能够更好地使用HTTP来进行项目的开发
HTTP协议是什么
Hypertext Transfer Protocol,简称HTTP,意为超文本传输协议。是一个简单的请求-响应协议,在一般情况下运行于TCP之上。协议定义了Web客户端如何从Web服务器请求Web页面、服务器如何把Web页面传输给客户端。即指定了客户端与服务器之间请求和响应消息传输的形式,规范制定了消息传输的内容格式,使得开发和部署直截了当。
为什么需要HTTP协议
服务器与客户端之间的数据交流需要有一定的格式,如同人与人之间用语言交流也得遵守语法一样。HTTP协议就如同规范客户端与服务器之间信息交流格式的语法,便于客户端与服务端之间的通信,使得数据传输变得更加稳定和安全。
需要明确的边界
- 传输开始
- 传输结束
能够携带信息
- 消息内容
- 消息类型
协议里有什么
Ⅰ.请求行/状态行
请求行中有
- 方法名:常见方法名有POST、GET、HEAD、DELETE、PUT、PATCH等
- URL
- 协议版本
状态行中有
- 协议版本
- 状态码: 1XX信息类、2XX成功、3XX重定向、4XX客户端错误、5XX服务端错误
- 状态码描述
Ⅱ.请求头/响应头
- 请求头:客户端发送给服务端的一些信息,用键值对表示
- 响应头:服务端返回给客户端的一些信息,用键值对表示
Ⅲ.请求体/响应体
- 请求体:可能含有请求数据
- 响应体:服务端回写给客户端的页面正文
请求流程
不足与展望
HTTP1
- 队头阻塞
- 传输效率低
- 明文传输不安全
HTTP2
- 多路复用
- 头部压缩
- 二进制协议
QUIC
- 基于UDP实现
- 解决队头阻塞
- 加密减少握手次数
- 支持快速启动