SSL延遲計算:為什麼HTTPs比HTTP要慢?
據說,Netscape公司當年設計SSL協議的時候,有人提過,將網際網路所有連結都變成HTTPs開頭的加密連結。
這個建議沒有得到採納,原因之一是HTTPs連結比不加密的HTTP連結慢很多。(另一個原因好像是,HTTPs連結預設不能快取。)
自從我知道這個掌故以後,腦袋中就有一個觀念:HTTPs連結很慢。但是,它到底有多慢,我並沒有一個精確的概念。直到今天我從一篇文章中,學到了測量HTTPs連結耗時的方法。
首先我解釋一下,為什麼HTTPs連結比較慢。
HTTPs連結和HTTP連結都建立在TCP協議之上。HTTP連結比較單純,使用三個握手資料包建立連線之後,就可以傳送內容資料了。
上圖中,客戶端首先傳送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.comTCP handshake: 0.022, SSL handshake: 0.064
上面命令中的w參數列示指定輸出格式,timeconnect變數表示TCP握手的耗時,timeappconnect變數表示SSL握手的耗時(更多變數請檢視文件和例項),s引數和o引數用來關閉標準輸出。
從執行結果可以看到,SSL握手的耗時(64毫秒)大概是TCP握手(22毫秒)的三倍。也就是說,在建立連線的階段,HTTPs連結比HTTP連結要長3倍的時間,具體數字取決於CPU的快慢。
所以,如果是對安全性要求不高的場合,為了提高網頁效能,建議不要採用保密強度很高的數字證書。一般場合下,1024位的證書已經足夠了,2048位和4096位的證書將進一步延長SSL握手的耗時。
相關文章
- HTTP與HTTPS:為什麼HTTPS比HTTP更安全?HTTP
- 為什麼 HTTPS 比 HTTP 更安全?HTTP
- 關於延遲塊清除的原理是什麼?為什麼要進行塊清除
- 什麼是高延遲檔案傳輸?為什麼要使用高延遲檔案傳輸
- 為什麼說HTTPS比HTTP安全? HTTPS是如何保證安全的?HTTP
- 簡單比較 http https http2,我們要如何把http升級為httpsHTTP
- 為什麼要申請SSL證書?
- springboot為什麼要用延遲匯入?Spring Boot
- SSL證書是什麼?HTTP和HTTPS的區別HTTP
- 什麼是SSL證書?網站為什麼要安裝SSL證書?網站
- SSL:http與httpsHTTP
- SSL證書有什麼作用?企業為什麼要安裝SSL證書?
- 為什麼要申請https證書HTTP
- 為什麼有了 HTTP 還要 RPCHTTPRPC
- 為什麼延遲是儲存中最重要的指標指標
- HTTPS計算機網路SSL加密HTTP計算機網路加密
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- HTTP 請求延遲解決方案HTTP
- 為什麼HTTP/3要基於UDP?可靠嗎?HTTPUDP
- 為什麼反射慢?反射
- HTTP速度慢是什麼原因?HTTP
- java FileI(O)nputStream為什麼比BufferedI(O)utputStream慢?Java
- 什麼是HTTP? HTTP 和 HTTPS 的區別?HTTP
- HTTPS的SSL協議速度慢嗎❓HTTP協議
- 為什麼我要遷移 SpringBoot 到函式計算Spring Boot函式
- 為什麼我要遷移SpringBoot到函式計算Spring Boot函式
- 有的代理伺服器速度比較慢是為什麼?伺服器
- 5分鐘告訴你雲端計算的前景,為什麼要學習雲端計算
- 你的Redis為什麼變慢了?常見延遲問題定位與分析Redis
- HTTP和HTTPS有什麼區別?HTTP
- 筆記:網路基礎TCP、HTTP、HTTPS(HTTP+SSL)筆記TCPHTTP
- Go 為什麼要設計 iota 常量?Go
- 什麼是延遲?怎樣解決?—Vecloud微雲Cloud
- 為什麼要成為「無敵」程式設計師?程式設計師
- 為什麼Python這麼慢?Python
- 為什麼 Python 這麼慢?Python
- 為什麼要學習Linux雲端計算?新手怎麼學習LinuxLinux