Назад | Перейти на главную страницу

Подтверждение TCP в порядке, клиент не получает пакетов от сервера.

Топология: Клиент ----- Промежуточное устройство ----- Сервер

Клиент: win7

Промежуточное устройство: неизвестно

Сервер: CentOS 5.8

Проблема возникает, когда клиент и сервер пытаются установить SSL-соединение. Это происходит с одним конкретным портом, 2000. Мне не удалось воспроизвести проблему с другими номерами портов.

Я захватил пакеты и на клиенте, и на сервере. После установления связи TCP, с точки зрения клиента, он не получает ACK для своих ранее отправленных пакетов, поэтому он продолжает их повторно отправлять. Однако на стороне сервера он получал эти пакеты и отправлял пакеты ACK.

Странно то, что после того, как сервер отправил эти ACK, он получил пакет [RST, ACK] от промежуточного устройства для каждого отправленного пакета.

Что может быть причиной?

Если это произойдет после согласования SSL-соединения, возможно, промежуточное устройство считает, что зашифрованный трафик через порт 2000 является потенциальной угрозой безопасности (или в некотором роде «нежелательной») и имеет две вещи:

  • перехватывает «ACK», отправленный сервером, чтобы они не доходили до клиента, который будет рассматривать сервер как не отвечающий
  • отправляет сброс на сервер, чтобы он не оставил соединение открытым, ожидая трафика, который никогда не будет исходить от клиента