HTTP与HTTPS协议入门

简介: HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。

本文翻译自我的英文博客,最新修订内容可随时参考:HTTP与HTTPS协议入门

HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。

HTTP/0.9(1991年)

  • 单一功能:仅支持GET方法,建立TCP连接后,客户端发送GET请求,服务器返回HTML资源后立即关闭连接。
  • 局限性:不支持其他方法(如POST)、无请求头/响应头,仅能传输纯文本HTML。

HTTP/1.0(1996年)

核心改进

  • 协议标准化:引入请求头和响应头,定义了通信格式。
  • 方法扩展:新增POST(提交数据)、HEAD(获取头部信息)等方法。
  • 状态码体系:引入1xx(信息性)、2xx(成功)、3xx(重定向)、4xx(客户端错误)、5xx(服务器错误)等状态码。
  • 头部字段:支持Content-Type(指定内容类型)、Content-Encoding(压缩格式)、Cache-Control(缓存控制)等字段。

缺陷

  • 非持久连接:每个TCP连接仅能处理一次请求,多次请求需反复建立连接,效率低下。

HTTP/1.1(1997年)

关键特性

  1. 持久连接(Persistent Connection)

    • 允许同一TCP连接处理多个请求,默认不关闭连接(可通过Connection: close主动关闭)。
    • 单域名最多建立6个连接,空闲超时后自动断开。
  2. 管道化(Pipelining)

    • 客户端可在等待前一个响应时发送多个请求(串行队列),通过Content-Length标识请求体长度。
    • 服务器需按请求顺序响应,引入Transfer-Encoding: chunked分块传输,支持流式响应。
      管道化机制
  3. 多域名支持与方法扩展

    • Host头部区分同一IP上的不同域名(如虚拟主机)。
    • 新增PUT(上传资源)、DELETE(删除资源)、OPTIONS(查询支持的方法)等方法。

缺陷:队头阻塞(Head-of-Line Blocking)

  • 同一连接中,前一个请求未响应会阻塞后续请求,即使响应数据已就绪也无法提前处理。
    队头阻塞示意图

HTTP/2(2015年)

二进制协议与帧结构

  • 采用二进制格式传输数据,将数据分割为帧(Frame),如请求帧、响应帧、重置帧等。
  • 每个帧包含流标识符(Stream ID),客户端流ID为奇数,服务器流ID为偶数,支持多路复用(同一连接并发处理多个请求)。

核心特性

  1. 多路复用(Multiplexing)

    • 客户端可在同一TCP连接中同时发送多个请求,服务器可乱序响应,彻底解决队头阻塞。
  2. 头部压缩(HPACK算法)

    • 通过建立头部表(Header Table)缓存重复字段,后续请求只需发送索引值,减少头部传输开销。
  3. 服务器推送(Server Push)

    • 服务器可主动推送客户端可能需要的资源(如CSS、JS),提前缓存至客户端。
      服务器推送机制
  4. 服务器发送事件(SSE)

    • 支持服务器主动向客户端推送数据(如实时通知),基于单向长连接,无需客户端频繁请求。

缺陷

  • TCP层队头阻塞:若TCP数据包丢失,整个连接的所有流均需等待重传,影响并发性能。
    TCP队头阻塞
  • 服务器推送局限性:无法直接推送动态消息,需结合SSE实现实时通信。

HTTP/3(2021年)

基于UDP的QUIC协议

  • 放弃TCP,改用UDP(用户数据报协议),通过QUIC(快速UDP互联网连接)实现可靠性:
    • 多路复用:每个流独立传输,单个流丢包不影响其他流。
    • 连接迁移:使用连接ID标识会话,IP或端口变更时无需重新握手。
      QUIC握手流程

优势

  • 减少TCP三次握手和TLS握手延迟,首次连接耗时更低。
  • 避免TCP层队头阻塞,提升弱网络(如移动网络)下的性能。

HTTPS:安全的HTTP

HTTPS通过SSL/TLS协议解决HTTP的三大风险(窃听、篡改、伪装),核心流程如下:

TLS握手过程(明文传输)

  1. 客户端请求(ClientHello)

    • 发送支持的协议版本(如TLS 1.3)、随机数(Client Random)、加密算法列表等。
  2. 服务器响应(ServerHello)

    • 确认协议版本、加密算法,返回服务器证书(含公钥)及随机数(Server Random)。
    • 若需要客户端认证(如银行系统),会要求提供客户端证书。
  3. 客户端验证与密钥生成

    • 验证服务器证书有效性(CA签名、域名匹配、有效期)。
    • 生成预主密钥(Pre-master Secret),用服务器公钥加密后发送。
    • 结合三个随机数(Client Random、Server Random、Pre-master Secret)生成会话密钥(Session Key),用于后续对称加密。
  4. 服务器解密与会话建立

    • 用私钥解密预主密钥,生成会话密钥。
    • 双方切换至加密通信,后续数据通过对称加密传输。
      TLS握手全流程

性能优化

  • 会话复用

    • Session ID:服务器内存中存储会话密钥,客户端重连时携带ID恢复会话(需单服务器部署)。
    • Session Ticket:服务器颁发加密票据,客户端重连时直接解密恢复密钥(支持分布式部署)。
      会话复用机制
  • 无密钥加密(Keyless SSL)

    • 服务器私钥仅用于解密预主密钥,其他流程由CDN等中间层处理,减少私钥暴露风险。
      无密钥加密流程

SSL与TLS的区别

  • SSL(安全套接层):早期协议,因存在安全漏洞已被弃用(如SSL 3.0的POODLE攻击)。
  • TLS(传输层安全):SSL的继任者,当前主流版本为TLS 1.3,提供更强的加密算法和安全性。
  • 术语混淆:习惯上仍称TLS证书为“SSL证书”,但实际应用中仅使用TLS协议。

总结:协议演进对比

版本 传输层协议 多路复用 头部压缩 连接特性 典型应用场景
HTTP/0.9 TCP 不支持 单请求短连接 早期静态网页
HTTP/1.1 TCP 有限支持 持久连接+管道化 传统Web站点
HTTP/2 TCP 支持 支持 二进制帧+服务器推送 现代Web应用(如SPA)
HTTP/3 UDP+QUIC 支持 支持 抗丢包+连接迁移 移动网络、实时通信应用

如需深入调试HTTPS配置或优化网站性能,可参考博客中的完整示例:HTTP与HTTPS协议入门

目录
相关文章
|
1月前
|
XML JSON API
识别这些API接口定义(http,https,api,RPC,webservice,Restful api ,OpenAPI)
本内容介绍了API相关的术语分类,包括传输协议(HTTP/HTTPS)、接口风格(RESTful、WebService、RPC)及开放程度(API、OpenAPI),帮助理解各类API的特点与应用场景。
|
2月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
428 68
|
30天前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
313 2
|
2月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
233 1
|
1月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
335 0
|
2月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
282 0
|
3月前
|
安全 网络安全 数据安全/隐私保护
网页安全演进:HTTP、HTTPS与HSTS
这整个进程实质上是网页安全由“裸奔”到“穿衣”再到“绑带”的演变史。它保障了数据的机密性和完整性,降低了中间人攻击的风险,最终实现了更自由、更安全的网络环境。但别忘了,技术永远在发展,网络安全的赛跑也永无终点。*ENDPOINT*
253 11
|
3月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
126 17
|
2月前
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
271 0

热门文章

最新文章