DHCP significa Dynamic Host Configuration Protocol. È un protocollo che permette ad un computer che si connette su una rete di ottenere in modo dinamico (cioè senza intervento particolare) la sua configurazione (principalmente, la sua configurazione di rete). Si deve solo specificare al computer di trovarsi un indirizzo IP da solo attraverso DHCP. Con lo scopo principale di semplificare l'amministrazione di una rete.
Il protocollo DHCP serve principalmente a distribuire degli indirizzi IP su una rete, ma è stato concepito inizialmente come complemento al protocollo BOOTP (Bootstrap Protocol) che è usato ad esempio quando si installa un terminale attraverso una rete (BOOTP è usato in stretta collaborazione con un server TFTP su quale il cliente trova i file da caricare e copiare sul disco rigido). Un server DHCP può rinviare dei parametri BOOTP o di configurazione propri ad un dato host.
In un primo tempo si ha bisogno di un server DHCP che distribuisce gli indirizzi IP. Questo terminale servirà da base per tutte le richieste DHCP, e anch'esso deve avere un indirizzo IP fisso. Su una rete, si può avere quindi solo un terminale con indirizzo IP fisso, il server DHCP.
Il meccanismo di base della comunicazione è BOOTP (con frame UDP). Quando un terminale viene acceso, non ha nessuna informazione sulla sua configurazione di rete e, soprattutto, l'utente non deve fare niente di particolare per trovare un indirizzo IP. Per fare questo, la tecnica usata è il broadcast: per trovare e dialogare con un server DHCP, il terminale emette semplicemente un pacchetto speciale di broadcast (broadcast su 255.255.255.255 con altre informazioni come il tipo di richiesta, le porte di connessione, ecc.) sulla rete locale. Quando il server DHCP riceverà il pacchetto di broadcast, rinvierà automaticamente un altro pacchetto di broadcast (non dimenticate che il client non ha un obbligatoriamente il suo indirizzo IP e quindi non è raggiungibile direttamente) con tutte le informazioni richieste dal client.
Si potrebbe credere che un solo pacchetto possa bastare per il buon funzionamento del protocollo. In effetti, esistono più tipi di pacchetti DHCP suscettibili di essere emessi sia dal client per il/i server, sia dal server verso un client:
DHCPDISCOVER (per localizzare i server DHCP disponibili);
DHCPOFFER (risposta del server ad un pacchetto DHCPDISCOVER, che contiene i primi parametri);
DHCPREQUEST (richiesta diversa del client ad esempio per prolungare il suo lease time);
DHCPACK (risposta del server che contiene dei parametri e l'indirizzo IP del cliente);
DHCPNAK (risposta del server per segnalare al client che il suo lease time è scaduto o se il client annuncia una configurazione di rete errata);
DHCPDECLINE (il client annuncia al server che l'indirizzo è già utilizzato);
DHCPRELEASE (il client libera il suo indirizzo IP);
DHCPINFORM (il client chiede dei parametri locali, avendo già il proprio indirizzo IP).
Il primo pacchetto emesso dal client è un pacchetto di tipo DHCPDISCOVER. Il server risponde con un pacchetto DHCPOFFER, in particolare per sottoporre un indirizzo IP al client. Il client stabilisce la propria configurazione, poi fa un DHCPREQUEST per validare il proprio indirizzo IP (richiesta in broadcast dato che DHCPOFFER non contiene il proprio indirizzo IP). Il server risponde semplicemente con un DHCPACK con l'indirizzo IP per conferma dell'attribuzione. Normalmente, ciò è sufficiente per far si che un client ottenga una configurazione di rete efficace, ma questa procedura può essere più o meno lunga a seconda se il client accetti o meno l'indirizzo IP.
Per delle ragioni di ottimizzazione delle risorse di rete, gli indirizzi IP sono rilasciati con una data di inizio e una data di fine della validità. È quello che viene chiamato "lease time". Un client che vede arrivare il suo lease time al termine può richiedere al server una proroga attraverso un DHCPREQUEST. Allo stesso modo, quando il server vedrà un lease time al termine di validità, emetterà un pacchetto DHCPNAK per chiedere al client se vuole prolungare il suo contratto. Se il server non riceve una risposta valida, rende disponibile l'indirizzo IP.
Tutto il lavoro del DHCP sta nell'ottimizzare l'attribuzione degli indirizzi IP giocando sulla durata dei contratti di affitto. Il problema sta qui: se nessun indirizzo è liberato dopo un certo intervallo di tempo, nessuna richiesta DHCP potrà essere soddisfatta, provocando la mancanza di indirizzi da distribuire.
Su una rete dove molti computer si collegano e si scollegano spesso (rete scolastica o nei locali commerciali ad esempio), può essere interessante proporre dei lease time di breve durata. Al contrario, per una rete costituita in maggioranza da terminali fissi, raramente riavviati, basteranno dei lease time di lunga durata. Non dimenticate che il DHCP funziona principalmente in broadcast, e questo permette di bloccare della banda su piccole reti fortemente sollecitate.
È stato l'Internet Software Consortium a sviluppare il server DHCP nel mondo dei software liberi. Il più usato è il server DHCP, ed è anche quello che "segue" al meglio le RFC.
Nota Bene: un server DHCP non è per niente di facile sviluppo, e anche i server che propongono sono regolarmente patched e completati. L'ultima versione cronologica è la 3.0 ma è ancora in versione beta. Una delle principali innovazioni di questa versione è la possibilità di aggiornare un DNS in modo dinamico in funzione degli indirizzi IP forniti dai server DHCP. Per informazione, il primo draft sul DNS dinamico è datato marzo 1996: [http:/contents/56-kioskea-computing-community Ulteriori informazioni sull'aggiornamento del DNS dai server DHCP].
Microsoft ha ben integrato il proprio server DHCP per NT, ma quest'ultimo non implementa ancora l'aggiornamento dinamico del DNS.
RFC 821 - BOOTP (BootStrap Protocol);
RFC 1542 - Clarifications and Extensions for the Bootstrap Protocol (interazioni tra BOOTP e DHCP);
RFC 2132 - DHCP Options and BOOTP Vendor Extensions.
Foto: © Pixabay.