【JavaWeb】HTTP简介

目录

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 + 新资源,客户端更新缓存

相关推荐
岁岁种桃花儿8 小时前
Nginx 站点垂直扩容(单机性能升级)全攻略
网络·nginx·dns
Xの哲學8 小时前
Linux SMP 实现机制深度剖析
linux·服务器·网络·算法·边缘计算
一颗青果9 小时前
公网构建全流程与参与主体深度解析
网络
小北方城市网11 小时前
Python + 前后端全栈进阶课程(共 10 节|完整版递进式|从技术深化→项目落地→就业进阶,无缝衔接基础课)
大数据·开发语言·网络·python·数据库架构
山上三树11 小时前
task_struct 详解
运维·服务器·网络
sweet丶12 小时前
DNS安全威胁:从劫持、污染到放大攻击的演练
网络协议·安全
传感器与混合集成电路12 小时前
175℃持续工作:专为随钻测量系统设计的高温AC-DC电源
网络·能源
日更嵌入式的打工仔12 小时前
Ehercat代码解析中文摘录<1>
网络·笔记·ethercat
一只鹿鹿鹿12 小时前
网络信息与数据安全建设方案
大数据·运维·开发语言·网络·mysql
航Hang*13 小时前
第五章:网络系统建设与运维(中级)——生成树协议
运维·服务器·网络·笔记·华为·ensp