http 和https 的區別及性能差異

http使用TCP 三次握手建立連接,客戶端和服務器需要交換3個包,https除了 TCP 的三個包,還要加上 ssl握手需要的9個包,所以一共是12個包。http 建立連接,按照下面鏈接中針對Computer Science House的測試,是114毫秒;https建立連接,耗費436毫秒。ssl 部分花費322毫秒,包括網絡延時和ssl 本身加解密的開銷(服務器根據客戶端的信息確定是否需要生成新的主密鑰;服務器回覆該主密鑰,並返回給客戶端一個用主密鑰認證的信息;服務器向客戶端請求數字簽名和公開密鑰)。
SSL handshake latency and HTTPS optimizations. :: semicomplete.com
當SSL 連接建立後,之後的加密方式就變成了3DES等對於 CPU 負荷較輕的對稱加密方式。相對前面 SSL 建立連接時的非對稱加密方式,對稱加密方式對 CPU 的負荷基本可以忽略不記,所以問題就來了,如果頻繁的重建 ssl 的session,對於服務器性能的影響將會是致命的,儘管打開https 保活可以緩解單個連接的性能問題,但是對於併發訪問用戶數極多的大型網站,基於負荷分擔的獨立的SSL termination proxy就顯得必不可少了,Web 服務放在SSL termination proxy之後。SSL termination proxy既可以是基於硬件的,譬如F5;也可以是基於軟件的,譬如維基百科用到的就是 Nginx

那採用 https 後,到底會多用多少服務器資源,2010年1月 Gmail切換到完全使用 https, 前端處理 SSL 機器的CPU 負荷增加不超過1%,每個連接的內存消耗少於20KB,網絡流量增加少於2%。由於 Gmail 應該是使用N臺服務器分佈式處理,所以CPU 負荷的數據並不具有太多的參考意義,每個連接內存消耗和網絡流量數據有參考意義。這篇文章中還列出了單核每秒大概處理1500次握手(針對1024-bit 的 RSA),這個數據很有參考意義,具體信息來源的英文網址:ImperialViolet
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章