大型网站的HTTPS实践之HTTPS对性能的影响(1)


1 前言

HTTPS在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS也会降低用户访问速度,增加网站服务器的计算资源消耗。

本文主要介绍https对用户体验的影响。

本文最早发表于百度运维部官方博客

2 HTTPS对访问速度的影响

在介绍速度优化策略之前,先来看下HTTPS对速度有什么影响。影响主要来自两方面:

1. 协议交互所增加的网络RTT(round trip time)。

2. 加解密相关的计算耗时。

下面分别介绍一下。

2.1 网络耗时增加

由于 HTTP和HTTPS都需要DNS解析,并且大部分情况下使用了DNS缓存,为了突出对比效果,忽略主域名的DNS解析时间。

用户使用HTTP协议访问http://www.baidu.com(或者www.baidu.com)时会有如下网络上的交互耗时:

图1 HTTP首个请求的网络耗时

可见,用户只需要完成TCP三次握手建立TCP连接就能够直接发送HTTP请求获取应用层数据,此外在整个访问过程中也没有需要消耗计算资源的地方。

接下来看HTTPS的访问过程,相比HTTP要复杂很多,在部分场景下,使用HTTPS访问有可能增加7个RTT。如下图:

图 2 HTTPS首次请求对访问速度的影响

HTTPS首次请求需要的网络耗时解释如下:

1. 三次握手建立TCP连接。耗时一个RTT。

2. 使用HTTP发起GET请求,服务端返回302跳转到https://www.baidu.com。需要一个RTT以及302跳转延时。

a) 大部分情况下用户不会手动输入https://www.baidu.com来访问HTTPS,服务端只能返回302强制浏览器跳转到https。

b) 浏览器处理302跳转也需要耗时。

3. 三次握手重新建立TCP连接。耗时一个RTT。

a) 302跳转到HTTPS服务器之后,由于端口和服务器不同,需要重新完成三次握手,建立TCP连接。

4. TLS完全握手阶段一。耗时至少一个RTT。

a) 这个阶段主要是完成加密套件的协商和证书的身份认证。

b) 服务端和浏览器会协商出相同的密钥交换算法、对称加密算法、内容一致性校验算法、证书签名算法、椭圆曲线(非ECC算法不需要)等。

c) 浏览器获取到证书后需要校验证书的有效性,比如是否过期,是否撤销。




相关内容