-
一般情况下,不管 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 四次握手
-
HTTPS中的TLS和TCP能同时握手吗
love-self-discipline2024-04-08 16:01
相关推荐
木子n111 小时前
车载以太网与SOME/IP服务化通信实战-01.从字节到服务:SOME/IP报文解析与四通道开销账李日华大战鸡红12 小时前
FOC状态空间方程模型推导(学习记录)Escalating_xu12 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析爱跳舞的烤冷面13 小时前
Linux篇——网络编程Knight_AL14 小时前
基于 Netty 实现的 WebSocket 服务端kkkkkkkkkk_Z14 小时前
新手自学嵌入式 | 学习日记:异常与中断基础、i.MX6ULL裸机开发环境搭建、GPIO模块与点灯原理m4Rk_15 小时前
【论文阅读】Agent 记忆机制(94):MemGen——在推理过程中动态生成并织入潜在记忆晓德15 小时前
0、LLM大模型安全学习系列(启)wuyk55515 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 31 章 休眠唤醒 WiFi 断连、时间同步、网络恢复机制Titan202416 小时前
MySQL索引学习笔记