HTTP协议及其工作原理

一、HTTP协议基础

1.概念

HTTP :超文本传输协议,基于TCP 、无状态、应用层协议,默认端口 80 ;HTTPS 加密版默认端口 443

  • 无状态:服务端不记录客户端历史请求,靠 Cookie/Session/Token 维持会话。
  • 版本区别:
    • HTTP/1.1:主流,支持长连接、缓存、Host 头
    • HTTP/2:二进制帧、多路复用、头部压缩
    • HTTP/3:基于 QUIC (UDP),低延迟、抗网络抖动

2.请求方法

方法 作用 幂等性 使用场景
GET 查询资源,参数拼在 URL 幂等 浏览页面、查询接口
POST 提交数据、创建资源 非幂等 注册、发帖、表单提交
PUT 全量更新资源 幂等 修改整条数据
DELETE 删除资源 幂等 删除数据
PATCH 局部更新资源 非幂等 只修改部分字段

注:GET 和 POST 区别?

  • 语义:GET 查询、POST 提交 / 创建;
  • 数据位置:GET 参数拼接 URL,POST 放请求体;
  • 缓存:GET 默认被浏览器缓存,POST 默认不缓存;
  • 幂等性:GET 幂等,POST 非幂等;
  • 长度限制:GET 受 URL 长度限制(浏览器 / 服务器限制),POST 无硬性限制;
  • 书签 / 历史:GET 可收藏,POST 不行;
  • 安全:都为明文,GET 参数暴露在地址栏,相对更不安全

3.状态码

  • 1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务端错误。

  • 重点状态码:

    • 204 No Content:成功无响应体,常用于删除接口;
    • 301/302/307/308 区别:永久 / 临时重定向、是否保留请求方法;
    • 304 Not Modified:协商缓存命中,关联缓存机制
    • 401 vs 403:401 未认证(未登录 / 无 token),403 已认证但权限不足;
    • 404/405/408/409 场景:资源不存在、请求方法不允许、请求超时、资源冲突;
    • 500/502/503/504线上故障核心
      • 500:应用代码异常、业务报错;
      • 502 Bad Gateway:网关/代理(Nginx)收到后端无效响应,后端服务宕机 / 崩溃;
      • 503 Service Unavailable:服务不可用(限流、宕机、维护、过载);
      • 504 Gateway Timeout:网关超时,后端接口执行太慢。

二、工作原理

1. 完整通信流程

HTTP 是应用层协议 ,基于 TCP 传输,采用客户端 - 服务端(C/S)模型、请求 - 应答模式、无状态通信。

(1) 依赖的底层协议------传输层TCP(HTTP/1.x 标配)

HTTP 本身不负责传输数据 ,只定义数据格式和交互规则,真正传输靠 TCP

  • TCP 是面向连接、可靠、字节流协议,传输前必须建立连接。
  • 默认端口:HTTP 80, HTTPS(HTTP+TLS 加密)443
  • 核心保障:丢包重传、顺序重组、拥塞控制,保证 HTTP 报文完整送达。

补充:HTTP/3 改用 QUIC(基于 UDP),牺牲部分传统可靠机制,换取低延迟、抗弱网。

(2) 核心特性:无状态
  • 定义:服务端不会记录客户端的上一次请求信息,每一次 HTTP 请求都是独立的。
  • 问题:无法识别同一用户(比如登录后刷新页面又要重登)。
  • 解决方案:CookieSessionToken、JWT 等会话技术。
(3) 完整通信流程

浏览器访问网页为例,完整链路从「输入网址」到「页面展示」全过程:

步骤 1:DNS 域名解析

浏览器输入域名(如 www.baidu.com),域名无法直接用于 TCP 连接,需要解析为IP 地址

  • ① 先查浏览器缓存 → 系统缓存 → 本地 hosts 文件
  • ② 未命中则向DNS 服务器发起查询
  • ③ 最终拿到目标服务器 IP
步骤 2:TCP 三次握手,建立连接

客户端(浏览器)和服务端通过 TCP 建立可靠连接(HTTP/1.1 默认长连接):

  • 三次握手目的:双方确认收发能力正常,建立通信通道。
  • 连接建立后,通道可复用(长连接),不用每次请求都重连。
步骤 3:客户端构造 & 发送 HTTP 请求报文

浏览器按照 HTTP 协议规则,组装请求报文,通过 TCP 通道发给服务端。

请求报文有四部分:

  • 请求行 :请求方法 + 资源路径 + 协议版本。如GET /index.html HTTP/1.1
  • 请求头(Request Headers) :客户端附加信息。如Host(目标域名)、User-Agent(浏览器 / 设备)、CookieContent-Type、缓存字段等。
  • 空行:分隔请求头与请求体(协议强制)
  • 请求体(Body):仅 POST/PUT/PATCH 等方法使用,存放提交的表单、JSON、文件等数据。
步骤 4:服务端接收 & 处理请求
  • Web 服务器(Nginx/Apache/Tomcat)监听 80/443 端口,接收报文。
  • 解析请求行、请求头、请求体,识别:请求方法、访问路径、客户端身份、参数。
  • 业务层处理:查询数据库、执行接口逻辑、读取静态文件等。
步骤 5:服务端构造 & 返回 HTTP 响应报文

处理完成后,服务端组装响应报文回传给客户端,结构同样分四部分:

  • 状态行 :协议版本 + 状态码 + 状态描述 示例:HTTP/1.1 200 OK
  • 响应头(Response Headers) :服务端附加信息。如:ServerSet-CookieCache-ControlContent-Type、跨域配置等
  • 空行:分隔响应头与响应体
  • 响应体(Body):核心数据,HTML、CSS、JS、JSON、图片、视频等资源
步骤 6:客户端解析响应,渲染页面
  • 浏览器解析状态码:判断请求是否成功、是否需要重定向。
  • 解析响应体:
    • 若是 HTML:逐行解析,再依次请求页面内引用的 CSS、JS、图片等静态资源(每个资源单独发起 HTTP 请求)。
    • 若是 JSON:交给前端 JS 逻辑处理。
  • 最终渲染出完整页面。
步骤 7:TCP 四次挥手,断开连接
  • 短连接(HTTP/1.0 默认):一次请求响应完成,立即四次挥手断开 TCP 连接。
  • 长连接(HTTP/1.1 默认):连接会保留一段时间,复用通道处理多个请求;空闲超时后,双方四次挥手断开连接。

2.长连接 & 短连接(HTTP 核心交互模式)

(1) 短连接(HTTP/1.0)
  • 规则:一次请求 → 一次响应 → 立即断开 TCP
  • 缺点:频繁建立 / 断开 TCP(三次握手 + 四次挥手),开销大,访问多资源时性能差。
(2) 长连接(HTTP/1.1 主流)
  • 标识:请求头 / 响应头携带 Connection: keep-alive
  • 规则:TCP 连接建立后,在超时时间内可连续传输多个 HTTP 请求 / 响应,不用重复建连。
  • 超时机制:服务端默认设置空闲超时(一般几秒~几十秒),无新请求则自动断开。
  • 优势:大幅减少 TCP 握手开销,提升访问速度。
(3) 管线化(HTTP/1.1 附加能力)

长连接下,客户端可连续发送多个请求 ,不用等上一个响应返回;但服务端必须按请求顺序返回响应,存在队头阻塞问题。

3. HTTPS 工作原理(HTTP + 安全层)

HTTP 明文传输,数据易被窃听、篡改、劫持,HTTPS 在 HTTP 和 TCP 之间增加 TLS/SSL 加密层

  • 端口:443
  • 核心流程:
    • ①TCP 三次握手建立连接。
    • TLS 握手:协商加密算法、交换公钥、验证证书合法性(防伪造)。
    • ③双方使用对称加密传输 HTTP 报文(加密后密文,无法窃听篡改)。
    • ④通信结束,断开 TLS + TCP 连接。
  • 特点:安全,但比纯 HTTP 多一次 TLS 握手,略微增加延迟

4. 主流版本核心差异(原理层面)

HTTP/1.0:

  • 默认短连接,无统一缓存规范,不支持 Host 头。
  • 一个 TCP 连接只处理一个请求。

HTTP/1.1(目前最广泛):

  • 默认长连接,完善缓存机制、状态码、请求头。
  • 支持管线化,但存在队头阻塞(一个请求慢,后面全部阻塞)。

HTTP/2:

  • 改用二进制帧传输(替代文本格式),解析更快。
  • 多路复用:一个 TCP 连接并行处理多个请求,彻底解决队头阻塞。
  • 头部压缩、服务器主动推送资源。

HTTP/3:

  • 底层抛弃 TCP,使用 QUIC 协议(UDP)
  • 0-RTT 握手、连接迁移、彻底解决 TCP 层队头阻塞,弱网 / 移动网络体验最优。

5. 无状态的落地实现

前面提到 HTTP 无状态,行业主流解决方案:

  • Cookie :存储在客户端浏览器 ,由服务端通过 Set-Cookie 下发,每次请求自动携带。
  • Session :数据存在服务端,客户端只存一个 SessionID(一般放在 Cookie 里)。
  • Token/JWT:令牌串,客户端存储,请求头手动携带,适合前后端分离、跨端、分布式服务
相关推荐
中云DDoS CC防护蔡蔡6 小时前
游戏杀手- ACCN
运维·服务器·经验分享·网络安全·ddos
见青..1 天前
文件上传漏洞之原理、探测、利用、绕过、防御
web安全·网络安全·漏洞·文件上传
hzhsec1 天前
启明星辰(安全服务实习生)面试题
网络安全·面试
持敬chijing1 天前
Web渗透之前后端漏洞-CORS跨越访问漏洞
安全·web安全·网络安全·网络攻击模型·安全威胁分析
HackTwoHub1 天前
免费FOFA高级会员、DayDaymap、360Quake、Hunter测绘搜索引擎高级会员免费使用最大1W条查询工具
运维·安全·web安全·搜索引擎·网络安全·系统安全·安全架构
学逆向的2 天前
C++纯虚函数
开发语言·c++·网络安全
买大橘子也用券2 天前
玄机-应急响应靶场-第一章wp汇总
网络安全·应急响应
其实防守也摸鱼2 天前
软件安全与漏洞--软件安全编码与防御技术理论题库
开发语言·网络·安全·网络安全·软件安全·软件安全与漏洞
夏天测2 天前
微信小程序自动化漏洞挖掘流水线:从缓存提取到密钥验证全流程实战
python·网络安全·微信小程序·漏洞挖掘