Какие инструменты для анализа сетевого трафика ты знаешь?

«Какие инструменты для анализа сетевого трафика ты знаешь?» — вопрос из категории Сети, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В своей практике для отладки сетевых взаимодействий в C++ приложениях я использовал несколько инструментов.

Wireshark — основной инструмент для глубокого анализа пакетов. Я применяю его для диагностики протоколов, с которыми работает мое приложение (например, кастомные бинарные протоколы поверх TCP). Полезно строить фильтры для конкретного порта или IP-адреса:

ip.addr == 192.168.1.100 && tcp.port == 8080

tcpdump — консольный сниффер для Linux-серверов, где развернуто C++ backend-приложение. Использую для захвата трафика в файл с последующим анализом в Wireshark:

tcpdump -i any -s 0 -w my_app_trace.pcap 'port 9000'

netstat/ss — для быстрой проверки открытых портов и сетевых соединений самого процесса. Например, чтобы найти утечку сокетов:

netstat -tulpn | grep <pid_of_my_cpp_app>

iperf3 — для проверки пропускной способности сети между клиентом и сервером, что критично для высоконагруженных C++ систем.

Собственный инструментарий — иногда встраиваю логирование сырых сетевых данных (в hex-формате) непосредственно в C++ код для отладки сложных случаев.