当前位置: 首页 > news >正文

【学习笔记】HTTP

文章目录

    • 一、早期发展
    • 二、HTTP/2
    • 三、HTTP/3与QUIC
    • 四、HTTP核心原理
    • 五、实际实现
    • 六、与TCP和UDP的关系

一、早期发展

        HTTP(HyperText Transfer Protocol) 是万维网(WWW)的基础通信协议,最早诞生于1990年代初,用于在网络客户端和服务端之间传输超文本信息。

         HTTP/0.9 (1991): 只支持GET方法,响应体仅能传出纯文本,无响应头,满足了最早期超文本浏览的需求。

         HTTP/1.0 (1996): 引入 请求/响应报文格式 ,支持多种请求方法(如POSTHEAD),并借鉴 MIME 设计了消息头(Content-TypeContent-Length等)。这个版本奠定了现代HTTP的基本架构,但每次请求都要建立新的TCP连接,效率较低。

         HTTP/1.1 (1999): HTTP/1.1 通过 持久连接管道化 和更多的状态码提升了性能,同时完善了缓存控制、内容协商和分块传输。

二、HTTP/2

         HTTP/2在2015年被采纳,核心特性如下:

  • 二进制分帧: 将报文拆分为帧,以二进制形式传输,减少解析开销。
  • 单连接多路复用: 多个请求/响应流可以复用同一个TCP连接,消除队头阻塞。
  • 头部压缩: 对重复出现的请求/响应头部进行压缩,降低带宽占用。

由于以上特性,HTTP/2在移动网络等高延迟场景中优势明显。

三、HTTP/3与QUIC

HTTP/3引入了基于QUIC(UDP+TLS)的传输层:

  • 0-RTT 握手: 利用 QUIC 的 0-RTT 特性,实现更快的连接建立。

  • 内置加密: QUIC 本身集成 TLS 1.3,实现一次握手同时完成加密协商。

  • 连接迁移: 支持客户端 IP 切换(如从 Wi-Fi 切到蜂窝网络)时保留连接状态,提高移动场景稳定性。

四、HTTP核心原理

  • 无状态(Stateless): 每个请求独立处理,服务器不保留客户端状态;需要状态管理时,借助 Cookie、Session、Token 等机制实现会话保持。

  • 请求-响应模型: 客户端发送请求报文(包含请求行、头部、可选请求体),服务器返回响应报文(包含状态行、头部、响应体)。

  • 可扩展性: 通过自定义头部、方法和状态码,以及多版本并行共存,HTTP 实现了高度可扩展的设计。

  • 缓存与路由: Cache-Control、ETag、Last-Modified 等头部配合 CDN、反向代理,优化资源复用与网络负载。

五、实际实现

        当下,HTTP/HTTPS 协议由 浏览器(Chrome、Firefox 等) 与 服务器(Nginx、Apache、LiteSpeed、Node.js) 联合实现:

  1. TLS 加密

    • 现代网站几乎全部启用 HTTPS,在 HTTP 之上引入 TLS(通常为 TLS 1.2/1.3)保障传输安全。
    • TLS 1.3 简化握手、剔除弱加密套件,减少时延并提升安全性。
  2. 多路复用

    • 浏览器根据支持情况自动切换 HTTP/2 或 HTTP/3,底层由 QUIC 或 TCP 复用连接。
    • 服务器端配置 ALPN(Application-Layer Protocol Negotiation)来协商使用何种 HTTP 版本。
  3. 中间件与微服务

    • API 网关(如 Kong、Envoy)分发流量、做负载均衡;
    • gRPC 使用 HTTP/2 提供高效双向流与 Protocol Buffers 序列化;
    • GraphQL 在 HTTP/HTTPS 之上仅用一个端点,为客户端定制数据请求。

六、与TCP和UDP的关系

协议所在层级主要特性典型用途
HTTP应用层请求/响应、无状态网页浏览、RESTful API、微服务调用
TCP传输层面向连接、可靠、有序HTTP/1.x、FTP、SMTP
UDP传输层无连接、不可靠、无序DNS 查询、实时音视频、游戏数据包。通过QUIC与HTTP/3产生联系

相关文章:

  • AI【应用 01】Trae Agent Gitee自动化辅助神器(使用 MCP tools 创建自定义 Trae Agent 的探索分享)
  • Web 架构之服务网格(Service Mesh)实战解析
  • OpenGL ES绘制3D图形以及设置视口
  • 【第一章:人工智能基础】03.算法分析与设计-(1)算法复杂度分析
  • 记一次Android的逆向
  • 【多智能体】基于嵌套进化算法的多代理工作流
  • Android多媒体——同步Video显示时间(二十二)
  • 【android bluetooth 框架分析 04】【bt-framework 层详解 4】【AdapterState介绍】
  • git撤回commit
  • 流批一体向量化引擎Flex
  • 前端面试六之axios
  • 黑马教程强化day2-2
  • markdown文本转换时序图
  • 深入理解 TCP 套接字:Socket 编程入门教程
  • 数组方法_push()/pop()/数组方法_shift()/unshift()
  • 滚动—横向滚动时,如何直接滚动到对应的内容板块
  • `document.domain` API 的废弃与现代 Web 开发的转型
  • 从 8 秒到 1 秒:前端性能优化的 12 个关键操作
  • Maven 构建性能优化深度剖析:原理、策略与实践
  • CKA考试知识点分享(10)---NetworkPolicy
  • 建建建设网站/搜索引擎营销的优势和劣势
  • 哪个网站看电视剧最全还免费/慈溪seo排名
  • 百度推广和哪些网站有合作/怎么做网站广告
  • 网站做的好的公司/推广普通话文字素材
  • 建设党务网站意义/crm管理系统
  • wordpress 首页分栏/信息流优化师简历怎么写