URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1989
[ Назад ]

Исходное сообщение
"ARP & RAW_SOCKET"

Отправлено dmitry , 15-Авг-03 00:14 
Вопрос, конечно, дурацкий...
Нужно сделать запрос RARP.
Я знаю формат ip пакета для ARP/RARP. Знаю, что создать сокет надо SOCK_RAW и указать IPPROTO_RAW.
делаю это так:
fd = socket( PF_INET, SOCK_RAW, IPPROTO_RAW);
char packet[72];
sockaddr_in addr;
memset( packet, 0, 72);
// формирую пакет
....
sendto( fd, packet, 72, 0, ( sockaddr *)&addr, sizeof( addr));

теперь вопрос к знатокам:
1) какой addr делать?
2) в packet должен быть полностью ip-пакет или только его RARP-часть?
(писать ли вначале приемник, передатчик, тип?)

WBR, Dvorkin


Содержание

Сообщения в этом обсуждении
"ARP & RAW_SOCKET"
Отправлено Dvorkin , 15-Авг-03 12:34 
>Вопрос, конечно, дурацкий...
>Нужно сделать запрос RARP.
>Я знаю формат ip пакета для ARP/RARP. Знаю, что создать сокет надо
>SOCK_RAW и указать IPPROTO_RAW.
>делаю это так:
>fd = socket( PF_INET, SOCK_RAW, IPPROTO_RAW);
>char packet[72];
>sockaddr_in addr;
>memset( packet, 0, 72);
>// формирую пакет
>....
>sendto( fd, packet, 72, 0, ( sockaddr *)&addr, sizeof( addr));
>
>теперь вопрос к знатокам:
>1) какой addr делать?
>2) в packet должен быть полностью ip-пакет или только его RARP-часть?
>(писать ли вначале приемник, передатчик, тип?)
>
>WBR, Dvorkin


Вопрос был задан некорректно - простите, было поздновато...
Перефразирую.

Вот я открыл SOCK_RAW.
Для отправки RARP - запроса нужно сформировать Ethernet-кадр вида:
MAC передатчика, MAC приемника, тип пакета(езернет заголовок) + RARP-данные. SOCK_RAW позволяет ли мне указать MAC получателя в заголовке Ethernet, или сетевая подсистема подставляет его сама на основе sockaddr? Если так, то чем надо пользоваться для самостоятельного формирования полного Ethernet-пакета? А может лучше формировать Multicast адрес получателя?

WBR, Dvorkin


"ARP & RAW_SOCKET"
Отправлено qq , 15-Авг-03 18:45 
вот ты передаешь буффер в sendto, это будет полный пакет ethernet, начиная с   destination mac