目录

    • 一、HTTP 的基本概念与历史演进
      • 1. 核心定义
      • 2. 历史版本演进
    • 二、HTTP 的核心工作原理
      • 1. 请求-响应模型
      • 2. 基于 TCP 的传输(HTTP/1.1、HTTP/2)
    • 三、HTTP 请求结构
      • 1. 请求行
      • 2. 请求头
      • 3. 请求体
    • 四、HTTP 响应结构
      • 1. 状态行
      • 2. 响应头
      • 3. 响应体
    • 五、HTTP 与 HTTPS 的区别
    • 六、HTTP/2 与 HTTP/3 的核心改进
      • 1. HTTP/2 关键特性
      • 2. HTTP/3 关键特性
    • 七、HTTP 的实际应用场景
    • 八、常见问题与优化

HTTP(Hypertext Transfer Protocol,超文本传输协议)是互联网中最基础的通信协议之一,用于规范客户端(如浏览器、移动应用)与服务器之间的数据传输。它是构建万维网(WWW)的核心技术,支撑着网页浏览、API调用、文件传输等几乎所有网络交互场景。

一、HTTP 的基本概念与历史演进

1. 核心定义

HTTP 是一种无状态的应用层协议,基于请求-响应模式工作:客户端发送请求,服务器接收后处理并返回响应。其设计初衷是传输超文本(如 HTML 文档),但随着互联网发展,已扩展到传输图片、视频、JSON 等各类数据。

2. 历史版本演进

版本发布时间核心特性应用场景
HTTP/0.91991 年仅支持 GET 方法,无状态行和头部,仅传输 HTML 文本早期简单网页
HTTP/1.01996 年引入请求头/响应头,支持多种方法(POST、HEAD 等)和数据类型(图片、音频等)静态网页为主的互联网
HTTP/1.11999 年支持持久连接(Keep-Alive)、管道化、Chunked 传输、Host 头主流互联网协议(2000-2020)
HTTP/22015 年二进制帧、多路复用、头部压缩、服务器推送高性能网站(如 Google、Netflix)
HTTP/32022 年基于 QUIC 协议(UDP 替代 TCP),解决队头阻塞,更快连接建立低延迟场景(直播、游戏)

二、HTTP 的核心工作原理

1. 请求-响应模型

  • 客户端请求:用户通过浏览器/应用发起请求,包含目标 URL、方法、头部和数据。
  • 服务器处理:服务器解析请求,执行逻辑(如查询数据库、生成页面)。
  • 服务器响应:返回状态码、响应头和数据(如 HTML、JSON)。
  • 无状态特性:每次请求独立,服务器不保存客户端历史状态(需通过 Cookie、Session 实现状态跟踪)。

2. 基于 TCP 的传输(HTTP/1.1、HTTP/2)

  • HTTP 依赖 TCP 提供可靠传输,建立连接需经过“三次握手”,断开需“四次挥手”。
  • 持久连接(Keep-Alive):HTTP/1.1 默认开启,避免每次请求重复建立 TCP 连接,减少开销。
  • 队头阻塞问题:HTTP/1.1 中,同一连接上的请求需按顺序响应,前一个请求阻塞后一个请求。

三、HTTP 请求结构

一个完整的 HTTP 请求由请求行请求头请求体三个部分组成:

1. 请求行

格式:方法 URL 协议版本
示例:GET /index.html HTTP/1.1

  • 请求方法:表示对资源的操作,常见方法包括:
    • GET:获取资源(无请求体,参数在 URL 中)。
    • POST:提交数据(参数在请求体中,用于表单提交、API 新增)。
    • PUT:更新资源(全量更新)。
    • DELETE:删除资源。
    • HEAD:仅获取响应头(用于检查资源是否存在)。
    • OPTIONS:探测服务器支持的方法(跨域请求预检)。

2. 请求头

键值对格式,描述请求的元数据,示例:

Host: www.example.com  # 目标服务器域名
User-Agent: Mozilla/5.0 (Windows NT 10.0; ...)  # 客户端标识(浏览器/设备信息)
Accept: text/html,application/xhtml+xml  # 客户端可接受的数据类型
Cookie: sessionid=abc123; user=test  # 客户端存储的 Cookie
Content-Type: application/json  # 请求体数据类型(POST/PUT 时需指定)

3. 请求体

仅在 POST、PUT 等方法中存在,用于传递数据,示例:

  • 表单数据:username=test&password=123
  • JSON 数据:{"name": "test", "age": 20}

四、HTTP 响应结构

响应与请求对应,由状态行响应头空行响应体组成:

1. 状态行

格式:协议版本 状态码 状态描述
示例:HTTP/1.1 200 OK

  • 状态码:三位数数字,表示请求处理结果,分为 5 类:
    • 1xx(信息):请求已接收,继续处理(如 100 Continue)。
    • 2xx(成功):请求正常处理(如 200 OK、201 Created)。
    • 3xx(重定向):需进一步操作(如 301 永久重定向、302 临时重定向、304 缓存有效)。
    • 4xx(客户端错误):请求有误(如 400 无效请求、401 未授权、403 禁止访问、404 资源不存在)。
    • 5xx(服务器错误):服务器处理失败(如 500 内部错误、502 网关错误、503 服务不可用)。

2. 响应头

描述响应的元数据,示例:

Content-Type: text/html; charset=UTF-8  # 响应体数据类型和编码
Content-Length: 1234  # 响应体长度(字节)
Server: Nginx  # 服务器软件标识
Set-Cookie: sessionid=abc123; Path=/  # 服务器向客户端设置 Cookie
Cache-Control: max-age=3600  # 缓存控制(有效期 1 小时)

3. 响应体

服务器返回的实际数据,如 HTML 文档、JSON 字符串、图片二进制流等。

五、HTTP 与 HTTPS 的区别

特性HTTPHTTPS
安全性明文传输,易被窃听、篡改基于 TLS/SSL 加密传输,防窃听、防篡改、防冒充
端口默认 80 端口默认 443 端口
性能无加密开销,速度更快需握手时加密协商,性能略低(但 HTTP/2 可弥补)
证书无需证书需 CA 颁发的 SSL 证书(免费/付费)
适用场景非敏感数据(如静态博客)敏感数据(支付、登录、API)

六、HTTP/2 与 HTTP/3 的核心改进

1. HTTP/2 关键特性

  • 二进制帧:将请求/响应拆分为二进制帧(而非文本),提高解析效率。
  • 多路复用:同一 TCP 连接上并行传输多个请求/响应,解决队头阻塞。
  • 头部压缩(HPACK):对重复的请求头(如 Cookie、User-Agent)压缩,减少数据量。
  • 服务器推送:服务器可主动推送关联资源(如 HTML 引用的 CSS/JS),减少请求次数。

2. HTTP/3 关键特性

  • 基于 QUIC 协议:用 UDP 替代 TCP,避免 TCP 队头阻塞问题。
  • 0-RTT 连接建立:首次连接后,后续可快速复用加密信息,减少握手延迟。
  • 更好的丢包处理:单个流丢包不影响其他流,适合弱网环境。

七、HTTP 的实际应用场景

  • 网页浏览:浏览器通过 HTTP 请求 HTML、CSS、JS 等资源,渲染页面。
  • API 通信:移动应用/后端服务通过 HTTP 调用 API(如 RESTful API、GraphQL)。
  • 文件传输:通过 GET 下载文件,POST 上传文件(结合 multipart/form-data 格式)。
  • 实时通信:早期通过轮询/长轮询,现代可结合 WebSocket(基于 HTTP 握手升级)。

八、常见问题与优化

  • 缓存优化:通过 Cache-ControlETagLast-Modified 减少重复请求,提升加载速度。
  • 跨域资源共享(CORS):服务器通过 Access-Control-Allow-Origin 头允许跨域请求。
  • 性能优化:使用 HTTP/2 多路复用、CDN 加速、资源压缩(Gzip/Brotli)。
  • 安全性加固:升级 HTTPS、设置 Content-Security-Policy 防 XSS、X-Frame-Options 防点击劫持。

HTTP 协议持续演进,从早期的简单文本传输到如今的高性能加密传输,始终围绕“更快、更安全、更可靠”的目标发展。理解其核心原理和版本特性,对开发高性能、安全的网络应用至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93227.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93227.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93227.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正则化:从过拟合到泛化的「平衡艺术」

在机器学习领域,有一个几乎所有从业者都会遇到的「噩梦」:模型在训练集上表现完美(损失趋近于0),但在测试集上却大幅「翻车」。这种现象被称为「过拟合」(Overfitting),它像一把双刃…

[Python 基础课程]根据描述定义一个 Person 类

人都属于人类这个物种,每一个人都会有姓名和年龄,人都可以介绍自己,随着时间的流逝,人都会增加年龄,每一个人都能获取到自己的物种信息。 我们的抽象过程: 所有的 Person 对象都应该有一个共同的属性来表示…

热门手机机型重启速度对比

以下是2023-2024年市场主流热门手机机型的重启速度对比分析,基于公开测试数据和用户反馈整理(数据会因系统版本和测试环境不同存在波动):旗舰机型重启速度排名(冷启动)排名机型平均重启时间关键配置优化技术…

第454题.四数相加II

第454题.四数相加II 力扣题目链接(opens new window) 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤…

力扣top100(day04-05)--堆

本文为力扣TOP100刷题笔记 笔者根据数据结构理论加上最近刷题整理了一套 数据结构理论加常用方法以下为该文章: 力扣外传之数据结构(一篇文章搞定数据结构) 215. 数组中的第K个最大元素 class Solution {// 快速选择递归函数int quickselect(…

CCS双轴相位偏移光源 让浅凹痕无处遁形

在工业检测中,浅凹痕表面检测对精度和可靠性要求极高,工业光源在此过程中扮演着关键角色,工业光源通过精准的光学设计(角度、波长、强度)将肉眼不可见的浅凹痕转化为可量化的光学信号,是实现高精度自动化检…

专题三_二分_x 的平方根

一:题目解释:返回x的算数平方根,如果是小数,则舍去小数部分,返回整数即可!二:算法①:暴力从1开始求平方,最后要么直接找到一个值的平方为x,要么发现x在两个相…

Python 操作 Redis 的客户端库 redis-py

Python 操作 Redis 的客户端库 redis-py1. Installation2. Connect and test3. Connection Pools4. Redis Commands4.1. set(name, value, exNone, pxNone, nxFalse, xxFalse, keepttlFalse, getFalse, exatNone, pxatNone)4.1.1. setnx(name, value)4.1.2. setex(name, time, …

社区物业HCommunity本地部署手册

HC小区管理系统安装手动版 更多文章参考: http://www.homecommunity.cn/pages/hc/hcH5_cn.html 1.0 说明 很多开发不太喜欢用梓豪安装,希望通过手工自己安装,这个就需要开发人员 有一定的安装软件能力,比如能够自行安装mysql能…

单例模式-使用局部变量懒汉不用加锁

在 C11 及之后,“局部静态变量懒汉”(Meyers’ Singleton)不需要自己加锁,标准已经帮你做好了线程安全。 Singleton& getInstance() {static Singleton inst; // ← 这一句并发时只会初始化一次return inst; }首次调用时&am…

51单片机-GPIO介绍

本章概述思维导图:51单片机引脚介绍STC89系列51单片机引脚介绍STC89系列51单片机的引脚是单片机与外部电路连接的接口,用于实现电源供电、时钟信号输入、控制信号输出以及数据输入输出等功能。PDIP封装引脚图:1. 电源引脚:VCC&…

CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服务器遭DDoS攻击瘫痪

2025年8月15日CERT/CC(计算机应急响应协调中心)近日发布漏洞公告,警告多个HTTP/2实现中新发现的缺陷可能被威胁行为者用于发起高效拒绝服务(DoS)或分布式拒绝服务(DDoS)攻击。该漏洞被非正式命名…

[Chat-LangChain] 会话图(LangGraph) | 大语言模型(LLM)

第二章:会话图(LangGraph) 在第一章中,我们学习了前端用户界面——这是聊天机器人的"面孔",我们在这里输入问题并查看答案。 我们看到了消息如何从聊天窗口传递到聊天机器人的"大脑"。现在&…

Flask错误处理与会话技术详解

flask入门day03 错误处理 1.abort函数:放弃请求并返回错误代码 详细状态码 from flask import Flask,abort,render_template ​ app Flask(__name__) ​ app.route(/) def index():return 我是首页 ​ app.route(/error) def error():abort(404)return 没有找到…

java程序打包成exe,再打成安装包,没有jdk环境下可运行

一、前提条件准备:1、要被打包的程序文件:rest_assistant-1.0-SNAPSHOT.jarapplication.yml2、图标文件tubiao123.ico3、jre4、打包成exe的软件 config.exe4j5、打成安装包的软件 Inno Setup Compiler二、config.exe4j 的 exe打包配置步骤 按照以下图进行…

区块链技术原理(11)-以太坊交易

文章目录什么是交易?交易类型交易生命周期关键概念:Gas 与交易费用交易状态与失败原因总结什么是交易? “交易(Transaction)” 是从一个账户向另一个账户发送的经过数字签名的指令 。例如,如果 Bob 发送 A…

小兔鲜儿-小程序uni-app(二)

小兔鲜儿-小程序uni-app7.小兔鲜儿 - 用户模块会员中心页(我的)静态结构参考代码会员设置页分包预下载静态结构退出登录会员信息页静态结构获取会员信息渲染会员信息更新会员头像更新表单信息8.小兔鲜儿 - 地址模块准备工作静态结构地址管理页地址表单页动态设置标题新建地址页…

BLE 广播信道与数据信道:冲突避免、信道映射与自适应跳频实现

低功耗蓝牙(BLE)技术凭借低功耗、短距离、低成本的特性,已广泛应用于智能家居、可穿戴设备、工业物联网等领域。在 BLE 协议中,信道管理是保障通信可靠性的核心机制,其中广播信道与数据信道的设计、冲突避免策略、跳频技术更是面试中的高频考点。本文将从基础原理到实战真…

nodejs03-常用模块

nodejs 常用的核心模块 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境, 它允许 JavaScript 运行在服务器端。Node.js 拥有丰富的标准库,也就是核心模块, 这些模块提供了各种功能, 使得开发服务器端应用程序变得简单高…

多路混音声音播放芯片型号推荐

以下是唯创知音旗下主流的多路声音播放芯片深度解析,结合精准参数、丰富场景及技术特性,满足智能设备多样化音频需求:一、WTV380/890 系列:高集成多模态交互芯片核心参数通道能力:支持8 路独立语音输出,可同…