关闭

SSL延迟有多大?

430人阅读 评论(0) 收藏 举报
分类:

本文转载至:http://www.ruanyifeng.com/blog/2014/09/ssl-latency.html

作者: 阮一峰

日期: 2014年9月24日

据说,Netscape公司当年设计SSL协议的时候,有人提过,将互联网所有链接都变成HTTPs开头的加密链接。

这个建议没有得到采纳,原因之一是HTTPs链接比不加密的HTTP链接慢很多。(另一个原因好像是,HTTPs链接默认不能缓存。)

自从我知道这个掌故以后,脑袋中就有一个观念:HTTPs链接很慢。但是,它到底有多慢,我并没有一个精确的概念。直到今天我从一篇文章中,学到了测量HTTPs链接耗时的方法。

slow connection

首先我解释一下,为什么HTTPs链接比较慢。

HTTPs链接和HTTP链接都建立在TCP协议之上。HTTP链接比较单纯,使用三个握手数据包建立连接之后,就可以发送内容数据了。

tcp handshake

上图中,客户端首先发送SYN数据包,然后服务器发送SYN+ACK数据包,最后客户端发送ACK数据包,接下来就可以发送内容了。这三个数据包的发送过程,叫做TCP握手。

再来看HTTPs链接,它也采用TCP协议发送数据,所以它也需要上面的这三步握手过程。而且,在这三步结束以后,它还有一个SSL握手

总结一下,就是下面这两个式子。

HTTP耗时 = TCP握手

HTTPs耗时 = TCP握手 + SSL握手

所以,HTTPs肯定比HTTP耗时,这就叫SSL延迟。

命令行工具curl有一个w参数,可以用来测量TCP握手和SSL握手的具体耗时,以访问支付宝为例。



$ curl -w "TCP handshake: %{time_connect}, SSL handshake: %{time_appconnect}\n" -so /dev/null https://www.alipay.com

TCP handshake: 0.022, SSL handshake: 0.064

上面命令中的w参数表示指定输出格式,time_connect变量表示TCP握手的耗时,time_appconnect变量表示SSL握手的耗时(更多变量请查看文档实例),s参数和o参数用来关闭标准输出。

从运行结果可以看到,SSL握手的耗时(64毫秒)大概是TCP握手(22毫秒)的三倍。也就是说,在建立连接的阶段,HTTPs链接比HTTP链接要长3倍的时间,具体数字取决于CPU的快慢和网络状况。

所以,如果是对安全性要求不高的场合,为了提高网页性能,建议不要采用保密强度很高的数字证书。一般场合下,1024位的证书已经足够了,2048位和4096位的证书将进一步延长SSL握手的耗时。

(完)


0
0
查看评论

SSL延迟有多大

作者: 阮一峰 日期: 2014年9月24日 原文地址:http://www.ruanyifeng.com/blog/2014/09/ssl-latency.html 原文真实性本人没有验证,只是当做启发性的文章来看 据说,Netscape公司当年设计SSL协议的时候,有人提...
  • cbbbc
  • cbbbc
  • 2015-09-20 23:52
  • 260

SSL延迟有多大?

from: http://blog.jobbole.com/77624/
  • longxibendi
  • longxibendi
  • 2014-09-26 13:01
  • 954

图解SSL/TLS、SSL延迟有多大

图解SSL/TLS协议 - 阮一峰的网络日志 http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
  • phoenix2121
  • phoenix2121
  • 2014-09-25 13:48
  • 1407

P2P流媒体直播的低延时传输方法

看到网上一些吹牛P2P低延时的文章,觉得不是很靠谱,抽空调研了一下这个问题。 P2P低延时的几个方向:       方法一:通过直接采集并编码多媒体帧,将多媒体帧切分成1KB大小的数据颗粒, 采用push策略的进行小包传输,提高传输效率,减小传输延时;  ...
  • charleslei
  • charleslei
  • 2015-06-28 17:09
  • 2273

Redis 延迟产生的主要原因分析

题主写这篇文件主要是想让自己能够在遇到Redis延迟问题时能够有效的查找原因。这里所提到的延迟指的是客户端发送一个命令,到收到该命令回复的最大延迟时间。一般来说,Redis处理的时间是非常的低的,都是微秒级别,但是也存在一些情况会导致很高的延迟。低延迟使用Redis的几点Tips下面的内容对于低延迟...
  • jiangbo1017
  • jiangbo1017
  • 2016-05-23 18:06
  • 838

Windows和Linux的代码规模到底多大?

面试时问到面试者他们的项目规模多大,说有几百万行代码,吓我一跳。下来查了一下操作系统的代码规模,结果如下:Windows和Linux的代码规模到底多大?1)WindowsWindows系列操作系统为什么会获得成功?简单易用的操作?完善丰富的功能?亲和友好的界面?不同的人也许会有不同的看法,但无论如何...
  • stephenxu111
  • stephenxu111
  • 2008-05-15 19:18
  • 5168

夹角有多大

Problem Description 时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少。现在xhd知道的只有时间,请你帮他算出这个夹角。 注:夹角的范围[0,180],时针和分针的转动是连续而不是离散的。 ...
  • u013480370
  • u013480370
  • 2014-06-24 14:54
  • 313

IT 从业者的压力究竟有多大?

这周差点忘了套路你们,晚安,朋友们~
  • vM199zkg3Y7150u5
  • vM199zkg3Y7150u5
  • 2017-11-05 00:00
  • 264

oracle 10g 有多大

oracle 10g 有多大 5 我下的10g Oracle.10g.for win32.iso只有600多兆,不知是不是还缺什么东西,想装一个自己学习用,不知道5个G的硬盘够么? FLL0518 | 浏览 9943 次 |举报 我有更好的答...
  • evilcry2013
  • evilcry2013
  • 2018-01-22 16:07
  • 15

有赞延迟队列设计

有赞延迟队列设计 22 MARCH 2016 延迟队列,顾名思义它是一种带有延迟功能的消息队列。 那么,是在什么场景下我才需要这样的队列呢? 背景 我们先看看以下业务场景: 当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存?如何定期检查处于退款状态的订单是否已经退款成功?...
  • u013322876
  • u013322876
  • 2017-08-02 15:47
  • 217
    个人资料
    • 访问:2752501次
    • 积分:31135
    • 等级:
    • 排名:第184名
    • 原创:433篇
    • 转载:1011篇
    • 译文:147篇
    • 评论:102条
    技术链接
    最新评论