2014-09-09 4 views
2

Привет, я написал один TCP-сервер, который работает по адресу IPv6. То, что сервер делает, принимает клиентское соединение с разных компьютеров в той же подсети и классифицирует клиентов на основе их MAC-адреса.Как получить адрес Mac адреса ipv6?

Для примера: Клиент A и B находятся на одной машине, а Клиент C - с другой машины. Когда клиент A, B и C подключены к серверу, сервер показывает, что клиент A и B находятся на одном компьютере, а клиент C - с другого компьютера.

Для этого я должен получить адрес mac с адреса клиента ipv6.

В адресах ipv4 я могу достичь этого, используя ioctl (mac_arp_sock, SIOCGARP, & areq);

как ARP doest не работает в IPv6, что является лучшим способом получить mac-адрес одноранговой машины, просто зная адрес IP-адреса peer?

ответ

2

Ну, как говорится в названии, SIOCG ARP использует Address Resolution Protocol, который является только IPv4. И как упоминается страница wiki: Протокол обнаружения соседей является ее преемником.

Итак, ранее вы могли использовать ioctl с SIOCGARP или «arp -a», которые использовали один и тот же сервер. И теперь вы должны начать подпроцесс/задание «NDP -па» и разобрать его стандартный вывод, который выглядит как:

Neighbor      Linklayer Address Netif Expire St Flgs Prbs 
fd00::xxxx:b1ff:xxxx:fc25  b8:xx:b1:xx:fc:xx en0 permanent R R 
xxxx::ca2a:xxxx:fe56:xxxx%en0 xx:2a:xx:56:xx:cc en0 23h17m41s S  
fe80::xxxx:14ff:xxxx:ca52%en0 c8:xx:14:xx:ca:xx en0 23h17m40s S  

См ссылочный: http://www.freebsd.org/cgi/man.cgi?format=html&query=ndp(8)

Дополнительно: Google для реализации НПР, например, BSD/OpenBSD/src/usr.sbin/ndp/ndp.c, если вы хотите реализовать его самостоятельно, не используя команду ndp.

+0

Спасибо за ваш ответ .. Я проверю этот вариант .. – Harish

+0

Команда ndp не найдена в ubuntu 12.04 – Harish

+0

Возможно, вам придется сначала установить ее. Существуют различные команды serval для выполнения подобных действий в разных Unix-системах. См. «NDPMon» (http://manpages.ubuntu.com/manpages/saucy/man8/ndpmon.8.html) или «ip» (http://manpages.ubuntu.com/manpages/lucid/en/man8/ ip.8.html # contenttoc7) –

Смежные вопросы