Сырой сокет (англ. 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
|
полностью поддерживает сырые сокеты;
|
Ссылки