[successivo] [precedente] [indice]

Dynamic Host Configuration Protocol

Il compito del protocollo DHCP e' di permettere a stazioni che si collegano ad una rete IP di estrarre la loro configurazione da un server, allo scopo di ridurre il lavoro necessario di amministrazione della rete. In particolare, il server DHCP assegna i valori di configurazione all'atto del collegamento del computer richiedente.

DHCP e' basato sul protocollo BOOTP con cui mantiene parziale compatibilita' all'indietro. La differenza principale e' che mentre il server BOOTP richiede configurazione amministrativa manuale, DHCP permette l'allocazione dinamica di indirizzi di rete ai nuovi nodi che si collegano. Inoltre DHCP permette il recupero e la riallocazione di indirizzi con un meccanismo di 'affitto'. DHCP puo' usare server BOOTP configurati come 'relay agent', eliminando la necessita' di un server DHCP per ogni segmento di rete. I relay agent comunicano al server DHCP anche la sottorete da cui proveniva la richiesta di nuovo indirizzo.

Il server DHCP mantiene un intervallo di indirizzi IP che amministra centralmente. E' opportuno che in un dominio amministrato da servizio DHCP i singoli computer non compiano' piu' decisioni autonome di selezione indirizzo IP ma facciano riferimento al server centrale.

Il servizio DHCP e' descritto nei documenti RFC1541, RFC1533 ed RFC1532.

DHCP supporta tre meccanismi di allocazione indirizzi IP:

Messaggio DHCP

Il campo Operazione vale 1 per un messaggio di Richiesta di boot e 2 per un messaggio di Responso. Segue il campo Tipo Indirizzo Hardware; i tipi sono definiti dallo RFC 'Assigned Numbers'. Per Ethernet il valore e' 1.

Il campo Lunghezza Indirizzo Hardware vale 6 per Ethernet, il campo Numero di Salti e' tipicamente zero, ma puo' essere incrementato da un relay agent.

Il campo Identificativo Transazione e' scelto casualmente dal client e serve ad identificare unaa richiesta specifica di parametri di boot.

Il campo Secondi e' inizializzato dal client al numero di secondi trasmessi dall'istante del boot. Il campo Indirizzo Cliente e' normalmente vuoto ma puo' venire riempito dal client che richiede conferma dei parametri precedentemente ottenuti. Il campo Indirizzo Hardware viene riempito dal client.

Il server riempie il campo Indirizzo Assegnato nel messaggio di responso.

Il campo Indirizzo Gateway e' riempito se e' in uso un router come relay agent.

Il campo Identificativo Server e' l'indirizzo del server da usare nel passo successivo del bootstrap del cliente. Un server DHCP puo' porre il proprio indirizzo in questo campo.

Il campo Opzioni e' a lunghezza variabile, con un minimo di 312 byte, che porta la lunghezza minima da supportare di un messaggio DHCP a 576 byte. I client possono negoziare messaggi piu' lunghi tramite l'opzione Dimensione Massima Messaggio. Il campo Opzioni e' estendibile con i campi Nome Server e Nome File, che sono stringhe terminate da un NUL.

L'opzione Informazioni del Venditore permette l'espansione del numero di opzioni definite; le Opzioni Venditore possono variare tra implementazioni.

Il campo Flag e' zero ad eccezione del primo bit (M) definito come bit di broadcast.

Servizi Forniti

Il server DHCP fornisce un servizio di registrazione dei parametri di rete dei client, sotto forma di un record chiave-valore per ciascun client. La chiave usata identifica univocamente il client, p.es. con il numero di sottorete e l'indirizzo hardware, o meglio indirizzo sottorete e nome host, che permette lo scambio di interfacce hardware trasparente per un dato host.

Il secondo servizio e' l'allocazione di indirizzi IP temporanei o permanenti agli host client. Un client richiede l'allocazione di indirizzo dinamico e l'indirizzo viene assegnato per un certo periodo di tempo, durante il quale non viene allocato ad altri. Il server compie anche il tentativo di riallocare se possibile lo stesso indirizzo IP allo stesso host in connessioni seguenti. La possibilita' o meno e' data dal numero di indirizzi disponibili e dal numero di host che si collegano nel frattempo, cioe' l'allocazione indirizzi e' ciclica nell'intervallo posseduto.

L'allocazione dinamica per un periodo dato viene chiamata 'affitto' (lease). Il client la puo' estendere tramite ulteriore richiesta o puo' rilasciare l'indirizzo affittato in qualsiasi momento se non serve piu'. In caso di scarsita' di indirizzi, il server DHCP riutilizza indirizzi affittati col tempo scaduto.

Protocollo

La sequenza di operazioni e' la seguente:

  1. Il client invia un messaggio di richiesta in modalita' broadcast detto DHCPDISCOVER. Questo messaggio puo' includere opzioni che suggeriscono i valori desiderati di indirizzo IP e tempo di affitto.
  2. I server DHCP presenti rispondono con un messaggio DHCPOFFER con il campo Indirizzo Assegnato riempito con un indirizzo IP che viene offerto. Se possibile i server DHCP riservano l'indirizzo per la durata della transazione o per un timeout.
  3. Il client puo' attendere di ricevere piu' offerte e seleziona una di esse. Quindi invia un messaggio broadcast DHCPREQUEST che deve includere l'indirizzo del server di cui si accetta l'offerta.
  4. I server non selezionati considerano chiusa la transazione. Il server selezionato invia al client un messaggio DHCPACK che contiene i parametri di configurazione rete per il client, e aggiorna i dati del client nel proprio database.
  5. Il client riceve il messaggio di conferma e compie la decisione finale se accettare o rifiutare con un messaggio DHCDECLINE. Il server che riceve un declino cancella il client dal database.
  6. Il client che termina di usare un indirizzo IP lo comunica al server con un messaggio DHCPRELEASE.

I tempi di affitto sono rappresentati in secondi. Si assume che gli orologi del server e del client siano stabili. L'orologio di riferimento all'atto dell'inizio dell'affitto e' quello del client. In caso di sfasamento il server comunica un tempo d'affitto piu' breve al client di quello che effettivamente registra.