Passa al contenuto principale

6. Ricezione del pacchetto (Packet Reception)

Quando viene ricevuto un pacchetto di risoluzione degli indirizzi, il modulo Ethernet del destinatario consegna il pacchetto al modulo di risoluzione degli indirizzi, che esegue un algoritmo simile a quanto segue. Le condizioni negative indicano la fine dell'elaborazione e lo scarto del pacchetto.

Flusso dell'algoritmo (Algorithm Flow):​

?Il tipo di hardware in ar$hrd è supportato da me?
Sì : (quasi certamente)
[Opzionale: controllare la lunghezza hardware ar$hln]
?Il protocollo in ar$pro è supportato da me?
Sì :
[Opzionale: controllare la lunghezza del protocollo ar$pln]
Merge_flag := false
Se la coppia <tipo di protocollo, indirizzo di protocollo del mittente>
è già presente nella mia tabella di conversione, aggiornare il campo
indirizzo hardware del mittente di quella voce con le nuove
informazioni del pacchetto e impostare Merge_flag su true.
?Sono l'indirizzo di protocollo di destinazione?
Sì :
Se Merge_flag è false, aggiungere il tripletto <tipo di protocollo,
indirizzo di protocollo del mittente, indirizzo hardware del mittente>
alla tabella di conversione.
?Il codice operativo è ares_op$REQUEST ? (guardare il codice operativo solo ora !!)
Sì :
Scambiare i campi hardware e di protocollo, inserire i propri
indirizzi hardware e di protocollo nei campi del mittente.
Impostare il campo ar$op su ares_op$REPLY
Inviare il pacchetto sulla stessa hardware su cui è stata ricevuta
la richiesta, all'indirizzo hardware di destinazione (nuovo).

Si noti che il tripletto <tipo di protocollo, indirizzo di protocollo del mittente, indirizzo hardware del mittente> viene unito alla tabella prima ancora di esaminare il codice operativo. Questo si basa sull'ipotesi che la comunicazione sia bidirezionale: se A ha un motivo per comunicare con B, allora anche B ha probabilmente un motivo per comunicare con A. Si noti inoltre che, se esiste già una voce per la coppia <tipo di protocollo, indirizzo di protocollo del mittente>, il nuovo indirizzo hardware sostituisce la voce esistente. La sezione Questioni correlate (Related Issues) fornisce alcune spiegazioni in merito.

Generalizzazione (Generalization)​

I campi ar$hrd e ar$hln consentono a questo protocollo e formato di pacchetto di essere utilizzati per reti diverse da Ethernet 10Mbit. Per Ethernet 10Mbit, <ar$hrd, ar$hln> assume il valore <1, 6>. Per altri hardware di rete, il campo ar$pro potrebbe non corrispondere più al campo di tipo Ethernet, ma dovrebbe essere associato al protocollo di cui si sta risolvendo l'indirizzo.