В Linux можно открыть raw socket и увидеть пакеты, которые приходят на сетевую карту.
Без Wireshark.
Без libpcap.
Без лишних инструментов.
Пример из скрина делает простую вещь:
1. создаёт socket уровня
AF_PACKET2. просит у ядра все Ethernet-пакеты через
ETH_P_ALL3. в бесконечном цикле читает их через
recvfrom4. печатает размер каждого пакета
То есть программа буквально говорит ядру:
“Отдавай мне всё, что видит сетевой интерфейс.”
И Linux отдаёт.
Почему это круто?
Потому что так становится понятно, что Wireshark - это не магия. Он тоже получает низкоуровневый трафик от системы, просто красиво его разбирает и показывает.
Обычно разработчик работает с сетью на высоком уровне:
HTTP → TCP → socketА raw socket позволяет спуститься ниже:
Ethernet frame → IP packet → TCP/UDP → payloadНа таком уровне видно, что реально летит по сети: заголовки, размеры пакетов, служебные данные и весь сырой трафик.
Это один из тех примеров, после которых Linux networking перестаёт быть чёрным ящиком.


