Passa al contenuto principale

9. Esempio (Example)

Siano le macchine X e Y sullo stesso cavo Ethernet 10Mbit. I loro indirizzi Ethernet sono rispettivamente EA(X) ed EA(Y), e i loro indirizzi DOD Internet rispettivamente IPA(X) ed IPA(Y). Sia ET(IP) il tipo Ethernet per Internet. La macchina X è appena stata avviata e prima o poi dovrà inviare un pacchetto Internet alla macchina Y, anch'essa sullo stesso cavo. X sa di dover inviare a IPA(Y) e comunica al driver hardware (qui il driver Ethernet) l'indirizzo IPA(Y). Il driver consulta il modulo di risoluzione degli indirizzi per convertire <ET(IP), IPA(Y)> in un indirizzo Ethernet a 48 bit, ma poiché X è appena stata avviata non dispone di questa informazione. Scarta il pacchetto Internet e crea invece un pacchetto di risoluzione degli indirizzi con il seguente contenuto:

(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = don't care
(ar$tpa) = IPA(Y)

e lo trasmette in broadcast a tutti gli host sul cavo.

La macchina Y riceve questo pacchetto, verifica di supportare il tipo di hardware (Ethernet), il protocollo indicato (Internet) e che il pacchetto è destinato a essa ((ar$tpa)=IPA(Y)). Registra (sostituendo eventualmente qualsiasi voce esistente) la mappatura <ET(IP), IPA(X)> su EA(X). Nota quindi che si tratta di una richiesta, scambia i campi, inserisce EA(Y) nel nuovo campo indirizzo Ethernet del mittente (ar$sha), imposta il codice operativo su reply e invia il pacchetto direttamente (non in broadcast) a EA(X). A questo punto Y sa come inviare a X, ma X non sa ancora come inviare a Y.

La macchina X riceve il pacchetto di risposta da Y, forma la mappatura da <ET(IP), IPA(Y)> a EA(Y), nota che il pacchetto è una risposta e lo scarta. La prossima volta che il modulo Internet di X tenterà di inviare un pacchetto a Y su Ethernet, la conversione avrà successo e il pacchetto arriverà (si spera). Se il modulo Internet di Y desidera poi comunicare con X, ciò avrà ugualmente successo, poiché Y ha memorizzato le informazioni dalla richiesta di risoluzione degli indirizzi di X.