Здравствуйте, Bugas, Вы писали:
B>клиент и сервер, клиент шлёт ICMP заголовок сервер должен
B>принять, но только вот ничего он не принимает, точнее
B>принимает если поле ICMP заголовка icmp_type установлено в
B>ECHO_REQUEST ну или другие значения xxx_REQUEST, ясно что сервер
B>принимает пакеты "отражённые" от самого ядра ОС и принимает
B>соответственно не ICMP пакет, а IP пакет созданные ядром, а
Ну, во-первых, что значит "отражённые" от самого ядра? Прошедшие через ядро?
Если да, то как иначе вы хотите получить пакет, прямо из провода?

Во-вторых, ICMP датаграмма инкапсулирована в IP-датаграмму.
В-третьих, сдаётся мне, что вы при чтении вы не учитываете, что в буфере сначала идёт IP заголовок, а потом уже ICMP.
Сместитесь в буфере на размер IP заголовка и получите то, что вам нужно.
B>хотелось бы принимать все ICMP пакеты не через ядро, а
B>непосредственно своим сервером т.е. ICMP пакеты с заголовками
B>любого типа и кода. Возможно ли такое?
Т.е. вы хотите добавить недостающих типов ICMP сообщений?
Здравствуйте, Bugas, Вы писали:
B>Будьте добры отведте кто сталкивался с Raw Sockets и
B>непосредственно ICMP протоколом. Создал 2 процесса
B>клиент и сервер, клиент шлёт ICMP заголовок сервер должен
B>принять, но только вот ничего он не принимает, точнее
B>принимает если поле ICMP заголовка icmp_type установлено в
B>ECHO_REQUEST ну или другие значения xxx_REQUEST, ясно что сервер
B>принимает пакеты "отражённые" от самого ядра ОС и принимает
Понял в чём проблема. Видимо, выход только 1 — режим приёма всех пакетов.
См. про WSAIoctl/ioctlsocket и SIO_RCVALL. Либо WinPCAP/WinPckFilter + фильтр на протокол ICMP.