Raw Sockets & ICMP Protocol
От: Bugas  
Дата: 05.07.04 20:45
Оценка:
Привет всем!
Будьте добры отведте кто сталкивался с Raw Sockets и
непосредственно ICMP протоколом. Создал 2 процесса
клиент и сервер, клиент шлёт ICMP заголовок сервер должен
принять, но только вот ничего он не принимает, точнее
принимает если поле ICMP заголовка icmp_type установлено в
ECHO_REQUEST ну или другие значения xxx_REQUEST, ясно что сервер
принимает пакеты "отражённые" от самого ядра ОС и принимает
соответственно не ICMP пакет, а IP пакет созданные ядром, а
хотелось бы принимать все ICMP пакеты не через ядро, а
непосредственно своим сервером т.е. ICMP пакеты с заголовками
любого типа и кода. Возможно ли такое?
Использую WinXP, SDK и Winsock2.
Заранее благодарен.
Re: Raw Sockets & ICMP Protocol
От: butcher Россия http://bu7cher.blogspot.com
Дата: 06.07.04 05:08
Оценка: 3 (1)
Здравствуйте, 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 сообщений?

Нет ничего невозможного..
Re: Raw Sockets & ICMP Protocol
От: butcher Россия http://bu7cher.blogspot.com
Дата: 06.07.04 12:34
Оценка: 3 (1)
Здравствуйте, 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.

Нет ничего невозможного..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.