PROGRAMMIAMO
Internet - Address Resolution Protocol
Perché due diversi indirizzi?

A questo punto ovviamente sorge spontanea la domanda di qual è la differenza pratica fra IP address e MAC address e perché non basta usarne soltanto uno (il MAC o l'IP) per identificare un PC in rete.

Abbiamo detto che il MAC address è l'indirizzo fisico di ogni scheda di rete. Si tratta di un numero univoco attribuito dal costruttore a ogni scheda di rete e, almeno in teoria, tale numero identifica univocamente una singola scheda di rete fra i milioni esistenti al mondo. Possiamo fare un paragone col codice fiscale di una persona. Anche qui si tratta di un codice univoco che identifica ogni singola persona in Italia.

In teoria sarebbe pensabile di usare il codice fiscale per specificare ogni persona e in effetti in molti casi si fa proprio così. Ma immaginiamo di dover spedire una lettera: in questo caso il codice fiscale non è certo il modo più comodo per indicare il destinatario! Infatti usando il codice fiscale bisognerebbe prevedere un meccanismo (a livello di ufficio postale) in grado di tradurre tale codice nell'indirizzo civico necessario al postino per effettuare la consegna. Inoltre una persona potrebbe cambiare il proprio indirizzo civico di residenza nel corso della vita, mentre il codice fiscale non cambia mai. Infine in uno stesso numero civico potrebbero risiedere più persone con codici fiscali diversi.

Qualcosa di simile avviene nel mondo dei computer collegati in rete. L'indirizzo IP è una specie di indirizzo civico, cioè un indirizzo virtuale (cioè non fisso, modificabile dinamicamente) che permette più facilmente di risalire a un singolo host all'interno di una rete (esattamente come l'indirizzo civico è più comodo per rintracciare il destinatario rispetto al codice fiscale, il quale non è strutturato in modo da identificare facilmente città e via di residenza). Come accade per l'indirizzo di residenza, anche l'indirizzo IP può dunque cambiare.

Invece il MAC address (come il codice fiscale) non può mai essere modificato. Esso inoltre non fornisce nessuna informazione su dove si trova il destinatario (nel caso specifico, dove si trova l'host con quella particolare scheda di rete). Infine gli apparati di rete possono essere sostituiti (per esempio perché si guastano) e ciò fa cambiare i MAC address: invece l'indirizzo IP non cambia quando sostituiamo la nostra scheda di rete, perché viene assegnato in modo non permanente.

Un altro paragone che può aiutare a capire la differenza: il MAC address è come il numero di codice di un motore, mentre l'indirizzo IP è come il numero di targa del veicolo.

Riassumendo: il MAC address è permanente, immodificabile, memorizzato in modo hardware su ogni scheda di rete. Si tratta, in ultima analisi, del vero indirizzo che identifica un nodo all'interno di una rete locale. Viceversa l'indirizzo IP è virtuale, cioè può essere modificato e consente di indirizzare in modo più efficienti i computer all'interno di diverse sottoreti.

Address Resolution Protocol (ARP)

A livello hardware, all'interno di una sottorete l'indirizzo che viene veramente usato per stabilire la connessione fra i due computer è il MAC address, non l'indirizzo IP. Per esempio lo switch (un dispositivo di rete che vedremo più avanti e che serve per collegare fra loro più PC), memorizza nella propria tabella interna gli indirizzi MAC dei computer ad esso collegati, non gli indirizzi IP. Sorge dunque il problema di come fare per tradurre gli indirizzi IP usati dalle applicazione di rete ad alto livello negli indirizzi MAC usati invece a basso livello.

Il protocollo ARP (Address Resolution Protocol) permette di conoscere l'indirizzo fisico di una scheda di rete corrispondente ad un dato indirizzo IP, ed è per questo che si chiama Protocollo di risoluzione d'indirizzo.

Quando un dispositivo di rete (per esempio un PC in una LAN) vuole comunicare con un altro dispositivo, l'indirizzo del destinatario viene indicato per mezzo del suo IP address. Tale indirizzo deve però essere tradotto in un indirizzo fisico (MAC address) per permettere al messaggio di giungere effettivamente a destinazione. A tale scopo ogni host di rete mantiene internamente una tabella (ARP table) in cui viene indicata la corrispondenza fra MAC address e IP address degli altri dispositivi presenti nella rete, in modo da poter effettuare velocemente la conversione.

Tuttavia all'inizio la ARP table è vuota e viene riempita via via che l'host conosce gli altri host presenti nella rete. Se dunque un host si trova di fronte a un indirizzo IP che non sa tradurre in un indirizzo MAC (perché è la prima volta che avviene la comunicazione e dunque tale indirizzo non è presente nella ARP table), esso invia a tutti gli altri host della rete (in broadcast, come si dice in termine tecnico) un messaggio di richiesta ARP. Il messaggio viene ricevuto da tutti gli altri host nella rete, ma solo quello che corrisponde all'indirizzo IP cercato riconoscerà il proprio IP e risponderà alla richiesta fornendo il proprio MAC address.

Si osservi a questo proposito la figura seguente:

ARP Request and Reply

Il PC di indirizzo 192.168.0.3 vuole comunicare con 192.168.0.1, ma non conosce il suo MAC address. A tale scopo invia un ARP REQUEST a tutta la rete (in questo caso anche al PC di indirizzo 192.168.0.2), ma solo 192.168.0.1 riconosce il proprio IP e risponde con un ARP REPLY nel quale fornisce il proprio MAC address.

 

Video lezione 6: il protocollo ARP

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it