握手期间SSL连接超时(客户端交换重新传输)

我们有一个Java LDAP客户端与AD进行SSL连接。 有时连接会挂起,客户端和服务器会如下所示连续重新发送客户端密钥交换ACK数据包,并在大约5分钟后最终超时。 对此行为的任何可能的解释和解决scheme。

client ------ Client Key Exchange ----------------------> Server client ------ Client Key Exchange(Re-transmission)------> Server client <----- ACK --------------------------------------- Server client ------ Client Key Exchange(Re-transmission)------> Server client <------ Dup ACK --------------------------------- Server client ------ Client Key Exchange(Re-transmission)------> Server client <------ Dup ACK --------------------------------- Server 

WireShark ScreenShot: http ://img59.imageshack.us/img59/6431/p63e.png

所以,假设你是正确的ACK在TCP级别:

如果客户端发送了一个TCP ACK,但是继续重新发送被ACK-ed的内容,则服务器接收并注册内容,但客户端还没有收到并注册ACK。

你在哪里收集交易所的数据? 在客户端,服务器之间,或者在两者之间。 你可能应该收集两端,尽可能接近两端,这样你可以比较它们来validation问题是否在networking中(看起来很可能)。

根据你所告诉我们的情况,包括ACK在一段时间内无法通过,看起来不太可能是简单的丢包。 我将非常仔细地查看涉及的任何SSL隧道或防火墙的configuration。

你能收集和分享每个连接端的tcpdump输出吗?