目录
HTTP简介
HTTP超文本传输协议(HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过十几年的使用与发展,得到不断地完善和扩展。
它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
客户端与服务端通信时传输的内容我们称之为报文 。HTTP协议就是规定报文的格式。HTTP就是一个通信规则,
这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。实际我们要学习的就是这两种报文。
客户端发送给服务器的称为"请求报文",服务器发送给客户端的称为"响应报文"。
发展历程
HTTP/0.9
css
蒂姆伯纳斯李是一位英国计算机科学家,也是万维网的发明者。他在1989年创建了单行HTTP协议。它只是返回一个网页。这个协议在1991年被命名为HTTP/0.9。
HTTP/1.0
1996年,HTTP/1.0发布。该规范是显著扩大,并且支持三种请求方法:GET,Head,和POST。
css
HTTP/1.0相对于HTTP/0.9的改进如下:
每个请求都附加了HTTP版本。
在响应开始时发送状态代码。
请求和响应都包含HTTP报文头。
内容类型能够传输HTML文件以外的文档。
但是,HTTP/1.0不是官方标准。
HTTP/1.1
css
HTTP的第一个标准化版本HTTP/1.1(RFC 2068)于1997年初发布,支持七种请求方法:OPTIONS, GET, HEAD, POST, PUT, DELETE, 和TRACE
HTTP/1.1是HTTP 1.0的增强:
○ 虚拟主机允许从单个IP地址提供多个域。
○ 持久连接和流水线连接允许Web浏览器通过单个持久连接发送多个请求。
○ 缓存支持节省了带宽并使响应速度更快。
HTTP/1.1在接下来的15年左右将非常稳定。
在此期间,出现了HTTPS(安全超文本传输协议)。它是使用SSL/TLS进行安全加密通信的HTTP的安全版本。
HTTP/2
css
- 由IETF在2015年发布。HTTP/2旨在提高Web性能,减少延迟,增加安全性,使Web应用更加快速、高效和可靠。
- 多路复用:HTTP/2允许同时发送多个请求和响应,而不是像HTTP/1.1一样只能一个一个地处理。这样可以减少延迟,提高效率,提高网络吞吐量。
- 二进制传输:HTTP/2使用二进制协议,与HTTP/1.1使用的文本协议不同。二进制协议可以更快地解析,更有效地传输数据,减少了传输过程中的开销和延迟。
- 头部压缩:HTTP/2使用HPACK算法对HTTP头部进行压缩,减少了头部传输的数据量,从而减少了网络延迟。
- 服务器推送:HTTP/2支持服务器推送,允许服务器在客户端请求之前推送资源,以提高性能。
- 改进的安全性:HTTP/2默认使用TLS(Transport Layer Security)加密传输数据,提高了安全性。
- 兼容HTTP/1.1:HTTP/2可以与HTTP/1.1共存,服务器可以同时支持HTTP/1.1和HTTP/2。如果客户端不支持HTTP/2,服务器可以回退到HTTP/1.1。
HTTP/3
css
- 于2021年5月27日发布,HTTP/3是一种新的、快速、可靠且安全的协议,适用于所有形式的设备。HTTP/3没有使用TCP,而是使用谷歌在2012年开发的新协议QUIC
- HTTP/3是继HTTP/1.1和HTTP/2之后的第三次重大修订。
- HTTP/3带来了革命性的变化,以提高Web性能和安全性。设置HTTP/3网站需要服务器和浏览器支持。
- 目前,谷歌云、Cloudflare和Fastly支持HTTP/3。Chrome、Firefox、Edge、Opera和一些移动浏览器支持HTTP/3。
目前最主流的就是HTTP/1.1

HTTP协议到底干了什么事
设计了客户端和服务端交互的方式
请求 永远都是客户端向服务端发送
响应 永远都是服务端向客户端返回
设计了客户端和服务端交互数据的格式
请求时发送的数据,称之为请求报文
响应时返回的数据,称之为响应报文
报文是有规定的格式
报文首部 请求报文 响应报文
行 请求行 响应行
头 请求头 响应头
报文主体 请求体 响应体
HTTP长链接和短链接问题
http 应用层协议
tcp 传输层协议
ip 网络层
长连接和短连接是指客户端与服务端之间 TCP 连接的复用方式
短连接(HTTP/1.0 默认)
流程:客户端发请求 → 建立 TCP 连接 → 服务端响应 → 立即关闭 TCP 连接
特点:每次请求都要重新建立 / 断开连接,效率低、延迟高(频繁握手 / 挥手)
长连接(HTTP/1.1 默认,也叫持久连接)
流程:客户端发请求 → 建立 TCP 连接 → 服务端响应后不关闭连接,后续请求复用同一个 TCP 连接。
特点:减少连接建立 / 断开的开销,提升效率;连接会在空闲一段时间后(由服务端 / 客户端配置)自动关闭。
HTTP缓存
HTTP/1.1 中的缓存核心是减少重复请求、降低服务器负载、提升响应速度------ 让客户端(浏览器等)在满足条件时,直接复用本地已存储的资源,无需每次都从服务端重新获取
客户端首次请求资源:服务端返回 200 OK + 资源 + 缓存字段(Cache-Control/Expires/Last-Modified/ETag),客户端存储资源和缓存信息
客户端再次请求同一资源
先检查强缓存:若 Cache-Control 的 max-age 未过期(或 Expires 未到),直接使用本地缓存(状态码:200 from cache)。
强缓存失效:触发协商缓存,发送请求带 If-Modified-Since/If-None-Match。
服务端验证:有效则返回 304,客户端复用本地缓存;无效则返回 200 + 新资源,客户端更新缓存