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.91991年仅支持get请求;
无状态;
无 http 头部;
仅能传输纯文本数据;
-
http/1.01996年引入http头部,用于描述客户端和服务器之前的元数据;
支持多种请求方式,如get、post、head;
引入状态码,用于表示请求的结果;
支持内容类型
context-type和内容长度context-length; -
http/1.11997年持久连接 (Keep-Alive) :默认使用持久连接,允许在一个TCP连接上发送多个请求和响应,减少连接的建立和关闭开销;
~~管道化 (Pipelining) :允许在一个连接中发送多个请求而无需等待响应,进一步提高了性能,后续被~~
http/2多路复用替代;额外的请求方式:增加put、delete、options等;
缓存控制 (cache-control) :支持更细粒度的缓存控制;
支持分块传输 (Chunked transfer encoding) :允许在响应数据量未知时分块传输数据;
-
http/22015年二进制协议:对比
1.1的文本协议,http/2使用二进制格式进行数据传输,减少解析开销;多路复用(Multiplexing) :允许在单个连接上并发发送多个请求和响应,解决了 http/1.1 中队头阻塞问题;
头部压缩(Header Compressiong) :使用
hpack算法对头部进行压缩,减少了头部大小;服务器推送(Server Push) :允许服务器在客户端请求之前主动推送资源,减少延迟;
流依赖和优先级 (Stream Priority) :允许客户端指定请求的优先级,提高资源利用率;
-
http/32018年基于QUIC:http/3 不再使用
TCP,而是基于QUIC协议,提供更快的连接建立和恢复机制;内置加密:
QUIC协议默认启动了TLS加密,提高了安全性;减少连接建立延迟:由于
QUIC在UDP之上运行,并结合了TLS捂手过程,减少了连接建立的往返时间;
SSL/TLS 历史
-
SSL最初由Netscape公司在1990年开发ssl 1.0:从未发布,因为存在安全问题;ssl 2.0:1995年发布,随后发现存在多个安全漏洞;ssl 3.0:1996年发布,对SSL 2.0进行了改进,但仍存在一些安全问题; -
TLS有IETF在1999年接管和标准化。TLS是SSL 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加密层,以保证数据传输的机密性、完整性和身份验证。
HTTP 和 HTTPS 区别
| 类型 | 端口 | 传输 | 网络层 | 连接方式 |
|---|---|---|---|---|
| http | 80 | 二进制明文 | TCP | TCP层3次握手 |
| https2 | 443 | 密文 | TCP | TCP3次握手 + TLS4次握手 |
| http3 | 443 | 密文 | UDP | UDP层,所以没有TCP3次握手,只有TLS4次握手 |