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 将待计算内容发送给加速集群后,依然可以继续处理其他请求,整个过程是异步非阻塞的。