TCP Reset (TCP RST ACK) - что это и как искать причину?
Каждый TCP пакет несёт заголовок и в нем есть биты завершения соединения:
- FIN – все данные переданы успешно, получены все подтверждения и соединение завершается логичным способом;
- RST — обычно этот бит установлен в «0» и ничего не значит. Но иногда он получает значение 1 и это ведет к немедленному прекращению данного соединения.
Хорошо это или плохо, так как красный сигнал не предвещает ничего хорошего? Все, конечно же, зависит от ситуации, когда они происходят.
TCP RST ACK – это нормальный и предусмотренный RFC 793 процесс разрыва соединения, но если их много и это оказывает влияние на производительность приложения и пользователей, то это бесспорно повод задуматься. Как всегда дьявол кроется в деталях и необходимо задать себе несколько вопросов.
В каком месте общения между устройствами происходит TCP Reset?
Нажимаем Analyze – Conversation Filter - IPv4. Если TCP IP Reset отправлен одной из сторон после обмена данными, то надо проверять настройки оборудования. Например, данные отправлены, но соединение держится в открытом состоянии и по прошествии какого-то времени — посылается TCP RST. И это не является проблемой.
Если TCP Reset происходит в начале соединения, то это тоже не проблема для пользователя. На примере ниже мы запрашиваем файл с облака, но его уже там нет. Поэтому клиент дважды попытался его получить и оба раза сервер ответил TCP IP Reset.
Если TCP Reset происходит в середине процесса передачи данных, то потребуется дополнительный анализ, так как это может быть проблема на сервере, в приложении или даже клиенте. Пользователь запросил данные через браузер и затем закрыл его, не дожидаясь ответа. В данном случае будет однозначно отправлен TCP Reset.
Почему TCP RST отправлен сразу после SYN?
Причин может быть также несколько. Обычно это означает, что порт, по которому пытаются открыть соединение, недоступен. Сервер отключен, сервер занят или такой порт закрыт. Поэтому происходит сброс SYN и все.
Кто отправил TCP RST ACK?
Важно также понимать кто инициатор разрыва соединения. Клиент, сервер, сетевое оборудование внутри собственной инфраструктуры или на пути от провайдера (см. TTL, а также IP адрес отправителя). На все эти вопросы мы можем получить ответ, анализируя трафик с помощью анализатора протоколов.
Всегда на связи, Игорь Панов
См. также:
- Какие параметры и как измеряются при анализе производительности сервисов и приложений?
- Как правильно подключиться к сети для захвата трафика? Часть 1. Захват трафика на стороне клиента или сервера
- Wireshark за 8 шагов: от установки программы до перехвата и анализа трафика
Авторизуйтесь для этого