HTTP及HTTPS简介

背景

HTTP历史以及HTTPS的升级过程

前言

先复习下OSI(Open System Interconnect) 参考模型 和 TCP/IP 五层数据模型

在这里插入图片描述
在这里插入图片描述

我们今天的主角HTTPHTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

起源

HTTP从1991年的HTTP/0.9协议开始,在1994年发布了draft-fielding-http-spec-00,这个ID很快被IETF采用,改名为draft-ietf-http-v10-spec-00。这个ID在1996年成为RFC 1945(HTTP/1.0)之前经历了6个草案版本。

在这里插入图片描述

HTTP0.9版本

该版本很简单,只有一个GET命令,协议规定,服务器只能回应HTML格式的字符串,不能回应别的格式。

GET /index.html

Hello World

HTTP1.0

1996年5月,HTTP/1.0 版本发布内容大大增加

a. 首先任何格式的内容都可以发送 (二进制,图像等)

b. 除了GET命令,引入了POST和HEAD命令

c. HTTP请求和响应有了更改,每次请求必须带请求头HEAD

请求格式

GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: /

HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84

Hello World

HTTP1.1

1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。

变化

  1. 持久连接

  2. 管道机制

  3. Content-Length字段

  4. 分块传输编码

  5. 增加了PUT,PATCH,OPTION,DELETE等请求方法,增加了HOST字段指定服务器的host

HTTP/2

HTTP2 的基础是SPDY协议, 由谷歌在2009年研发解决http1.1传输效率不高的问题

2015年,HTTP/2发布,下一代是HTTP3

变化

  1. 二进制协议,消息头和消息提都是二进制

  2. 多工

  3. 数据流

  4. 头部压缩

  5. 服务器推送

HTTP/3

https://datatracker.ietf.org/doc/draft-ietf-quic-http/34/ 目前没有正式发布,还在评审改进中

SDPY协议是谷歌推出的,但是他们还觉得不够快,推出了QUIC协议,HTTP3的主要改变点是在传输层,之前的协议传输层协议都还是用的TCP协议,

HTTP3采用UDP传输协议

TCP和UDP的区别在于客户端需要经历三次握手才能和服务端建立连接,UDP更快,但是不具备可靠性和恢复错误的能力,稳定性和丢包的可能

image.png

简而言之,HTTP3就是在HTTP2的基础上,进行了升级

image.png

HTTPS
在这里插入图片描述

https=http+SSL/TLS

SSL和TLS的关系

SSL(Secure Socket Layer) 安全套接字,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层

TLS (Transport Layer Security) 传输层安全,用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版。

目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。

TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。

讲了这么多,为什么要升级HTTPS?

不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。

(1) 窃听风险(eavesdropping):第三方可以获知通信内容。
(2) 篡改风险(tampering):第三方可以修改通信内容。
(3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。

用HTTPS的好处

(1) 所有信息都是加密传播,第三方无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。

SSL握手过程

image.png

握手只会生成一个session key,可能中断,需要恢复

这时有两种方法可以恢复原来的session:一种叫做session ID,另一种叫做session ticket。

Session ID

在这里插入图片描述

只要客户端保留有session key,那么用Session ID告诉服务器,找到session key,两者就可以继续通信

Session Ticket

Session ID的缺点就是只有一台服务器保存了Session ID,当客户端发送到其他服务器的时候,就不能够使用了

在这里插入图片描述

附录

http://www.ruanyifeng.com/blog/2016/08/http.html
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
https://netsecurity.51cto.com/art/202005/616624.htm
https://www.w3.org/Protocols/History.html
https://blog.cloudflare.com/http-3-from-root-to-tip/
https://blog.cloudflare.com/announcing-keyless-ssl-all-the-benefits-of-cloudflare-without-having-to-turn-over-your-private-ssl-keys/
https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/

猜你喜欢

转载自blog.csdn.net/hugenshen/article/details/123190255
今日推荐