Я хочу отладить программу, которая устанавливает простое сетевое соединение.
Есть ли какая-либо команда, которая будет печатать сетевую активность команды, что-то, что покажет мне (например, в шестнадцатеричном дампе), что отправляется и принимается. strace -e trace=%network COMMAND
это 90% решения, которое показывает необработанные байты сети.
Но форматирование некачественное, оно включает много дополнительной информации, и форматирование не так легко читать.
Это активный сервер, поэтому я не хочу tcpdump
все сетевая активность, только эта одна команда. Я хочу напечатать это на терминале (например, strace
), вместо того, чтобы иметь слишком много команд.
Сервер - Ubuntu Linux 18.04.
Поскольку вы упомянули tcpdump
кажется, что вам не нужна вся (внутренняя) информация, которую вы получаете от strace
. Вы, вероятно, уже знаете, к каким портам эти программы получают доступ в сети (я предполагаю https
и http
просто как пример). Если это так, вы можете использовать
tcpdump port https or http
(Я пропустил второй port
ключевое слово, tcpdump использует последнее заданное).
Чтобы уточнить это выражение фильтра, взгляните на man (7) pcap-filter
В зависимости от того, как долго выполняется процесс и как долго соединение остается открытым, вы можете использовать lsof
или ss
чтобы увидеть сетевое соединение (я) и исходный порт (а), которые использует конкретное приложение, и использовать эту информацию для создания соответствующего фильтра для tcpdump
Я полагаю, что strace дает вам те же сведения в отношении порта источника и пункта назначения.
Когда весь соответствующий сетевой трафик уже отправлен, прежде чем вы сможете создать соответствующий фильтр (ы), подумайте о том, чтобы записать (гораздо) больше деталей в файл, а затем запустить tcp-дамп для этого файла pcap.