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

Как tcpdump может отслеживать отключение TCP и регистрировать отметку даты и времени?

У меня есть два сервера, на каждом из которых запущено приложение Java, которое создает два отдельных TCP-соединения, одно из HostA -> HostB и одно из HostB -> HostA на разных портах.

Мне сказали, что TCP-соединение потеряно и восстановлено, но клиент не может сообщить мне время и дату, когда это произойдет.

Могу ли я настроить tcpdump на HostA для отслеживания конкретного порта, чтобы сообщить мне, когда он отключается? То же самое для подключения к HostB? Меня не волнуют данные о полезной нагрузке и т. Д.

Я просмотрел страницу руководства, нашел несколько HowTo в Интернете, искал в Google и т. Д. Я не видел примеров того, что я ищу. Спасибо, если можете помочь.

«Отключение» в TCP фактически означает, что каждый хост говорит: «Мне больше нечего отправлять», а другой хост это подтверждает; когда оба хоста сделали это, соединение закрывается. Видеть Закрытие соединения в RFC 793.

Как заметил Нат, соединение также может быть принудительно закрыто с помощью индикации «сброса».

Итак, то, что вы ищете, - это FIN, которые указывают: «Мне больше нечего сказать», и RST, которые указывают: «У меня нет такого соединения». Вы бы хотели запустить tcpdump с фильтром, который ищет трафик к конкретному порту или от него и для которого установлен флаг FIN. В текущих версиях libpcap / WinPcap вы можете использовать такой фильтр, как

tcp port XXX and (tcp[tcpflags] & (tcp-fin|tcp-rst)) != 0

где XXX - номер порта. Обратите внимание, что для чистого закрытия это захватит несколько пакетов, поскольку каждая сторона должна отправить индикацию «У меня больше нет данных для отправки».

К сожалению, это не будет работать с IPv6, только с IPv4.