Как увидеть приложение сетевого протокола связи в режиме реального времени

Я хотел бы видеть протокол, используемый клиент-серверным приложением в режиме реального времени. Я не заинтересован в какой-либо статистике. Все, что я хочу видеть, это сообщение, отправленное сервером и клиентом. Это зависит от FreeBSD, если это помогает. После некоторого поиска в Google я нашел tcpdump как правильный выбор. Поэтому я попытался запустить его на своем сервере, но не смог сузить содержимое пакета, специфичное для моего приложения. Это куча текстовой прокрутки в прямом эфире. Реальное общение моего приложения не настолько тяжелое, чтобы его можно было потерять, когда оно отображается на терминале.

Я предполагаю, что я не предоставляю достаточно информации. Если что-то нужно, пожалуйста, добавьте комментарий. Я отвечу быстро.

Любая помощь или указатели высоко ценится.

3 ответа

Вы можете легко фильтровать пакеты, которые перехватывает tcpdump. Я предполагаю, что вы знаете, через какой порт ваше приложение обменивается данными? Допустим, например, что вы хотите захватить весь трафик через порт 12345. Затем вы запустите:

$ tcpdump port 12345

Кроме того, вы можете захватить в файл, а затем открыть позже, используя инструмент GUI Wireshark:

$ tcpdump -s0 -w packets.log port 12345

Если протокол основан на тексте (например, HTTP, SMTP и т. Д.), Мне нравится ngrep. Оно использует libpcap лайк tcpdump делает, поэтому синтаксис фильтрации тот же. Разница в том, что его выходные данные ориентированы на отображение полезной нагрузки пакета, и это позволит вам ограничить вывод пакетами, соответствующими регулярному выражению.

Например, чтобы увидеть попытки доставки почты, вы можете сделать:

ngrep -d eth0 -qlM -s 0 -W byline '^MAIL FROM:|^RCPT TO:' 'tcp port 25'

Вам нужно будет выполнить некоторую фильтрацию, чтобы ограничить tcpdump только теми данными, которые вы хотите. Примером может быть поиск только трафика с участием как хоста a, так и хоста b.

tcpdump $options host a and host b 

Обычно я использую опции -n, -X, -vv и -s0 с tcpdump. Вы также можете фильтровать на основе портов и многое другое. Чтобы посмотреть SMTP-диалог между хостом a и хостом b, вы можете запустить tcpdump, например:

tcpdump -n -X -vv -s0  host a and host b and port smtp

Который будет ограничивать отображаемые данные данными порта ldap, хоста a и хоста b. Если какой-либо из 3 отсутствует, он не будет отображаться. Страница man будет иметь гораздо больше информации о фильтрации.

Надеюсь, это поможет, Рик

Другие вопросы по тегам