HTTP与HTTPS对访问速度,性能等的影响

  

<强> 1前言

  

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

  

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

  

<强> 2 HTTP与HTTPS的概念和区别

  

(1) HTTPS(全称:超文本传输协议在安全套接字层),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI方案(抽象标识符体系),句法类同HTTP:体系。用于安全的HTTP数据传输.北京:URL表明它使用了HTTP, HTTPS存但在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

  

(2)超文本传输协议(HTTP-Hypertext传输协议)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

  

(3) https协议需要到ca申请证书,一般免费证书很少,需要交费。

  

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议

  

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80年后者是443 .

  

http的连接很简单,是无状态的,HTTPS协议是由SSL + http协议构建的可进行加密传输,身份认证的网络协议,要比http协议安全

  

<强> 3 HTTPS对访问速度的影响

  

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

  

协议交互所增加的网络RTT(往返时间)。
  加解密相关的计算耗时。
  下面分别介绍一下。

  

3.1网络耗时增加

  

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

  

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

  

 HTTP与HTTPS对访问速度,性能等的影响

  

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

  

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

  

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

  

 HTTP与HTTPS对访问速度,性能等的影响

  

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

  

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

  

1,三次握手建立TCP连接。耗时一个RTT。
  2、使用HTTP发起得到请求,服务端返回302跳转到https://www.baidu.com。需要一个RTT以及302跳转延时。
  一)大部分情况下用户不会手动输入https://www.baidu.com来访问HTTPS,服务端只能返回302强制浏览器跳转到HTTPS。
  b)浏览器处理302跳转也需要耗时。
  3、三次握手重新建立TCP连接。耗时一个RTT。
  302)跳转到HTTPS服务器之后,由于端口和服务器不同,需要重新完成三次握的手,建立TCP连接。
  4,TLS完全握手阶段一。耗时至少一个RTT。
  一)这个阶段主要是完成加密套件的协商和证书的身份认证。
  b)服务端和浏览器会协商出相同的密钥交换算法,对称加密算法,内容一致性校验算法,证书签名算法,椭圆曲线(非ECC算法不需要)等。
  c)浏览器获取到证书后需要校验证书的有效性,比如是否过期,是否撤销。
  5、解析CA站点的DNS。耗时一个RTT。
  一)浏览器获取到证书后,有可能需要发起OCSP或者CRL请求,查询证书状态。
  b)浏览器首先获取证书里的CA域名。
  c)如果没有命中缓存,浏览器需要解析CA域名的DNS。
  6,三次握手建立CA站点的TCP连接。耗时一个RTT。
  一)DNS解析到IP后,需要完成三次握手建立TCP连接。
  7日,发起OCSP请求,获取响应。耗时一个RTT。
  8日,完全握手阶段二、耗时一个RTT及计算时间。
  一)完全握手阶段二主要是密钥协商。
  9日,完全握手结束后,浏览器和服务器之间进行应用层(也就是HTTP)数据传输。

HTTP与HTTPS对访问速度,性能等的影响