亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大型網站的HTTPS實踐(三)——HTTPS對性能的影響

發布時間:2020-08-11 13:31:21 來源:ITPUB博客 閱讀:176 作者:AIOps智能運維 欄目:互聯網科技

前言

HTTPS在保護用戶隱私,防止流量劫持方面發揮著非常關鍵的作用,但與此同時,HTTPS也會降低用戶訪問速度增加網站服務器的計算資源消耗。本文主要介紹HTTPS對性能的影響。

HTTPS對訪問速度的影響

在介紹速度優化策略之前,先來看下HTTPS對速度有什么影響。影響主要來自兩方面:協議交互所增加的網絡RTT(round trip time)和加解密相關的計算耗時。下面分別介紹一下。

1網絡耗時增加

由于HTTP和HTTPS都需要DNS解析,并且大部分情況下使用了DNS緩存,為了突出對比效果,忽略主域名的DNS解析時間。

用戶使用HTTP協議訪問http://www.baidu.com(或者www.baidu.com)時會有如下網絡上的交互耗時:

大型網站的HTTPS實踐(三)——HTTPS對性能的影響

圖1  HTTP首個請求的網絡耗時

可見,用戶只需要完成TCP三次握手建立TCP連接就能夠直接發送HTTP請求獲取應用層數據,此外在整個訪問過程中也沒有需要消耗計算資源的地方。

接下來看HTTPS的訪問過程,相比HTTP要復雜很多,在部分場景下,使用HTTPS訪問有可能增加7個RTT。如下圖:

大型網站的HTTPS實踐(三)——HTTPS對性能的影響

圖2  HTTPS首次請求對訪問速度的影響

HTTPS首次請求需要的網絡耗時解釋如下:

  1. 三次握手建立TCP連接。耗時一個RTT。

  2. 使用HTTP發起GET請求,服務端返回302跳轉到https://www.baidu.com。需要一個RTT以及302跳轉延時。

    1. 大部分情況下用戶不會手動輸入https://www.baidu.com來訪問HTTPS,服務端只能返回302強制瀏覽器跳轉到HTTPS。

    2. 瀏覽器處理302跳轉也需要耗時。

  3. 三次握手重新建立TCP連接。耗時一個RTT。

    1. 302跳轉到HTTPS服務器之后,由于端口和服務器不同,需要重新完成三次握手,建立TCP連接。

  4. TLS完全握手階段一。耗時至少一個RTT。

    1. 這個階段主要是完成加密套件的協商和證書的身份認證。

    2. 服務端和瀏覽器會協商出相同的密鑰交換算法、對稱加密算法、內容一致性校驗算法、證書簽名算法、橢圓曲線(非ECC算法不需要)等。

    3. 瀏覽器獲取到證書后需要校驗證書的有效性,比如是否過期,是否撤銷。

  5. 解析CA站點的DNS。耗時一個RTT。

    1. 瀏覽器獲取到證書后,有可能需要發起OCSP或者CRL請求,查詢證書狀態。

    2. 瀏覽器首先獲取證書里的CA域名。

    3. 如果沒有命中緩存,瀏覽器需要解析CA域名的DNS。

  6. 三次握手建立CA站點的TCP連接。耗時一個RTT。

    1. DNS解析到IP后,需要完成三次握手建立TCP連接。

  7. 發起OCSP請求,獲取響應。耗時一個RTT。

  8. 完全握手階段二,耗時一個RTT及計算時間。

    1. 完全握手階段二主要是密鑰協商。

  9. 完全握手結束后,瀏覽器和服務器之間進行應用層(也就是HTTP)數據傳輸。

當然不是每個請求都需要增加7個RTT才能完成HTTPS首次請求交互。大概只有不到0.01%的請求才有可能需要經歷上述步驟,它們需要滿足如下條件:

  1. 必須是首次請求。即建立TCP連接后發起的第一個請求,該連接上的后續請求都不需要再發生上述行為。

  2. 必須要發生完全握手,而正常情況下80%的請求能實現簡化握手。

  3. 瀏覽器需要開啟OCSP或者CRL功能。Chrome默認關閉了OCSP功能,Firefox和IE都默認開啟。

  4. 瀏覽器沒有命中OCSP緩存。OCSP一般的更新周期是7天,Firefox的查詢周期也是7天,也就說是7天中才會發生一次OCSP的查詢。

  5. 瀏覽器沒有命中CA站點的DNS緩存。只有沒命中DNS緩存的情況下才會解析CA的DNS。

2計算耗時增加

上節還只是簡單描述了HTTPS關鍵路徑上必須消耗的純網絡耗時,沒有包括非常消耗CPU資源的計算耗時,事實上計算耗時也不小(30ms以上),從瀏覽器和服務器的角度分別介紹一下:

  1. 瀏覽器計算耗時

    1. RSA證書簽名校驗,瀏覽器需要解密簽名,計算證書哈希值。如果有多個證書鏈,瀏覽器需要校驗多個證書。

    2. RSA密鑰交換時,需要使用證書公鑰加密premaster。耗時比較小,但如果手機性能比較差,可能也需要1ms的時間。

    3. ECC密鑰交換時,需要計算橢圓曲線的公私鑰。

    4. ECC密鑰交換時,需要使用證書公鑰解密獲取服務端發過來的ECC公鑰。

    5. ECC密鑰交換時,需要根據服務端公鑰計算master key

    6. 應用層數據對稱加解密。

    7. 應用層數據一致性校驗。

  2. 服務端計算耗時

    1. RSA密鑰交換時需要使用證書私鑰解密premaster。這個過程非常消耗性能。

    2. ECC密鑰交換時,需要計算橢圓曲線的公私鑰。

    3. ECC密鑰交換時,需要使用證書私鑰加密ECC的公鑰。

    4. ECC密鑰交換時,需要根據瀏覽器公鑰計算共享的master key。

    5. 應用層數據對稱加解密。

    6. 應用層數據一致性校驗。

由于客戶端的CPU和操作系統種類比較多,所以計算耗時不能一概而論。手機端的HTTPS計算會比較消耗性能,單純計算增加的延遲至少在50ms以上。PC端也會增加至少10ms以上的計算延遲。

服務器的性能一般比較強,但由于RSA證書私鑰長度遠大于客戶端,所以服務端的計算延遲也會在5ms以上。
總  結

HTTPS在保證數據安全性的同時,對服務性能也造成了一些影響。在本文中,我們著重介紹了HTTPS從網絡耗時和加密解密兩方面對于服務性能的影響。在下一篇系列文章中,我們將為大家帶來百度在減小HTTPS對性能影響方面的方法和經驗。

文章整理自百度HTTPS技術聯合團隊

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

共和县| 宜兰市| 施甸县| 丹阳市| 沙河市| 伊宁县| 永州市| 绥芬河市| 博野县| 晋城| 潜江市| 海伦市| 个旧市| 山阴县| 蚌埠市| 广安市| 喜德县| 辛集市| 龙岩市| 射阳县| 锡林郭勒盟| 湟中县| 平凉市| 乌苏市| 炉霍县| 封开县| 河源市| 武城县| 樟树市| 岳西县| 碌曲县| 瑞金市| 长治县| 边坝县| 平江县| 曲阳县| 浦县| 军事| 隆昌县| 黄浦区| 治多县|