Сырой сокет (Vdjkw vktym)

Перейти к навигации Перейти к поиску

Сырой сокет (англ. raw socket) — интерфейс программирования приложений (API), разновидность сокетов Беркли, позволяющий собирать TCP/IP-пакеты, контролируя каждый бит заголовка и отправляя в сеть нестандартные пакеты.

Создание сокета. Код на языке Си

int i32SocketFD = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);

Код на языке Си в ОС Windows

wSocket = WSASocket(AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, 0);

В каждом конкретном случае необходимо проверять, поддерживает ли ОС сырые сокеты. Приблизительно поддержка отражена в таблице:

ОС поддержка сырых сокетов
95, 98, 98SE не поддерживает сырые сокеты (ограниченно поддерживает сырые сокеты для ICMP-протокола);
NT 4.0 сырые сокеты ограничены 10 входящими соединениями за 10 минут (может быть исправлено в реестре);
W2K полностью поддерживает сырые сокеты;
XP без SP полностью поддерживает сырые сокеты после остановки брандмауэра ("net stop sharedaccess");
XP SP1 без заплатки MS05-019 поддерживает сырые сокеты так же, как и XP без SP;
XP SP1 с заплаткой MS05-019 блокирует исходящие сырые TCP-сокеты, если брандмауэр запущен
XP SP2 без MS05-019 полностью поддерживает входящие сырые сокеты и частично исходящие;
XP SP2 с MS05-019 полностью поддерживает входящие сырые сокеты и некоторые исходящие;
Vista не поддерживает сырые сокеты (ограниченно поддерживает сырые сокеты для ICMP-протокола);
Win 7 ограниченно поддерживает сырые сокеты;
Server 2003 полностью поддерживает сырые сокеты после остановки брандмауэра ("net stop alg");
Server 2008

полностью поддерживает сырые сокеты после остановки брандмауэра («net stop alg»);

Mac OS X полностью поддерживает сырые сокеты;
Linux полностью поддерживает сырые сокеты;
xBSD полностью поддерживает сырые сокеты;