2010-10-25 6 views

ответ

1

Похоже, что вы хотите ioctl and SIOCGARP. Это позволит вам запросить кеш arp. Я предполагаю, что данный хост находится в вашей локальной сети или все, что вы собираетесь получить, это ваш маршрутизатор.

Вы также можете прочитать из/proc/net/arp, что кажется проще. Вам нужно будет сначала вернуть запрос arp, но вы будете делать это, независимо от того, делает ли ваш инструмент это или какая-либо сторонняя сторона делает запрос.

+0

Как я могу сделать запрос ARP для хоста, который не находится в таблице кеша ARP? Насколько я понимаю, я могу просто пинговать хост, но, возможно, есть формальный API для запроса ARP? – Dima

+0

Отправка дейтаграммы может быть самым простым способом, безусловно, легче, чем некоторые взаимодействия типа ioctl. –

+1

См. 'Man arping' –

0

В общем, MAC-адреса не имеют значения для удаленных целей. Они не являются маршрутизируемыми; маршрутизатор здесь, в моем офисе, не знает MAC-адреса сетевых карт через Интернет. Для этого предназначены IP-адреса. Вы имеете в виду только местные?

+0

Мне нужно отправить необработанные пакеты Ethernet, чтобы это сделать, мне нужно заполнить заголовок Ethernet, который содержит MAC-адреса источника и назначения. Я ищу способ, как я могу программным образом запросить MAC из кеша ARP, и если мой MAC не будет выполнять запрос ARP и вернуть мне результат. – Dima