Comment obtenir une adresse MAC distante via IPv6 dans iOS programmatically

j'ai besoin de trouver une solution comment obtenir L'adresse MAC de l'autre périphérique dans le réseau WiFi. Il y a une bonne méthode pour faire cela pour IPv4 ( comment iOS app Fing obtenir L'adresse MAC? ), mais comment faire pour IPv6? Comme L'ARP a été remplacé par le NDP (Neighbour Discovery Protocol), cette dernière méthode ne fonctionne pas. Je vous serais très reconnaissant si quelqu'un pouvait m'aider.

22
demandé sur Cœur 2016-07-10 07:59:43

2 réponses

couche et Encapsulation

l'architecture de réseau est stratifiée, la couche supérieure englobe les différentes implémentations de la couche inférieure et fournit une abstraction plus élevée par rapport à la couche inférieure. La couche réseau qui utilise IP encapsule différents protocoles de couches de liens, comme Ethernet, WiFi, PPP (qui peut fonctionner sur un câble série qui n'utilise pas D'adresse MAC), etc.

  • le premier problème est donc que voulez-vous dire par remote ?

si vous voulez dire d'autres hôtes dans WAN, c'est impossible à moins que les deux périphériques implémentent un protocole spécifique: vous envoyez une requête à ces périphériques, ils répondent avec son adresse mac.

si vous voulez dire un autre hôte dans le même réseau local, vous pouvez utiliser le protocole ARP dans IPv4 et NDP (which ) dans IPv6.

Arp & NDP

ARP envoyer la diffusion en LAN quand il connaît L'adresse IP d'un hôte mais pas L'adresse MAC, puis le les hôtes qui trouvent quelqu'un l'appelle pour lui répondre son adresse MAC.

NDP fournit deux parties principales de la fonctionnalité, la première est la même avec ARP: la cartographie entre le réseau - et les adresses de couche de lien. (La différence est NDP utilisant une adresse multicast: préfixe f02::1:f/104, combiné avec le bas de gamme 24 bits de L'adresse IPv6 sollicitée)

donc ce dont vous avez besoin est d'envoyer un message de sollicitation de voisinage ICMPv6.

Affectation De L'Adresse en IPv6

lien-adresses IPv6 locales (et quelques adresses IPv6 mondiales) utilisez des identificateurs d'interface (IID) comme base pour l'assignation d'adresse IPv6 unicast. ... Les IID ont habituellement une longueur de 64 bits et sont formés soit directement à partir de L'adresse MAC sous-jacente d'une interface réseau en utilisant un format EUI-64 modifié. ou par un autre processus qui randomise la valeur dans l'espoir de fournir un certain degré de protection de la vie privée par rapport au suivi des adresses.

ainsi, dans les cas les plus courants, vous pouvez obtenir l'adresse MAC d'un périphérique directement à partir de leur adresse IPv6 link local.

Conclusion:

  • implémenter votre protocole dans les deux dispositifs
  • envoyer le message NDP au noeud sollicité s'il est dans le même LAN
  • extraire L'adresse MAC à partir de l'adresse IPv6 locale lien

Ref

  • Wikipedia
  • TCP / IP Illustrated, volume 1
4
répondu Tony 2017-05-07 01:08:29

j'utilise MMLanScan à cette fin. Il est très simple de travailler pour trouver les adresses IP/MAC des appareils sur votre LAN.

Je l'ai utilisé il y a quelque temps mais je pense que ça fonctionne aussi avec IPv6.

3
répondu sergiog90 2017-05-03 09:29:39