Как работать с сырыми сокетами (SOCK_RAW) | Часть 4
Завершающая (4-я часть) статьи на тему «сырых сокетов» на языке С++. Первые три части вы можете прочитать по ссылкам:
0x6. Резюме
============ Результаты исследования данной статьи можно резюмировать следующим образом. точки:
а. Linux
******** сокет (AF_INET, SOCK_RAW, 0); -> EPPROTONOSUPPORT ----------------------------- сокет (AF_INET, SOCK_RAW, IPPROTO_RAW); --------------------------------------- | | | | --------- ---------- | ввод | | выход | --------- ---------- только дейтаграммы IP_HDRINCL: протокол: (указывается пользователем) с прокотолом (по умолчанию установлен) поле: 255 (IPPROTO_RAW) сокет (AF_INET, SOCK_RAW, XXX); ------------------------------- | | | | --------- ---------- | ввод | | выход | --------- ---------- только дейтаграммы IP_HDRINCL: протокол: (указывается пользователем) с прокотолом! IP_HDRINCL: протокол: XXX поле: XXX (что бы то ни было может быть)
б. FreeBSD
********** сокет (AF_INET, SOCK_RAW, 0); --------------------------------------- | | | | --------- ---------- | ввод | | выход | --------- ---------- все необработанные дейтаграммы IP_HDRINCL: протокол: (указывается пользователем) ! IP_HDRINCL: 0 сокет (AF_INET, SOCK_RAW, IPPROTO_RAW); --------------------------------------- | | | | --------- ---------- | ввод | | выход | --------- ---------- только дейтаграммы IP_HDRINCL: протокол: (указывается пользователем) с помощью прокотола! IP_HDRINCL: IPPROTO_RAW поле: 255 (IPPROTO_RAW) сокет (AF_INET, SOCK_RAW, XXX); ------------------------------- | | | | --------- ---------- | ввод | | выход | --------- ---------- только дейтаграммы IP_HDRINCL: протокол: (указывается пользователем) с прокотолом! IP_HDRINCL: протокол: XXX поле: XXX и только * незарегистрированный * протоколы
0x7. Заключение
=============== Несомненно, SOCK_RAW - мощный тип сокета, заслуживающий кто-то серьезно интересуется сетевым программированием низкого уровня, внимание. То, что мы обсудили в этой статье, - это всего лишь беглый взгляд на сложное внутреннее устройство сети, которое имеет место в двух самых популярных сетях стеки относительно сырых сокетов. Реализация механизма сырых сокетов может звучит сложно, но на самом деле может стать хорошей отправной точкой для всех, кто хочет чтобы вникнуть в детали того, что составляет основу сегодняшнего Интернета. Я надеюсь, что этот текст сам по себе станет понятным руководством, но я настоятельно советую всем, кто проявляет большой интерес к этому делу, получить в свои руки на все книги, упомянутые в разделе «Ссылки». Они оказались бесценными и бесценными. подробно объясните многие вещи, которые обычно воспринимаются как должное. В будущем я надеюсь написать более ориентированный на безопасность текст, помимо основных вещей, обсуждаемых здесь, и будет иметь дело с некоторыми из необычные конечные случаи, которые скрываются в углах источников net int.
0x8. Рекомендации
===============
1. Иллюстрированный протокол TCP / IP. Том 2. Реализация.
2. Сетевое программирование Unix — Сетевой API сокетов
3. Понимание внутреннего устройства сети Linux
4. Исходники ядра Linux.2.6.24 и FreeBSD-7.0
SOCK_RAW Демистификация
автор: ithilgore — ithilgore.ryu.L@gmail.com
sock-raw.org / sock-raw.homeunix.org
Май 2008 г.
Источник https://sock-raw.org/papers/sock_raw (автоперевод)