TL; DR & gt; Gli indirizzi MAC sono un componente di basso livello di una rete Ethernet (e alcuni altri standard simili, come il WiFi). Consentono a un dispositivo di comunicare con una macchina sulla rete fisica locale (LAN) e non possono essere instradati su Internet, perché in teoria l'hardware fisico potrebbe essere collegato in qualsiasi parte del mondo.
Al contrario, gli indirizzi IP coprono l'intero Internet ei router li utilizzano per capire dove inviare i dati anche se ha bisogno di più hop per raggiungere la destinazione, ma non sono utili per l'interfaccia con l'hardware fisico sulla rete locale.
Se mai abbiamo trovato uno standard migliore di Ethernet, potrebbe non utilizzare gli indirizzi MAC, ma il traffico IP da Internet potrebbe ancora scorrere attraverso di esso, anche se altre persone su Internet non ne avevano mai sentito parlare.
Se avessimo mai trovato uno standard migliore dell'IP (ad esempio IPv6 se tutti gli indirizzi IPv4 fossero esauriti), la maggior parte dell'hardware Ethernet potrebbe trasportare il nuovo tipo di traffico senza modifiche e un semplice aggiornamento software / firmware risolverebbe la maggior parte del resto.
Gli indirizzi MAC sono necessari per realizzare una rete locale Ethernet (o wifi). Consentono a un dispositivo di rete di attirare l'attenzione di un singolo dispositivo connesso direttamente, anche se la connessione fisica è condivisa. Questo può essere importante quando migliaia di dispositivi sono collegati insieme all'interno di una singola organizzazione. Non servono alcuna funzione su Internet più ampio.
Per comprendere veramente la risposta a questa domanda, è necessario comprendere il OSI (a volte noto come il modello a 7 strati) .
Affinché la comunicazione avvenga tra 2 applicazioni eseguite su macchine separate che non hanno una connessione fisica diretta, a lotto del lavoro deve aver luogo.
Nei tempi passati, ciascuna applicazione sapeva esattamente quali istruzioni del codice macchina dovevano essere eseguite per produrre un segnale appropriato che potesse raggiungere, e potrebbe essere decodificato, l'applicazione all'estremità. Tutte le comunicazioni erano effettivamente point-to-point e il software doveva essere scritto per adattarsi alla situazione esatta in cui doveva essere distribuito. Ovviamente, quello era insostenibile.
Invece di questo, il problema della rete era diviso in livelli, e ogni livello sapeva come parlare al livello corrispondente su una macchina remota, e come comunicare con il livello sottostante (e talvolta sopra) sulla sua macchina locale. Non conosceva assolutamente alcuno degli altri livelli, quindi il tuo browser non ha bisogno di sapere se è in esecuzione su una macchina che utilizza un token ring, una rete ethernet o una rete wifi e sicuramente non ha bisogno di sapere quale hardware la macchina remota utilizza.
Per fare in modo che funzioni, il modello a 7 livelli utilizza un sistema come inviluppi annidati; l'applicazione crea i suoi dati e li avvolge in una busta per il sistema operativo da consegnare. Il sistema operativo lo avvolge in un'altra busta e lo passa al driver di rete. Il driver di rete lo avvolge in un'altra busta e lo mette sul cavo fisico. E così via.
Lo strato inferiore, strato 1 , è il livello fisico. Questo è lo strato di fili e transistor e onde radio, ea questo livello la comunicazione è per lo più solo un flusso di uni e di zeri. I dati vanno ovunque che è fisicamente connesso. Si collega la porta di rete del computer allo switch utilizzando un cavo CAT-5.
Livello 2 è il livello di collegamento dati. Ciò fornisce una certa struttura a quelli e a zero, alcune capacità di rilevamento e correzione degli errori e alcune indicazioni su quale dispositivo fisicamente connesso (le connessioni fisiche qui possono effettivamente essere oltre il wifi) dovrebbero prestare attenzione al messaggio. Questo è il livello in cui entrano in gioco gli indirizzi MAC, e ci torneremo più tardi. Ma gli indirizzi MAC non sono l'unica possibilità a questo livello. Le reti di token ring, ad esempio, necessitano di un'implementazione diversa del collegamento dati.
Livello 3 è il livello di rete. Questo è il livello su cui lavora l'IP (sebbene non sia l'unico protocollo di livello di rete), ed è questo che consente ai computer di inviare un messaggio che può arrivare a qualsiasi computer in qualsiasi punto della "rete". Non è necessario che ci sia una connessione diretta tra le macchine in questione.
Livelli 4-7 sono protocolli di livello superiore. Si allontanano sempre più dall'hardware e si avvicinano all'applicazione. Il protocollo TCP, ad esempio, si trova sopra l'IP e fornisce meccanismi che inviano automaticamente i messaggi quando mancano.
Quindi gli indirizzi MAC funzionano su Layer 2 e consentono a 2 macchine fisicamente connesse l'una con l'altra di inviare messaggi che verranno ignorati da altre macchine che condividono la stessa connessione fisica.
Supponiamo che io abbia un'applicazione che vuole inviare alcuni dati alla macchina con indirizzo IP 8.8.8.8
Il Layer 3 avvolge i dati in una busta che contiene, tra le altre cose, l'indirizzo IP 8.8.8.8 e passa quindi al livello 2.
Il livello 2 esamina questo indirizzo IP e decide a quale macchina a cui è collegato direttamente è in grado di gestire questo messaggio. Avrà una tabella di ricerca di una selezione degli indirizzi IP collegati direttamente insieme al corrispondente indirizzo MAC della scheda di rete in quella macchina. Questa tabella di ricerca è costruita utilizzando un protocollo chiamato ARP, che consente a una scheda di rete di porre domande agli altri dispositivi connessi direttamente. Ethernet riserva uno speciale indirizzo MAC, FF: FF: FF: FF: FF: FF, che consente a un dispositivo di parlare con tutti dispositivi connessi fisicamente.
Se l'indirizzo IP è nella tabella (o può essere risolto tramite ARP), avvolgerà la busta Layer 3 in una busta Layer 2 con l'indirizzo MAC nella nuova intestazione, quindi passerà l'intero bundle all'hardware a livello 1 La scheda di rete con l'indirizzo MAC corrispondente riceverà il messaggio e il driver di rete aprirà la busta Layer 2 e passerà il contenuto fino a qualsiasi parte del sistema operativo si aspetti di ricevere messaggi all'indirizzo IP specifico.
In alternativa, se l'indirizzo IP non è sulla rete locale, la nuova busta avrà l'indirizzo MAC del gateway predefinito (cioè il router) configurato per questa interfaccia di rete e l'hardware trasferirà il pacchetto al router.
Il router rileva il proprio indirizzo MAC nella busta del livello 2 e apre il pacchetto di livello 2. Osserva l'indirizzo IP sulla busta di livello 3 e risolve il punto in cui dovrà passare il messaggio successivo, che probabilmente sarà il router dell'ISP. Se il router utilizza NAT (o simili), potrebbe anche modificare la busta di livello 3 a questo punto, per mantenere privati gli indirizzi IP interni. Quindi avvolgerà la busta di livello 3 in una nuova busta di livello 2 indirizzata all'indirizzo MAC del router dell'ISP e invierà il messaggio lì.
Questo processo di rimuovere la busta esterna e avvolgere il contenuto in una nuova busta indirizzata alla fase successiva della catena continuerà fino a quando il messaggio raggiunge la macchina di destinazione.
Le buste continueranno quindi a essere strappate via quando il messaggio risalirà gli strati fino a raggiungere il destinatario previsto, che sarà un'applicazione da qualche parte che, si spera, saprà cosa fare con il messaggio, ma non avrà idea di come messaggio arrivato lì e in effetti tutti i passaggi necessari per ottenere la risposta alla macchina originale.
Ma funziona tutto, quasi come per magia!
Si noti che gli switch di rete possono utilizzare gli indirizzi MAC per ottimizzare il flusso del traffico di rete. Mentre un hub ethernet inoltra semplicemente tutto il traffico in entrata a tutte le sue porte, al contrario uno switch può inoltrare il traffico solo alla singola porta a cui è connesso l'indirizzo MAC di destinazione del pacchetto. Ciò aumenta l'effettiva larghezza di banda della rete; puntando porte specifiche, lo switch evita l'inoltro del traffico su segmenti non necessari della rete. Lo switch utilizzerà ARP o packet sniffing per identificare quali dispositivi sono connessi a quale porta. Gli switch ignorano completamente il contenuto dei pacchetti Layer 2.