Informazioni di base su DHCP (Dynamic Host Configuration Protocol)

Sommario

DHCP (Dynamic Host Configuration Protocol) è un protocollo standard definito dalla RFC 1541 (sostituita poi dalla RFC 2131) che consente a un server di distribuire dinamicamente ai client informazioni sulla configurazione e gli indirizzi IP. In genere, il server DHCP fornisce al client almeno le seguenti informazioni di base:
  • Indirizzo IP



  • Subnet Mask



  • Gateway predefinito
Le eventuali altre informazioni fornite possono riguardare ad esempio gli indirizzi del server DNS (Domain Name Service) e del server WINS (Windows Internet Name Service). È compito dell'amministratore del sistema configurare il server DHCP con le opzioni da fornire al client.

Informazioni

I seguenti prodotti Microsoft forniscono funzionalità client DHCP:
  • Windows NT Server versioni 3.5, 3.51 e 4.0



  • Windows NT Workstation versioni 3.5, 3.51 e 4.0



  • Windows 95



  • Microsoft Network Client versione 3.0 per MS-DOS



  • Microsoft LAN Manager Client versione 2.2c per MS-DOS



  • Microsoft TCP/IP-32 per Windows per Workgroup versioni 3.11, 3.11a e 3.11b
Le opzioni supportate dai client DHCP dipendono da quelle ricevute dal server DHCP. Per informazioni sulle opzioni DHCP specifiche supportate dai client DHCP Microsoft, vedere il seguente articolo della Microsoft Knowledge Base (informazioni in lingua inglese):
  • 121005 DHCP Options Supported by Clients

I seguenti sistemi operativi server Microsoft forniscono funzionalità server DHCP:
  • Windows NT Server versione 3.5



  • Windows NT Server versione 3.51



  • Windows NT Server versione 4.0
Quando si inizializza per la prima volta un client configurato per la ricezione di informazioni DHCP, viene avviata una conversazione con il server.


La tabella che segue riassume la conversazione tra client e server ed è seguita da una descrizione del processo a livello di pacchetti:


Ind MAC Ind MAC Ind IP Ind IP Descrizione
origine dest origine dest pacchetto

-----------------------------------------------------------------
Client Broadcast 0.0.0.0 255.255.255.255 Rilevazione DHCP
DHCPsrvr Broadcast DHCPsrvr 255.255.255.255 Offerta DHCP
Client Broadcast 0.0.0.0 255.255.255.255 Richiesta DHCP
DHCPsrvr Broadcast DHCPsrvr 255.255.255.255 ACK DHCP

Di seguito sono riportate informazioni dettagliate sulla conversazione tra client e server DHCP.


DHCPDISCOVER


Il client invia un pacchetto DHCPDISCOVER. Di seguito è riportato un estratto di una schermata di Network Monitor in cui sono riportate le parti IP e DHCP di un pacchetto DHCPDISCOVER. Nella sezione IP è possibile notare che l'indirizzo di destinazione è 255.255.255.255 mentre quello di origine è 0.0.0.0. La sezione DHCP consente di identificare il pacchetto come di rilevazione e il client in due posizioni utilizzando l'indirizzo fisico della scheda di rete. I valori nei campi CHADDR e DHCP: Client Identifier sono identici.


IP: ID = 0x0; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 0 (0x0)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x39A6
IP: Source Address = 0.0.0.0
IP: Destination Address = 255.255.255.255
IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: Discover (xid=21274A1D)
DHCP: Op Code (op) = 1 (0x1)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) = <Blank>
DHCP: Boot File Name (file) = <Blank>
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP Discover
DHCP: Client-identifier = (Type: 1) 08 00 2b 2e d8 5e
DHCP: Host Name = JUMBO-WS
DHCP: Parameter Request List = (Length: 7) 01 0f 03 2c 2e 2f 06
DHCP: End of this option field

DHCPOFFER


Il server DHCP risponde inviando un pacchetto DHCPOFFER. Nella sezione IP della schermata riportata di seguito, l'indirizzo di origine corrisponde ora all'indirizzo IP del server DHCP, mentre l'indirizzo di destinazione è l'indirizzo di broadcast 255.255.255.255. La sezione DHCP consente di identificare il pacchetto come offerta. Il campo YIADDR viene popolato con l'indirizzo IP offerto al client dal server. Il campo CHADDR contiene ancora l'indirizzo fisico del client richiedente. Nella sezione DHCP Option Field sono inoltre riportate le diverse opzioni inviate al server unitamente all'indirizzo IP. In questo caso il server invia i valori relativi a subnet mask, gateway predefinito (Router), durata del lease, indirizzo del server WINS (NetBIOS Name Service) e tipo di nodo NetBIOS.


IP: ID = 0x3C30; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 15408 (0x3C30)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x2FA8
IP: Source Address = 157.54.48.151
IP: Destination Address = 255.255.255.255
IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: Offer (xid=21274A1D)
DHCP: Op Code (op) = 2 (0x2)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 157.54.50.5
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) = <Blank>
DHCP: Boot File Name (file) = <Blank>
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP Offer
DHCP: Subnet Mask = 255.255.240.0
DHCP: Renewal Time Value (T1) = 8 Days, 0:00:00
DHCP: Rebinding Time Value (T2) = 14 Days, 0:00:00
DHCP: IP Address Lease Time = 16 Days, 0:00:00
DHCP: Server Identifier = 157.54.48.151
DHCP: Router = 157.54.48.1
DHCP: NetBIOS Name Service = 157.54.16.154
DHCP: NetBIOS Node Type = (Length: 1) 04
DHCP: End of this option field

DHCPREQUEST


Il client risponde a DHCPOFFER inviando una richiesta DHCPREQUEST. Nella sezione IP della schermata riportata di seguito l'indirizzo di origine del client è ancora 0.0.0.0 e quello di destinazione per il pacchetto è ancora 255.255.255.255. Il client mantiene il valore 0.0.0.0 perché non ha ancora ricevuto dal server conferma della correttezza dell'indirizzo offerto. La destinazione è ancora quella di broadcast, poiché è possibile che più server DHCP abbiano risposto e dispongano di una prenotazione per un'offerta al client. Ciò consentirà agli altri server DHCP di sapere se rilasciare gli indirizzi offerti e restituirli ai relativi pool disponibili. La sezione DHCP consente di identificare il pacchetto come richiesta e di verificare l'indirizzo offerto tramite il campo DHCP: Requested Address. Nel campo DHCP: Server Identifier è riportato l'indirizzo IP del server DHCP che offre il lease.


IP: ID = 0x100; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 256 (0x100)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x38A6
IP: Source Address = 0.0.0.0
IP: Destination Address = 255.255.255.255
IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: Request (xid=21274A1D)
DHCP: Op Code (op) = 1 (0x1)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) = <Blank>
DHCP: Boot File Name (file) = <Blank>
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP Request
DHCP: Client-identifier = (Type: 1) 08 00 2b 2e d8 5e
DHCP: Requested Address = 157.54.50.5
DHCP: Server Identifier = 157.54.48.151
DHCP: Host Name = JUMBO-WS
DHCP: Parameter Request List = (Length: 7) 01 0f 03 2c 2e 2f 06
DHCP: End of this option field

DHCPACK


Il server DHCP risponde a DHCPREQUEST con un DHCPACK, completando in tal modo il ciclo di inizializzazione. L'indirizzo di origine corrisponde all'indirizzo IP del server DHCP, mentre quello di destinazione è ancora 255.255.255.255. Il campo YIADDR riporta l'indirizzo del client, mentre i campi CHADDR e DHCP: Client Identifier corrispondono all'indirizzo fisico della scheda di rete installata nel client richiedente. La sezione DHCP Option consente di identificare il pacchetto come ACK.


IP: ID = 0x3D30; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 15664 (0x3D30)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x2EA8
IP: Source Address = 157.54.48.151
IP: Destination Address = 255.255.255.255
IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: ACK (xid=21274A1D)
DHCP: Op Code (op) = 2 (0x2)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 157.54.50.5
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) = <Blank>
DHCP: Boot File Name (file) = <Blank>
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP ACK
DHCP: Renewal Time Value (T1) = 8 Days, 0:00:00
DHCP: Rebinding Time Value (T2) = 14 Days, 0:00:00
DHCP: IP Address Lease Time = 16 Days, 0:00:00
DHCP: Server Identifier = 157.54.48.151
DHCP: Subnet Mask = 255.255.240.0
DHCP: Router = 157.54.48.1
DHCP: NetBIOS Name Service = 157.54.16.154
DHCP: NetBIOS Node Type = (Length: 1) 04
DHCP: End of this option field

Se il client dispone di un indirizzo IP assegnato da DHCP in precedenza e viene riavviato, richiederà specificamente tale indirizzo in uno speciale pacchetto DHCPREQUEST. L'indirizzo di origine è 0.0.0.0 mentre quello di destinazione corrisponde a all'indirizzo di broadcast 255.255.255.255. I client Microsoft popoleranno quindi il campo DHCP: Requested Address con lo stesso indirizzo assegnato in precedenza. I client conformi all'RFC popoleranno invece il campo CIADDR con l'indirizzo richiesto. Il server DHCP Microsoft accetterà entrambi.


IP: ID = 0x0; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 0 (0x0)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x39A6
IP: Source Address = 0.0.0.0
IP: Destination Address = 255.255.255.255
IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: Request (xid=2757554E)
DHCP: Op Code (op) = 1 (0x1)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 660034894 (0x2757554E)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) = <Blank>
DHCP: Boot File Name (file) = <Blank>
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP Request
DHCP: Client-identifier = (Type: 1) 08 00 2b 2e d8 5e
DHCP: Requested Address = 157.54.50.5
DHCP: Host Name = JUMBO-WS
DHCP: Parameter Request List = (Length: 7) 01 0f 03 2c 2e 2f 06
DHCP: End of this option field

A questo punto, il server può o meno rispondere. Il comportamento del server DHCP di Windows NT dipende dalla versione del sistema operativo in uso, nonché da altri fattori, quali il superscoping. Se il server rileva che l'indirizzo viene ancora utilizzato dal client, rimarrà silenzioso oppure accetterà la richiesta DHCPREQUEST. Se invece rileverà che l'indirizzo non è disponibile per il client, invierà un NACK.


IP: ID = 0x3F1A; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 16154 (0x3F1A)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x2CBE
IP: Source Address = 157.54.48.151
IP: Destination Address = 255.255.255.255
IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: NACK (xid=74A005CE)
DHCP: Op Code (op) = 2 (0x2)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 1956644302 (0x74A005CE)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) = <Blank>
DHCP: Boot File Name (file) = <Blank>
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP NACK
DHCP: Server Identifier = 157.54.48.151
DHCP: End of this option field

Il client avvierà quindi il processo di rilevazione, tuttavia il pacchetto DHCPDISCOVER proverà ancora ad ottenere lo stesso indirizzo. In molti casi, il client riuscirà ad ottenere lo stesso indirizzo, anche se ciò potrebbe non avvenire necessariamente.


IP: ID = 0x100; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 256 (0x100)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x38A6
IP: Source Address = 0.0.0.0
IP: Destination Address = 255.255.255.255
IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: Discover (xid=3ED14752)
DHCP: Op Code (op) = 1 (0x1)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 1053902674 (0x3ED14752)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) = <Blank>
DHCP: Boot File Name (file) = <Blank>
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP Discover
DHCP: Client-identifier = (Type: 1) 08 00 2b 2e d8 5e
DHCP: Requested Address = 157.54.51.5
DHCP: Host Name = JUMBO-WS
DHCP: Parameter Request List = (Length: 7) 01 0f 03 2c 2e 2f 06
DHCP: End of this option field

Alle informazioni DHCP ottenute dal client e inviate dal server DHCP è associata una durata di lease. Tale valore definisce l'intervallo in cui il client può utilizzare le informazioni assegnate dal server DHCP. Quando vengono raggiunte alcune fasi cardine, il client prova a rinnovare le relative informazioni DHCP.


Per visualizzare le informazioni IP su un client Windows NT o Windows per Workgroup, utilizzare l'utilità IPCONFIG. Se invece il client è Windows 95, utilizzare WINIPCFG.

Riferimenti

Per ulteriori informazioni su DHCP, vedere la RFC1541 e la RFC2131. È possibile disporre delle RFC attraverso Internet nel modo seguente:


Copie cartacee di tutte le RFC sono disponibili presso il NIC, sia singolarmente che tramite abbonamento. Per ulteriori informazioni, contattare NIC@NIC.DDN.MIL Sono disponibili copie in linea via FTP o Kermit all'indirizzo NIC.DDN.MIL come rfc/rfc####.txt o rfc/rfc####.PS, dove #### rappresenta il numero di RFC senza zeri iniziali.
Proprietà

ID articolo: 169289 - Ultima revisione: 21 gen 2004 - Revisione: 1

Feedback