Ответ 1
Слой и инкапсуляция
Сетевая архитектура является многоуровневой, верхний уровень инкапсулирует различные реализации нижнего уровня и обеспечивает более высокую абстракцию относительно нижнего уровня. Сетевой уровень, который использует IP, инкапсулирует различные протоколы уровня канала, такие как Ethernet, WiFi, PPP (который может работать по последовательному кабелю, который не использует MAC-адрес) и т.д.
- Итак, первая проблема заключается в том, что вы подразумеваете под
remote
?
Если вы имеете в виду другие хосты в WAN, это невозможно, если оба устройства не реализуют конкретный протокол: вы отправляете запрос на это устройство, они отвечают своим MAC-адресом.
Если вы имеете в виду другой хост в той же локальной сети, вы можете использовать протокол ARP в IPv4 и NDP (который) в IPv6.
Arp и NDP
ARP отправляет широковещательную рассылку в локальной сети, когда она знает IP-адрес хоста, но не MAC-адрес, а затем узлы, которые находят кого-то, требуют от него ответа на свой MAC-адрес.
NDP предоставляет две основные части функциональности, первая - с ARP: сопоставление между адресами сетевого и канального уровня. (Разница заключается в NDP с использованием адреса многоадресной рассылки: префикс f02:: 1: f/104, в сочетании с 24 битами младшего порядка запрашиваемого адреса IPv6)
Итак, вам нужно отправить сообщение ICMPv6 Neighbor Solicitation.
Назначение адресов в IPv6
Локальные IPv6-адреса (и некоторые глобальные адреса IPv6) используют идентификаторы интерфейса (IID) в качестве основы для назначения одноадресного IPv6-адреса.... IID обычно составляют 64 бита и формируются либо непосредственно из MAC-адреса базового уровня сетевого интерфейса с использованием модифицированного формата EUI-64. или другим процесс, который рандомизирует ценность в надежде обеспечить некоторую степень конфиденциальности при отслеживании адресов.
Таким образом, в наиболее распространенных случаях вы можете получить MAC-адрес устройства непосредственно со своего локального адреса ссылки IPv6.
Вывод:
- реализовать ваш протокол в обоих устройствах
- отправить сообщение NDP в запрошенный node, если он находится в той же локальной сети
- извлечь MAC-адрес из локального IPv6-адреса
Ссылка
- Wikipedia
- TCP/IP Illustrated, том 1