【轉】HTTPS比HTTP慢的原因


HTTPS比HTTP慢的原因

原文地址:https://blog.csdn.net/new03/article/details/84826143

HTTPs鏈接比不加密的HTTP鏈接慢很多。

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.com

TCP handshake: 0.022, SSL handshake: 0.064

curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_nslookup:%{time_namelookup}\ntime_total: %{time_total}\n" "https://api.weixin.qq.com"

 上面命令中的w參數表示指定輸出格式,timeconnect變量表示TCP握手的耗時,timeappconnect變量表示SSL握手的耗時,s參數和o參數用來關閉標准輸出。

從運行結果可以看到,SSL握手的耗時(64毫秒)大概是TCP握手(22毫秒)的三倍

結果:

time_connect: 0.154
time_starttransfer: 0.243
time_nslookup:0.150
time_total: 0.243

 說明: 以上顯示網絡連接時間為0.154秒(其中DNS解析為0.150秒),總體請求0.243秒。DNS解析出現故障的概率在正式環境中比較高,所以在診斷時候千萬別漏了time_namelookup這個參數。

也就是說,在建立連接的階段,HTTPs鏈接比HTTP鏈接要長3倍的時間,具體數字取決於CPU的快慢。

CURL -w 參數詳解

https://blog.csdn.net/weifangan/article/details/80741981


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM