使用“三向握手”ack 发送的数据,但不是 TCP 快速打开

网络工程 tcp
2022-03-02 21:35:38

大家好,这是我在这里的第一个问题。
对于我的客户,我正在分析此(匿名)捕获,因为 SSL 握手问题,但我一开始注意到 TCP 三向握手并不像预期的那样。
如果您查看屏幕截图,三次握手 ACK(第三个数据包)启用了 PUSH 标志,因为它携带 178 字节的有效负载。
对于原始捕获,此数据包包含 ssl ClientHello 消息。
这怎么可能?这不是 TCP 快速打开 (RFC 7413),SYN 和 SYN+ACK 不包含“快速打开”选项。客户端是连接到 LDAPS 服务器的 IIS 服务器。你知道关于这种行为的任何解释吗?是否有任何标准或相关的 RFC?

谢谢你

在此处输入图像描述

1个回答

已经使用第二个 ACK​​ 发送数据是完全正常的。它是客户端(套接字发起者)发送其请求的第一部分(或发起 SSL 握手)。由于它已经收到了来自服务器的 ACK,所以没有什么禁止它的。

有关详细信息,请参阅RFC 793图 6 - 由于发起方已收到 SYN/ACK 序列,因此已在其一侧建立了套接字。

服务器(侦听器)在收到其 ACK(三次握手中的最后一个)之前无法向客户端发送任何数据- 除非使用 TCP 快速打开选项,该选项仍处于试验阶段(TCP 快速打开允许服务器在收到初始 SYN 后立即发送数据)。