怎么修改自己的网站,网站验证码文件,无线网络管理平台,php网站建设流程图一般情况下#xff0c;不管 TLS 握手次数如何#xff0c;都得先经过 TCP 三次握手后才能进行 因为 HTTPS 都是基于 TCP 传输协议实现的#xff0c;得先建立完可靠的 TCP 连接才能做 TLS 握手的事情。 「HTTPS 中的 TLS 握手过程可以同时进行三次握手」对不对呢#xff1f… 一般情况下不管 TLS 握手次数如何都得先经过 TCP 三次握手后才能进行 因为 HTTPS 都是基于 TCP 传输协议实现的得先建立完可靠的 TCP 连接才能做 TLS 握手的事情。 「HTTPS 中的 TLS 握手过程可以同时进行三次握手」对不对呢 是可能发生的但是需要在特定的条件下才可能发生如果没有说任何前提条件说这句话就是在耍流氓。 客户端和服务端都开启了 TCP Fast Open 功能且 TLS 版本是 1.3 客户端和服务端已经完成过一次通信。 什么是 TCP Fast Open 常规的情况下如果要使用 TCP 传输协议进行通信则客户端和服务端通信之前先要经过 TCP 三次握手后建立完可靠的 TCP 连接后客户端才能将数据发送给服务端。 TCP 的第一次和第二次握手是不能够携带数据的而 TCP 的第三次握手是可以携带数据的因为这时候客户端的 TCP 连接状态已经是 ESTABLISHED表明客户端这一方已经完成了 TCP 连接建立。 TCP Fast Open 是为了绕过 TCP 三次握手发送数据在 Linux 3.7 内核版本之后提供了 TCP Fast Open 功能这个功能可以减少 TCP 连接建立的时延。 要使用 TCP Fast Open 功能客户端和服务端都要同时支持才会生效。 开启了 TCP Fast Open 功能想要绕过 TCP 三次握手发送数据得建立第二次以后的通信过程。 第一次客户端和服务端通信的时候还是需要正常的三次握手流程。随后客户端就有了 Cookie 这个东西它可以用来向服务器 TCP 证明先前与客户端 IP 地址的三向握手已成功完成。 TLSv1.3 TLSv1.3 握手过程只需 1-RTT 的时间它到整个握手过程 TCP 连接的第三次握手是可以携带数据的如果客户端在第三次握手发送了 TLSv1.3 第一次握手数据是不是就表示「HTTPS 中的 TLS 握手过程可以同时进行三次握手」。 不是的因为服务端只有在收到客户端的 TCP 的第三次握手后才能和客户端进行后续 TLSv1.3 握手。 TLSv1.3 还有个更厉害到地方在于会话恢复机制在重连 TLvS1.3 只需要 0-RTT TCP Fast Open TLSv1.3 在第二次以后到通信过程中客户端可以绕过三次握手直接发送数据而且服务端也不需要等收到第三次握手后才发送数据。 如果 HTTPS 的 TLS 版本是 1.3那么 TLS 过程只需要 1-RTT。 因此如果「TCP Fast Open TLSv1.3」情况下在第二次以后的通信过程中TLS 和 TCP 的握手过程是可以同时进行的。 如果基于 TCP Fast Open 场景下的 TLSv1.3 0-RTT 会话恢复过程不仅 TLS 和 TCP 的握手过程是可以同时进行的而且 HTTP 请求也可以在这期间内一同完成。 总结 HTTPS 是先进行 TCP 三次握手再进行 TLSv1.2 四次握手