tecnica

I protocolli classici: RARP e BOOTP

 

Il collegamento alla rete Φ la prima azione in assoluto che un computer fa quando vuole comunicare con altri sistemi. Come avviene, e cosa succede quando un sistema si aggancia alla rete?

 

In genere, al momento del collegamento con una rete TCP/IP, un computer deve conoscere tutta una serie di informazioni, di cui la pi∙ importante Φ sicuramente l'indirizzo IP, altrimenti non sarα in grado di interagire correttamente con gli altri sistemi. In realtα non tutti i sistemi che sono collegati in rete possiedono queste informazioni fin dall'inizio. Ad esempio, esistono periferiche che non possiedono una propria memoria di massa su cui memorizzare i dati, come i network computer oppure i terminali cosiddetti "stupidi". In molti ambienti sono poi comuni computer a cui Φ stato rimosso il disco fisso per ragioni di sicurezza, e che dipendono da altre macchine per la memorizzazione di dati ed informazioni. Questi sistemi sono detti diskless. Spesso questi computer non hanno neanche un vero e proprio sistema operativo ma lo devono caricare direttamente dalla rete al momento dell'accensione.

 

Ma come fa una macchina che non ha un sistema operativo ed una memoria di massa a collegarsi ad una rete internet? In genere queste macchine possiedono un piccolo programma di attivazione memorizzato su una ROM programmabile. Questo programma Φ in grado di ottenere dalla rete stessa le informazioni che servono al collegamento e quindi, una volta stabilita la connessione, Φ capace di scaricare da un server un pezzo di sistema operativo o comunque un'applicazione client in grado di farlo operare in rete.

 

A questo punto qualcuno si potrebbe chiedere per quale motivo uno non possa memorizzare direttamente nella PROM le informazioni che servono al sistema per il collegamento. Fondamentalmente i motivi sono due. Il primo Φ che queste informazioni sono disponibili solo nel momento in cui si decide dove mettere il computer. Solo allora l'amministratore della rete deciderα quali sono le informazioni che quel determinato sistema deve conoscere. Questo vuol dire che bisognerebbe programmare la PROM di ogni singola macchina al momento dell'installazione. Un programma generico che permette di ottenere tali informazioni dinamicamente pu≥ invece essere memorizzato nella PROM direttamente in fabbrica, quando la macchina viene assemblata, con evidente risparmio di tempo e denaro. Il secondo motivo Φ che una macchina pu≥ venire spostata da una rete fisica ad un'altra, oppure l'amministratore della rete pu≥ avere la necessitα di riorganizzare tutto lo spazio di indirizzamento della stessa o modificarne i parametri, o pi∙ semplicemente la rete stessa Φ abilitata ad assegnare gli indirizzi IP in modo dinamico. Insomma, la rete Φ una cosa viva, che cambia continuamente, e qualunque codifica fissa di informazioni rappresenta un ostacolo a tali cambiamenti, e quindi un costo.

Il protocollo RARP

Il protocollo RARP (Reverse Address Resolution Protocol) si basa su due considerazioni. La prima Φ che in effetti un computer sa come comunicare in rete, sa cioΦ come spedire e ricevere bit utilizzando i protocolli della rete fisica a cui Φ collegato, e sa come identificarsi in modo univoco, dato che possiede comunque un indirizzo fisico di rete, generalmente corrispondente all'identificativo della scheda di comunicazione utilizzata. La seconda Φ che anche se un sistema non conosce l'indirizzo di rete di un altro sistema con cui desidera comunicare, pu≥ sempre mandare un messaggio a tutti i sistemi collegati localmente utilizzando la tecnica del broadcasting.

 

Vediamo allora come avviene il collegamento via RARP. Non appena il computer viene accesso, il programma memorizzato nella PROM viene mandato in esecuzione. La prima cosa che fa Φ quella di ricavare dalla scheda di rete l'indirizzo fisico del sistema. Questo identificativo Φ memorizzato nella memoria della scheda di rete, ed Φ quindi sempre disponibile. Esso inoltre non dipende dal tipo o dal modello di computer utilizzato, ma solo dalla scheda, e quindi Φ sicuramente univoco. Questi identificativi infatti, sono costruiti un po' come i numeri di telefono o gli indirizzi IP. Ogni marca registra un proprio insieme di identificativi, all'interno del quale si assicura che, indipendentemente dal modello della scheda, tutte le schede abbiano un indirizzo differente. A questo punto il programma spedisce a tutte le macchine giα collegate in rete un messaggio in cui fornisce il proprio indirizzo fisico e chiede che gli venga mandato indietro quello IP. PerchΘ ci≥ avvenga Φ necessario che nella rete fisica esista almeno un server RARP in grado di soddisfare la richiesta.

 

Esistono due differenti schemi che permettono ad un server di ricavare l'indirizzo IP a fronte di quello fisico. O il server possiede una tabella di conversione che fornisce gli indirizzi IP di un certo numero di macchine a partire da quelli fisici, oppure esiste una formula di conversione che genera l'indirizzo richiesto direttamente da quello fornito.

 

In realtα nella rete pu≥ esserci anche pi∙ di un server RARP, anche perchΘ se l'unico server dovesse cadere, nessun computer potrebbe pi∙ ottenere il proprio indirizzo IP all'accensione. Per evitare che il client venga bombardato dalle risposte di tutti i server RARP presenti in rete, per ogni client viene definito un server primario. Tutti gli altri server saranno quindi secondari. Quando parte la richiesta, solo il server primario risponde subito, gli altri la ignorano. Pu≥ tuttavia succedere che il messaggio si perda od arrivi danneggiato, oppure che il primario non funzioni o che sia sovraccarico. In tal caso il client rimanda la sua richiesta dopo un certo periodo di tempo. A quel punto, come arriva la seconda richiesta, ogni secondario in grado di risolvere l'indirizzo fisico fornito spedirα indietro l'indirizzo IP corrispondente. In ogni caso il client utilizzerα la prima risposta che arriva, anche se non ignorerα le altre, ma le utilizzerα come controprova per maggior sicurezza.

 

A questo punto, ricevuto l'indirizzo IP, il programma di accensione potrα comunicare in rete e ricevere dallo stesso o da un altro server tutte le informazioni che necessita, incluso l'indirizzo da cui scaricarsi il sistema operativo o l'applicativo client che gli permetterα di operare correttamente. Questo tuttavia avverrα tramite altri protocolli, come il TFTP.

 

In realtα il protocollo RARP non serve solo ad ottenere il proprio indirizzo IP, ma permette a qualunque sistema di chiedere ad un server RARP l'indirizzo IP che corrisponde ad un certo indirizzo fisico. In tal caso, il primo sistema sarα detto "richiedente" (sender), il secondo "bersaglio" (target). La struttura del messaggio RARP sarα allora la seguente:

 

0

8

16

24

31

Tipo dell'interfaccia fisica

Tipo di protocollo

lung. indirizzo fisico

lung. indirizzo IP

Tipo di messaggio

Indirizzo fisico del richiedente (ottetti 0-3)

Indirizzo fisico del richiedente (ottetti 4-5)

Indirizzo IP del richiedente (ottetti 0-1)

Indirizzo IP del richiedente (ottetti 2-3)

Indirizzo fisico del bersaglio (ottetti 0-1)

Indirizzo fisico del bersaglio (ottetti 2-5)

Indirizzo IP del bersaglio (ottetti 0-3)

 

 

Il primo campo contiene il tipo di interfaccia fisica a cui il sistema Φ collegato. Ad esempio, per una rete Ethernet il tipo Φ 0x0001. Questo in quanto RARP opera a basso livello, incapsulando la struttura che stiamo analizzando direttamente in una frame fisica. Il secondo campo contiene l'identificativo del protocollo di cui si vuole avere l'indirizzo. Nel caso di IP, il valore Φ 0x0800. RARP potrebbe infatti essere utilizzato per ricavare altri tipi di indirizzi, ed inoltre lo stesso tipo di struttura Φ utilizzata anche dal protocollo ARP, che serve ad ottenere l'indirizzo fisico a partire da quello di un protocollo di pi∙ alto livello. I successivi due campi danno rispettivamente la lunghezza dell'indirizzo fisico e quella dell'indirizzo del protocollo di alto livello – nel nostro caso dell'IP. Il quinto campo contiene il tipo di messaggio trasmesso. Ve ne sono quattro tipi, e cioΦ una richiesta di informazioni ed una risposta contenente i dati richiesti per ognuno dei due protocolli che usano questa struttura: ARP e RARP. I campi successivi contengono gli indirizzi fisici ed IP sia del richiedente che del bersaglio. Ovviamente, a seconda che il messaggio sia una richiesta oppure una risposta, alcuni campi saranno riempiti mentre altri conterranno tutti zero.

Il protocollo BOOTP

Il protocollo appena visto ha alcuni svantaggi. Innanzi tutto il programma di accensione deve essere in grado di operare a livello di rete fisica. Questo vuol dire che la stessa macchina non pu≥ essere collegata a reti fisiche differenti. Ad esempio, se la PROM Φ stata programmata per operare su una rete Ethernet, essa non potrα essere utilizzata su una Token Ring, e viceversa. In secondo luogo, RARP permette di ottenere solo l'indirizzo IP corrispondente all'indirizzo fisico fornito. Per operare in rete Φ spesso necessario avere molte altre informazioni, come ad esempio l'indirizzo IP del router oppure la maschera della sottorete.

 

Per ovviare a ci≥ Φ stato sviluppato un altro protocollo che, sorprendentemente, si poggia sull'UDP – di cui abbiamo giα parlato – e che quindi Φ indipendente dalla rete fisica. Dico sorprendentemente perchΘ l'UDP, per operare, utilizza gli indirizzi IP, proprio come il suo fratello maggiore TCP. Questo protocollo si chiama BOOTP (Bootstrap Protocol), e risolve molti dei problemi caratteristici del RARP. Non solo: un server BOOTP pu≥ persino trovarsi su una rete fisica differente da quella del richiedente o del bersaglio. Il protocollo BOOTP utilizza due porte riservate UDP, e cioΦ la 68 per il client e la 67 per il server. Ma come fa una macchina che non conosce il proprio indirizzo IP ad utilizzare un protocollo basato proprio sull'IP?

 

La tecnica Φ analoga a quella giα utilizzata dal RARP. In pratica il messaggio viene mandato a tutti, via limited broadcasting. Fintanto infatti che la distribuzione avviene nella rete fisica locale, l'IP Φ in grado di recapitare un messaggio che specifica come destinatario l'indirizzo speciale 255.255.255.255 senza per questo dover conoscere per forza l'indirizzo del mittente od anche solo l'indirizzo del dominio locale. Rimane solo un problema. A chi risponde il server BOOTP? Uno potrebbe pensare che, visto che conosce l'indirizzo IP del richiedente, potrebbe rispondere direttamente a quello. In realtα non Φ cos∞, perchΘ chi ha spedito la richiesta ancora non conosce il proprio indirizzo IP – assumendo che il richiedente sia anche il bersaglio – e quindi non riconoscerebbe come indirizzata a sΘ la risposta. Esisto diverse soluzioni. La pi∙ semplice, comunque, Φ che anche il server utilizzi una tecnica di broadcasting. Uno specifico campo nella risposta conterrα un identificativo che permetterα al richiedente di associare la sua richiesta con una delle tante risposte immesse nella rete dai vari server. Il protocollo inoltre impone che il pacchetto spedito non possa mai essere frammentato.

 

Il meccanismo utilizzato dal BOOTP segue quindi pi∙ o meno la stessa traccia giα vista per il RARP, con la differenza che l'indirizzo fisico non Φ coinvolto direttamente e quindi il collegamento pu≥ avvenire senza bisogno che il programma di accensione sappia operare a livello di rete fisica. Anche nel caso del BOOTP esiste un'architettura basata su server primari e secondari e sulla ritrasmissione della richiesta in caso di perdita dei dati o caduta del primario. Per evitare che un server BOOTP sia bombardato da un numero ingestibile di richieste in caso di caduta e ripristino di tutta la rete locale, ogni client utilizzerα un ritardo casuale da 0 a 4 secondi massimo prima di ritrasmettere la propria richiesta. Questo intervallo di tempo sarα raddoppiato nel caso di una successiva ritrasmissione qualora anche quella precedente non abbia dato risposta, e cos∞ via.

 

Il protocollo BOOTP Φ molto pi∙ evoluto di quello RARP, e permette di fornire al richiedente un maggior numero di informazioni che non semplicemente l'indirizzo IP, come ad esempio l'indirizzo del gateway pi∙ vicino, l'indirizzo di un file server per la memorizzazione dei dati, la maschera della sottorete (subnet mask) ed altre informazioni opzionali riportate nel riquadro a parte.

 

La struttura del messaggio Φ la seguente:

 

0

8

16

24

31

Tipo del messaggio

Tipo dell'interfaccia

Lung. indirizzo fisico

Numero di salti

Identificativo della transazione

Secondi passati dalla ripartenza

INUTILIZZATO

Indirizzo IP del richiedente, se giα conosciuto

Indirizzo IP del richiedente, fornito dal server

Indirizzo IP del server

Indirizzo IP del gateway pi∙ vicino

Indirizzo fisico del richiedente (16 ottetti)

Nome del server (64 ottetti)

Nome del file di boot (128 ottetti)

Area speciale (64 ottetti)

 

 

Vediamo i vari campi in dettaglio. I primi tre campi corrispondono al tipo di messaggio se Φ cioΦ una richiesta (BOOTREQUEST) od una risposta (BOOTREPLY), al tipo di interfaccia fisica ed alla lunghezza dell'indirizzo fisico, come giα in RARP. Dato che BOOTP Φ basato su UDP, abbiamo detto che il server che risponde alla richiesta potrebbe trovarsi anche su un'altra rete fisica. Il numero di salti che la richiesta fa da una rete fisica all'altra prima di raggiungere il server che la gestirα viene memorizzato qui. Il campo successivo Φ l'identificativo della transazione e permette di associare la risposta alla richiesta originale. Dei due campi seguenti, il primo riporta il numero di secondi passati da quando il client Φ stato acceso, mentre il secondo non Φ utilizzato.

 

Da qui in poi vengono i dati veri e propri. Se il client sta usando BOOTP per conoscere il proprio indirizzo IP, il primo campo di questo blocco sarα zero. Se invece la richiesta riguarda altre informazioni, il client memorizzerα qui il proprio indirizzo IP. Il campo successivo conterrα l'indirizzo IP risolto dal server. Ovviamente quali campi siano riempiti e quali siano nulli dipende dal tipo di messaggio. I due indirizzi IP successivi sono relativi al server BOOTP ed al gateway pi∙ vicino.

 

Da notare che il client pu≥ richiedere che a rispondere alla sua richiesta sia un ben preciso server, e non uno qualunque. Questo pu≥ essere fatto specificando nella richiesta l'indirizzo IP od il nome del server preferito. Quest'ultima informazione segue immediatamente l'indirizzo fisico del richiedente.

 

Il penultimo campo serve a contenere il nome di un file che a sua volta conterrα tutta una serie di informazioni di boot per il client. In pratica il client pu≥ chiedere al server di mandargli una vera e propria configurazione di avvio. Per far ci≥, il client specificherα un nome breve, una sorta di alias, che nella base dati del server corrisponderα ad un file fisico memorizzato da qualche parte in rete. Ad esempio, il client scriverα pcoffice, ed il server restituirα in quel campo /usr/boot/pc/office.cfg.

 

L'ultimo campo pu≥ contenere una lista di ulteriori informazioni che il client desidera ricevere dal server BOOTP, come riportato nel riquadro a lato.

 

Il protocollo BOOTP Φ molto importante, anche perchΘ su di esso si basa un altro protocollo, molto attuale ed utilizzato da chiunque si colleghi in rete via modem tramite un ISP, chiamato DHCP, e di cui parleremo nel prossimo numero.

 

 

Opzione

Codice

Lunghezza

Contenuto

Riempimento

0

-

0 – Usato solo per il riempimento

Maschera della sottorete

1

4

Maschera della sottorete per la rete locale

Data ed ora corrente

2

4

Data ed ora in coordinate universali

Gateways

3

4*N

Indirizzi IP di N gateways

Time Server

4

4*N

Indirizzi IP di N Time Server

IEN116 Server

5

4*N

Indirizzi IP di N IEN116 Server

Domain Server

6

4*N

Indirizzi IP di N Domain Server

Log Server

7

4*N

Indirizzi IP di N Log Server

Quote Server

8

4*N

Indirizzi IP di N Quote Server

LPR Server

9

4*N

Indirizzi IP di N LPR Server

Impress Server

10

4*N

Indirizzi IP di N Impress Server

RLP Server

11

4*N

Indirizzi IP di N RLP Server

Nome dell'host

12

N

Stringa di N byte con il nome dell'host

Dimensioni del boot file

13

2

Dimensioni in byte del file di boot

Riservati

128-254

-

Riservati per usi futuri

Fine opzioni

255

-

Fine della lista

 

 

 

Per saperne di pi∙ (RFCs)

Home Page:

http://www.cis.ohio-state.edu/hypertext/information/rfc.html

 

UDP

0768 User Datagram Protocol. J. Postel. Aug-28-1980.

 

RARP

0903 Reverse Address Resolution Protocol. R. Finlayson, T. Mann, J.C. Mogul, M. Theimer. Jun-01-1984.

1931 Dynamic RARP Extensions for Automatic Network Address Acquisition. D. Brownell. April 1996.

 

TFTP

0913 Simple File Transfer Protocol. M. Lottor. Sep-01-1984.

1350 THE TFTP PROTOCOL (REVISION 2). K. Sollins. July 1992.

1782 TFTP Option Extension. G. Malkin & A. Harkin. March 1995.

1783 TFTP Blocksize Option. G. Malkin & A. Harkin. March 1995.

1784 TFTP Timeout Interval and Transfer Size Options. G. Malkin & A. Harkin. March 1995.

1785 TFTP Option Negotiation Analysis. G. Malkin & A. Harkin. March 1995.

2090 TFTP Multicast Option. A. Emberson. February 1997.

0906 Bootstrap loading using TFTP. R. Finlayson. Jun-01-1984.

 

BOOTP

0951 Bootstrap Protocol. W.J. Croft, J. Gilmore. Sep-01-1985.

1533 DHCP Options and BOOTP Vendor Extensions. S. Alexander & R. Droms.

1534 Interoperation Between DHCP and BOOTP. R. Droms. October 1993.

1542 Clarifications and Extensions for the Bootstrap Protocol. W. Wimer. October 1993.

2132 DHCP Options and BOOTP Vendor Extensions. S. Alexander, R. Droms. March 1997.


ddejudicibus@tecnet.it


Internet News Φ un mensile della Casa Editrice Tecniche Nuove S.p.A.
⌐ 1999. Tutti i diritti sono riservati.
Internet News non risponde di eventuali errori e omissioni.
Commenti a: inews@tecnet.it