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

相关推荐
IOsetting12 小时前
金山云主机添加开机路由
运维·服务器·开发语言·网络·php
XiaoMu_00112 小时前
自动化漏洞扫描与预警平台
运维·网络·自动化
崎岖Qiu12 小时前
【计算机网络 | 第九篇】PPP:点对点协议
网络·笔记·计算机网络·ppp
23zhgjx-zgx12 小时前
USB 设备通信数据包审计与键值解析报告
网络·ctf·流量
WJ.Polar12 小时前
FTP、Telnet、PPP、SNMP协议
服务器·网络
BLSxiaopanlaile13 小时前
《凤凰架构-构建可靠的大型分布式系统》读书笔记 -关于网络通信安全性的一些总结
http·加密·认证授权·网络通信安全
aesthetician13 小时前
实时通信的艺术:Server-Sent Events (SSE) 与 WebSocket 的深度解析
网络·websocket·网络协议
REDcker13 小时前
gRPC完整文档
服务器·网络·c++·网络协议·grpc
..过云雨13 小时前
多路转接select系统调用详解
网络·网络协议·tcp/ip
爱编码的傅同学13 小时前
【计算机网络】初识网络
网络·计算机网络