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

相关推荐
孪生质数-13 分钟前
AI Agent 工程实践(一):大模型 API 接入示范
网络·人工智能·ai·chatgpt·github·claude·claudecode
雾里0不看花16 分钟前
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
linux·网络·tcpdump
雾里0不看花1 小时前
.NET通过HTTP操作MINIO
http·.net·iphone
深圳市爱派派智能科技有限公司2 小时前
“高通 QCS8550 嵌入式主板 EC-A8550JD4:48 TOPS 算力上板“
网络·嵌入式·边缘计算·高通·qcs8550·天启智能·ec-a8550jd4
妍妍爱学习2 小时前
技术破界 数智共生:华为星河AI网络商业峰会5月18日深圳启幕
网络·ai·生态·数智化·峰会
funnycoffee1232 小时前
Cisco ip access-list序号重排方法
linux·网络·tcp/ip
nvd112 小时前
GCP 4层 外部网络负载均衡器深度解析
运维·网络·负载均衡
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题 第210题】【10_网络协议篇】第1题:说说 TCP/IP 网络五层模型
java·网络协议·tcp/ip·计算机网络·网络五层模型
不在逃避q3 小时前
使用.NET实现自带思考的Tool 并且提供mcp streamable http服务
网络协议·http·.net
蓝斯4974 小时前
C# 调用邮箱应用发送带附件的邮件
网络·c#·github