Сырой сокет
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 28 мая 2019 года; проверки требуют 3 правки.
Сырой сокет (англ. 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 | полностью поддерживает сырые сокеты; |