Программное использование ARP

Мне нужен некоторый код C или C++, компилируемый под Linux, чтобы иметь возможность взять список IP-адресов некоторого произвольного количества удаленных хост-компьютеров и получить MAC-адрес Ethernet для каждого из них. Эти хост-компьютеры могут находиться в одной подсети или в другой подсети за маршрутизатором. Это нормально, если MAC-адрес некоторых или всех удаленных хостов является адресом интерфейса на маршрутизаторе. В конечном счете, я хочу передать IP-адрес и MAC-адрес FPGA, который будет использовать эти фрагменты информации для форматирования и отправки пакетов UDP/IP через Ethernet на хосты. Очевидно, что FPGA также получит свой собственный MAC-адрес и IP-адрес для заполнения исходных MAC-адресов и исходных IP-адресов в пакетах.

Есть ли какой-то код, на который я могу указать, который может создавать и транслировать пакеты ARP на эти удаленные машины и получать обратно пакеты ответов ARP, чтобы можно было извлечь MAC-адреса назначения?


person sizzzzlerz    schedule 16.03.2010    source источник
comment
См. Сетевое программирование UNIX.   -  person    schedule 16.03.2010


Ответы (2)


Часть того, что вы хотите сделать, требует некоторого программирования необработанных сокетов.

http://mixter.void.ru/rawip.html

Исходный код команды linux arp даст все остальное, что вам нужно. Вот ссылка:

http://www.comp.nus.edu.sg/~cs4236/readings/out/html/arp_8c-source.html

person Joshua Smith    schedule 16.03.2010

Я рекомендую изучить arping, который выполняет несколько идентичную работу. Он принимает IP-адреса и MAC-адреса и пытается получить дополнительную информацию. Или просто пингует их.

http://freshmeat.net/projects/arping/

person lhw    schedule 16.03.2010