〖HTTP 编年史〗不敢惹微软,SSL更名为TLS

600 阅读4分钟

HTTP

HTTP/1.1

1989年到1991年,Tim Berners-Lee,发明了万维网即 HTTP 0.9(非官方命名)面世。# The Original HTTP as defined in 1991,协议只规定了GET请求

1996年HTTP/1.0,正式发布 RFC 1945。在1992年,1.0的草案已经出来了,一直到最终修订版的4年期间,1.0已经被广泛使用了。(也是从1.0开始,HTTP与版本号之间有一条斜线了)。虽然官方发布1.0,但当时据统计,65%网站已经使用了http/1.1,即HTTP/1.1草案

1997年1月,HTTP/1.1早早地发布 RFC 2068,可能因为发布得太快,也可能是习惯了先用再发布,因此后续几次更新了1.1版本。

1999年,RFC 2616 覆盖了RFC 2068

2014年HTTP/1.1 RFC 7230 ~ 7235最终版确立,意味着着手HTTP/2.0计划了。

HTTP/1.0 RFC 1945 (1996年)

  1. GET => GET + POST + HEAD,客户端可以传输body数据了,PUT、DELETE、LINK、UNLINK出现在附录

  2. 状态码定义:1xx ~ 5xx

  3. 缓存请求头出现:Expires、If-Modified-Since、Last-Modified

  4. 认证请求头:Authorization、WWW-Authenticate

HTTP/1.1 RFC 2068 (1997年)

  1. 方法method:新增 PUT、DELETE、OPTIONS、TRACE。附录多一个PATCH

  2. 状态码更多,更具体

  3. 专门一节讲述缓存:13 Caching in HTTP。出现缓存相关请求头: Cache-Control、ETag、If-Match、If-None-Match、If-Unmodified-Since、Last-Modified

  4. 新增host请求头,对应多台服务器

  5. 默认长连接Connection:keep-alive

  6. 新增range请求头,支持断连续传

RFC 2616,对RFC2068进行更具体地描述,似乎并没有新增不同的内容。RFC 7230~7235同理。

HTTP/2.0

2012年,HTTP工作组(HTTPbis) 宣布需要开始着手新的 HTTP/2.0 协议,可能会考虑为 SPDY 的设计。

SPDY,google的非官方协议,2009年发布。特点是可以多路复用,大幅度提升资源传输速度。

2015年5月,HTTP/2.0发布 RFC 7540,所有支持SPDY的浏览器,很快就支持了HTTP/2.0(可以说SPDY是HTTP/2.0的过渡,也可以说SPDY推动了HTTP/2.0的进展)。

2015年9月,google宣布关闭SPDY支持计划

HTTP/2 RFC 7540(2015年)

  1. 新增二进制分帧:4. HTTP Frames 5. Streams and Multiplexing(流与多路复用) 6. Frame Definitions

  2. 4.3. Header Compression and DecompressionHPACK算法请求头压缩与解压

  3. 5.3. Stream Priority 流的优先级。服务器可以决定最优的相应顺序,而不是强排队。

  4. 新增方法:CONNECT(创建隧道)

  5. 8.2. Server Push 服务器推送。以减少请求。

  6. 支持TLS1.2加密9.2. Use of TLS Feature,但HTTPS已成为事实标准,h2c(非加密连接)不被支持。

争议:强制性加密机会性加密;多路复用带来的 队头堵塞 问题 。

HTTP/3.0

2020年发布第一份草案。将弃用TCP协议,改为使用基于UDP协议的QUIC协议,意图解决队头堵塞问题

HTTPS

对传输数据进行加密,防止窃听和中间人攻击,以维护企业支付或敏感信息安全。

SSL

ssl, Secure Sockets Layer,安全套接层,由网景公司设计。在1999年 RFC 2246 中命名为 TLS。

1994年,SSL1.0随网景公司的网页浏览器-网景导航者一同推出,但由于其安全性不足,并未公布。

1995年,SSL2.0向外发布,但很快也被发现许多缺陷,并未被大范围使用。

1996年,SSL3.0发布,与2011年存档在 RFC6101

SSL 按道理不应该改名,但介于 "were a face-saving gesture to Microsoft" 给微软面子,IETF不敢直接明面上发布网景的协议,所以换名为TLS。为了表示对原创技术的尊重,SSL一直被保留在技术称呼(SSL/TLS)中。

TLS

1999年,TLS1.0 RFC 2246 发布,基本上与SSL3.0无异。

2006年,TLS1.1 RFC 4346 发布。

2008年,TLS1.2 RFC 5246 发布。

2018年,TLS1.3 RFC 8446 发布。

功能

  1. 加密,防止偷看内容。

  2. 数据完整性,保证发什么接收什么。

  3. 确认身份,防止与中间人建立关系。

SSL/TLS握手

安全协议SSL/TLS 在http应用层之下,传输层之上。

image.png图片来源

参考

# 超文本传输协议 # Hypertext Transfer Protocol # The Original HTTP # 超文本传输安全协议 # HTTPS Hypertext Transfer Protocol Version 2 (HTTP/2) Hypertext Transfer Protocol -- HTTP/1.1 # HTTP/3 # 传输层安全性协议 # The TLS Protocol # The Transport Layer Security (TLS) Protocol