4.14 HTTPS 中 TLS 和 TCP 能同时握手吗?
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
HTTPS都是基于TCP传输协议实现的得先建立完可靠得TCP连接才能做TLS握手的事情。
实现HTTPS中TLS和TCP同时握手的前提
1、客户端和服务端开启了TCP Fast Open且TLS版本在1.3
2、客户端和服务端已经完成过一次通信。
什么是TCP Fast Open
常规的TCP传输协议通信需要先建立TCP三次握手后才可以传输数据前两次握手是不可携带数据的第三次握手可以携带数据因为这个时候客户端进入ESTABLISHED表明客户端一方已经完成了TCP连接建立。
TCP Fast Open 是为了绕过 TCP 三次握手发送数据这个功能可以减少 TCP 连接建立的时延。要使用 TCP Fast Open 功能客户端和服务端都要同时支持才会生效。
开启了TCP Fast Open功能想要绕过TCP三次握手发送数据还是需要事先建立一次三次握手。
所以如果客户端和服务端同时支持 TCP Fast Open 功能那么在完成首次通信过程后后续客户端与服务端 的通信则可以绕过三次握手发送数据这就减少了握手带来的 1 个 RTT 的时间消耗。
TLS v1.3
TLSv1.3 握手过程只需 1-RTT 的时间
TCP Fast Open + TLSv1.3
客户端和服务端同时支持 TCP Fast Open 功能的情况下在第二次以后到通信过程中客户端可以绕过三次握手直接发送数据而且服务端也不需要等收到第三次握手后才发送数据。
因此如果「TCP Fast Open + TLSv1.3」情况下在第二次以后的通信过程中TLS 和 TCP 的握手过程是可以同时进行的。
如果基于 TCP Fast Open 场景下的 TLSv1.3 0-RTT 会话恢复过程不仅 TLS 和 TCP 的握手过程是可以同时进行的而且 HTTP 请求也可以在这期间内一同完成。