У нас есть клиент Java LDAP, устанавливающий SSL-соединение с AD. Иногда соединение зависает с повторной передачей клиента и сервера Обмен ключами клиентов и ACK пакеты непрерывно, как показано ниже, и в конечном итоге время ожидания истекает примерно через 5 минут. Любое возможное объяснение и решение этого поведения.
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.
Где вы собираете данные на бирже? На клиенте, сервере или между ними. Вероятно, вам следует собирать с обоих концов и как можно ближе к концам, чтобы вы могли сравнить их, чтобы убедиться, что проблема в сети (что кажется вероятным).
Основываясь на том, что вы нам сказали, в том числе на том, что ACK не проходят в течение длительного периода, маловероятно, что это просто потеря пакетов. Я бы очень внимательно посмотрел на конфигурацию любых задействованных туннелей SSL или межсетевых экранов.
Можете ли вы собирать и делиться выводом tcpdump с каждого конца соединения?