HTTPS 和 HTTP 使用 TCP 協議進行傳輸,也就意味著必須通過三次握手建立 TCP 連接,但一個 RTT 的時間內只傳輸一個 syn 包是不是太浪費?能不能在 syn 包發出的同時捎上應用層的數據?其實是可以的,這也是 tcp fast open 的思路,簡稱 TFO。具體原理可以參考 rfc7413。
遺憾的是 TFO 需要高版本內核的支持,linux 從 3.7 以后支持 TFO,但是目前的 windows 系統還不支持 TFO,所以只能在公司內部服務器之間發揮作用。
1、優化 TLS 協議棧,剝離最消耗 CPU 資源的計算,主要有如下部分: RSA 中的加解密計算。 ECC 算法中的公私鑰生成。 ECC 算法中的共享密鑰生成。 2、優化硬件計算部分。硬件計算不涉及協議及狀態交互,只需要處理大數運算。 3、Web server 到 TLS 計算集群之間的任務是異步的。即 web server 將待計算內容發送給加速集群后,依然可以繼續處理其他請求,整個過程是異步非阻塞的。