从明文到密文:HTTP与HTTPS的安全进化之旅

162 阅读3分钟
timeline
      title HTTP 进化史
      1990 : SSL/1.0
      1991 : http/0.9
           : GET<br>Text
      1995 : SSL/2.0
      1996 : http/1.0
           : Header<br>Method<br>Status
           : SSL/3.0
      1997 : http/1.1
           : Keep-Alive<br>Pipelining<br>Cache<br>Chunked<br>
      1999 : TLS/1.0
      2006 : TLS/1.1
      2008 : TLS/1.2
      2015 : http/2
           : Binary<br>Multiplexing<br>Header Compressiong<br>Server Push<br>Stream Priority
      2018 : http/3
          : QUIC<br>UDP
          : TLS/1.3
      

随着互联网的飞速发展,HTTP协议不断进化,从最初的简单数据传输,到如今保障网络安全的HTTPS协议,每一个版本的更新都承载着技术的进步和对安全的需求。本文将带你穿越时空,深入探讨HTTP和HTTPS的历史、技术细节以及它们对现代网络的影响。

HTTP 诞生与发展

  • http/0.9 1991年

    仅支持get请求

    无状态

    无 http 头部

    仅能传输纯文本数据;

  • http/1.0 1996年

    引入http头部,用于描述客户端和服务器之前的元数据;

    支持多种请求方式,如get、post、head;

    引入状态码,用于表示请求的结果;

    支持内容类型 context-type 和内容长度 context-length

  • http/1.1 1997年

    持久连接 (Keep-Alive) :默认使用持久连接,允许在一个TCP连接上发送多个请求和响应,减少连接的建立和关闭开销;

    ~~管道化 (Pipelining) :允许在一个连接中发送多个请求而无需等待响应,进一步提高了性能,后续被~~http/2 多路复用替代;

    额外的请求方式:增加put、delete、options等;

    缓存控制 (cache-control) :支持更细粒度的缓存控制;

    支持分块传输 (Chunked transfer encoding) :允许在响应数据量未知时分块传输数据;

  • http/2 2015年

    二进制协议:对比 1.1 的文本协议,http/2 使用二进制格式进行数据传输,减少解析开销;

    多路复用(Multiplexing) :允许在单个连接上并发发送多个请求和响应,解决了 http/1.1 中队头阻塞问题;

    头部压缩(Header Compressiong) :使用hpack算法对头部进行压缩,减少了头部大小;

    服务器推送(Server Push) :允许服务器在客户端请求之前主动推送资源,减少延迟;

    流依赖和优先级 (Stream Priority) :允许客户端指定请求的优先级,提高资源利用率;

  • http/3 2018年

    基于QUIC:http/3 不再使用 TCP,而是基于 QUIC 协议,提供更快的连接建立和恢复机制;

    内置加密QUIC协议默认启动了 TLS 加密,提高了安全性;

    减少连接建立延迟:由于QUICUDP之上运行,并结合了TLS捂手过程,减少了连接建立的往返时间;

SSL/TLS 历史

  • SSL最初由Netscape公司在1990年开发

    ssl 1.0:从未发布,因为存在安全问题;

    ssl 2.0:1995年发布,随后发现存在多个安全漏洞;

    ssl 3.0:1996年发布,对SSL 2.0进行了改进,但仍存在一些安全问题;

  • TLSIETF1999年接管和标准化。TLSSSL 3.0的升级版,旨在提高安全性和性能

    TLS 1.0: 1999年发布,基于 SSL 3.0

    TLS 1.1: 2006年发布,修复了一些1.0的漏洞;

    TLS 1.2: 2008年发布,引入了更强的加密算法和更灵活的哈希函数;

    TLS 1.3:2018年发布,大幅简化了捂手过程,提高了安全性和性能;

HTTPS

随着互联网的快速发展,安全性成为了一个越来越重要的问题。为了保证数据传输的安全性,HTTPS应运而生。HTTPS是在HTTP的基础上加入了SSL/TLS加密层,以保证数据传输的机密性、完整性和身份验证。

💡 HTTPS = HTTP + SSL/TLS

HTTP 和 HTTPS 区别

类型端口传输网络层连接方式
http80二进制明文TCPTCP层3次握手
https2443密文TCPTCP3次握手 + TLS4次握手
http3443密文UDPUDP层,所以没有TCP3次握手,只有TLS4次握手