Come vengono associati gli indirizzi IP agli indirizzi MAC?


14

Ho letto delle differenze tra indirizzi MAC e IP e perché abbiamo bisogno di entrambi.

Per riassumere, gli indirizzi MAC sono ID univoci immutabili fisici per ogni singolo dispositivo mentre gli indirizzi IP sono assegnati, modificabili e virtuali. Per analogia, gli indirizzi MAC sono come le persone che hanno nomi permanenti e gli indirizzi IP sono dove vivono attualmente.

Nel mondo reale, colleghiamo indirizzi e nomi con l'aiuto di una rubrica. Quale meccanismo collega gli indirizzi IP agli indirizzi MAC e dove si trova questo meccanismo nella rete?


5
Dopo aver esaminato le tue domande, penso che trarrai beneficio da un buon libro. Prendi in considerazione l'idea di studiare qualcosa sulla falsariga di TCP / IP Illustrated, vol. 1: The Protocols by Stevens (FYI, l'edizione del 1993 è generalmente considerata migliore della riedizione del 2011, sebbene l'edizione del 1993 copra solo IPv4 in profondità).
Mike Pennington,

"La rete illustrata: come funziona TCP / IP in una rete moderna" e / o "Guida TCP / IP: un riferimento completo e illustrato ai protocolli Internet" potrebbe valere la pena di dare un'occhiata.
Jens Link,

4
@MikePennington Grazie, è un bel modo di esprimerlo, al contrario di un "RTFM" e un -1. Lo sto leggendo ora online :)
CodyBugstein il


1
Gli indirizzi MAC non sono, in realtà, né fisici, né immutabili, né unici. Ho visto dispositivi che randomizzano il loro MAC ad ogni riavvio. Esistono sicuramente utility per qualsiasi piattaforma per modificare temporaneamente o permanentemente il MAC di quasi tutte le interfacce. iOS 8 renderà anche casuale il MAC wifi per le reti di scansione.
MacLemon,

Risposte:


19

Il meccanismo si chiama Address Resolution Protocol (ARP) . Tutti gli ARP per dispositivi IPv4 Ethernet per risolvere gli indirizzi mac Ethernet per gli IP di destinazione. I mapping da IP a mac sono memorizzati nella tabella ARP di ciascun dispositivo (la rubrica nella tua analogia).

Per semplificare: nella maggior parte dei casi, per risolvere l'indirizzo MAC associato a un indirizzo IP, si invia un pacchetto ARP broadcast (a tutti i dispositivi della rete), chiedendo chi ha quell'indirizzo IP. Il dispositivo con quell'indirizzo IP risponde all'ARP (con il suo indirizzo MAC).


penso che la maggior parte delle volte alzi semplicemente da un tavolo ARP locale. Solo la prima volta che deve fare una trasmissione
Cruncher,

^ sì, ovviamente, dopo aver scoperto il MAC dei dispositivi, memorizza in una tabella ARP per un po 'di tempo (un paio di minuti), quindi non deve ripetere il processo di query ARP per ogni pacchetto.
mulaz,

Oh, non mi rendevo conto che è caduto il tavolo dopo un paio di minuti. Ho pensato che fosse rimasto per un po '. Ciò significa che il veleno ARP è necessario inviare risposte ARP quasi frequentemente?
Cruncher,

Sì, e l'host "reale", non deve inviare alcun pacchetto alla macchina avvelenata, altrimenti la macchina memorizzerà il MAC "reale".
mulaz,

1
A seconda di ciò che stai cercando di ottenere.
mulaz,

13

Poiché la domanda è stata taggata con IPv6, risponderò perché IPv6 è molto diverso da IPv4.

Per cominciare, non esiste ARPv6. Il mapping tra gli indirizzi di livello 2 e IPv6 viene eseguito dal Neighbor Discovery Protocol (NDP), che viene inviato tramite ICMPv6. Pertanto, non è necessario ignorare ICMPv6 e filtrarlo via, come è l'usanza con IP legacy. L'NDP fornisce due tipi di messaggi che sono interessanti qui: Neighbor Solicitation e Neighbor Advertisement. Un nodo che desidera apprendere un indirizzo a livello di collegamento per un determinato indirizzo IP invia una sollecitazione Neighbor al corrispondente indirizzo multicast di nodo sollecitato link-local - non è più possibile trasmettere IPv6.

Ad esempio, se l'indirizzo in questione è 2001:db8::0011:2233:4455:6677, allora l'indirizzo multicast del nodo richiesto corrispondente è ff02::1:ff55:6677e l'indirizzo multicast Ethernet corrispondente è 33:33:ff:55:66:77. Tutti i nodi con un indirizzo che termina *55:6677appartengono a quel gruppo multicast e lo ascolteranno - questo è molto probabilmente solo il sistema di destinazione stesso. Neighbor Solicitation contiene anche gli indirizzi unicast IPv6 e l'indirizzo MAC del sistema di sollecitazione.

Alla ricezione, il nodo di destinazione risponde con l'annuncio Neighbor, che viene inviato all'indirizzo unicast (livello di collegamento e IPv6) del nodo sollecito. Pertanto, il nodo sollecito apprende l'indirizzo MAC del nodo target.

E sì, lo spoofing NDP funziona in modo molto simile allo spoofing ARP. E no, IPsec non è la risposta.


"Lo stesso ARP non può essere utilizzato, perché è stato creato per indirizzi di livello di rete a 4 byte (cioè IPv4). " Questo non è vero. ARP utilizza i campi di lunghezza dell'indirizzo per specificare la lunghezza dell'indirizzo (fino a 255 ottetti) per gli indirizzi di livello 2 e livello 3 (vedere RFC 826). Il motivo per cui ARP non può essere utilizzato con IPv6 è perché IPv6 non ha trasmesso.
Ron Maupin

1
L'ARP è stato sostituito con NDP nella v6 per motivi di sicurezza (e quindi, come tutti i buoni protocolli adiacenti alla v6, ha avuto un notevole creep di funzionalità), non perché la v6 non ha trasmesso - ARP utilizza solo la trasmissione L2 e avrebbe potuto essere facilmente estesa per fornire indirizzi v6.
Nick Bastin,

2
In primo luogo, non so se l'ARP sia stato sostituito per motivi di sicurezza. A mio avviso, c'era il desiderio di coprire tutti i protocolli di controllo di ICMPv6. Come effetto collaterale, sì, puoi proteggere ICMPv6 con IPsec. Tuttavia, IPsec richiede uno scambio di chiavi e IKE funziona su UDP, che richiede un indirizzo IP. Un compito di NDP è di negoziare un indirizzo IP e lo scambio manuale di chiavi non si ridimensiona, quindi l'idea di NDP + IPsec = NDP sicuro non funziona in questo modo. Alternative come SeND non sono decollate (e probabilmente non lo faranno mai). Alla fine non vedo alcun vantaggio in termini di sicurezza di NDP rispetto a ARP.
contromodale

4

La risposta migliore è buona. Nel caso in cui aiuti, ecco una descrizione in termini di analogia della rubrica. Termini di rete reali tra parentesi.

In base al loro nome (indirizzo IP) sai che vivono nel tuo quartiere (dominio di trasmissione). Per prima cosa guardi nella tua rubrica (cache ARP) per vedere se conosci già il loro indirizzo (indirizzo MAC). Se non sono nella rubrica, esci e gridi (trasmetti), "Dove vive Steve?" Abbastanza forte da essere ascoltato da tutti (richiesta ARP). Supponendo che Steve viva effettivamente lì ed è sveglio, risponde - solo a te, non urlando - "Ecco il mio indirizzo" (risposta ARP). Lo annoti nella tua rubrica per riferimento futuro (memorizzazione nella cache ARP).


Sicuro. È stato un esercizio divertente per me. Le cose reali come la trasmissione / unicast non si mappano perfettamente sull'analogia (gridando / parlando / posta?), Quindi prendi un po 'di sale.
Jacktose,

All'editore: ho usato l'indirizzo più avanti nell'analogia, per MAC.
Jacktose,

2
  1. Gli indirizzi MAC possono essere modificati. Su Linux usa ip o ifconfig per la maggior parte di Windows guarda le impostazioni del driver della tua interfaccia di rete.

  2. Non converti nulla. Gli indirizzi MAC sono su Layer-2, IP su Layer-3 del modello OSI. Per IPv4 l'ARP viene utilizzato per scoprire quale indirizzo MAC (Layer-2) appartiene a un determinato indirizzo IP (Layer-3). Per IPv6 viene utilizzato ICMPv6 (Neighbor Discovery).


Mi dispiace, avrei dovuto dire "tradurre" non "convertire"
CodyBugstein il

0

Address Resolution Protocol (ARP)

Indirizzo IP ---> ARP ---> Indirizzo MAC

Indirizzo MAC ---> RARP ---> Indirizzo IP

Indirizzo IP = indirizzo logico [32 bit]

Indirizzo MAC = indirizzo fisico [48 bit]

Network Layer (IP) ----> ARP ---> Data Link Layer (MAC)

L'indirizzo IP è necessario nel livello di rete per identificare un host di origine / destinazione.

L'indirizzo MAC è necessario nel livello collegamento dati per identificare un host di origine / destinazione.


Non sei corretto su RARP (molte persone hanno questa idea errata). Questo è qualcosa che era usato da un host per determinare il proprio indirizzo IP, non gli indirizzi IP di altri host. Non è più utilizzato
Ron Maupin

0

Lo stack di rete cerca prima l'IP di destinazione nella sua tabella di routing, da questo determina due cose.

  1. Con quale interfaccia deve essere inviato il pacchetto.
  2. Qual è l'indirizzo IP dell'hop successivo. Se nessun hop successivo è specificato nella tabella di routing, l'IP della destinazione viene utilizzato come hop successivo.

Si noti che l'indirizzo IP dell'hop successivo è un concetto puramente locale, non diventa mai parte di un pacchetto inviato sul filo.

Se il pacchetto deve essere inviato su un livello di collegamento multipunto (ad es. Ethernet ecc.), Il sistema operativo cerca l'hop successivo nella sua tabella arp (ipv4) o di scoperta del vicino (ipv6). Se trova una voce non obsoleta lì, ha l'indirizzo MAC di cui ha bisogno e può inviare il pacchetto.

Se non ha una voce utilizzabile, mette in attesa i pacchetti destinati a quell'hop successivo e invia una richiesta per trovare l'indirizzo MAC. I meccanismi qui differiscono leggermente tra v4 e v6.

Nella v4 le richieste arp vengono inviate. Questo è normalmente trasmesso ma in alcuni casi se l'host ha una voce non aggiornata può provare prima una richiesta unicast e ricorrere alla trasmissione solo se fallisce. La risposta è normalmente unicast.

Nella v6 neigbour le richieste di sollecito vengono inviate a un indirizzo multicast generato dall'indirizzo hop successivo. Il bersaglio risponde con un annuncio unicast vicino. Gli host possono anche inviare messaggi pubblicitari vicini al gruppo "all-nodes multicast" (noto anche come broadcast efficace) per aggiornare le voci nelle loro cache di rilevamento dei vicini peer.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.