2012-05-17 22 views
12

Perché il server non può utilizzare l'indirizzo IP di destinazione di 0.0.0.0 come viene utilizzato nell'IP di origine di DHCP Discover and Request? Può utilizzare l'indirizzo MAC del client appreso da DHCP Discover e Request per indirizzare il frame al computer client appropriato.Perché vengono trasmessi l'offerta DHCP e Ack?

+0

Ho il sospetto che questo sia necessario per lavorare in ambienti dove ci sono più server DHCP collaborativi. Potrebbe essere necessario che anche gli agenti relay funzionino correttamente. – Flexo

risposta

14

La scelta unicast o in onda è specificato nel DHCP RFC 2131:

Se il campo 'giaddr' in un messaggio DHCP da un client è diverso da zero, il server invia alcun messaggio di ritorno alla la porta "Server DHCP" sull'agente di inoltro BOOTP il cui indirizzo appare in "giaddr". Se il campo "giaddr" è zero e il campo "ciaddr" è diverso da zero, il server unicasts i messaggi DHCPOFFER e DHCPACK all'indirizzo in "ciaddr". Se 'giaddr' è zero e 'ciaddr' è zero, e il bit di trasmissione è set, poi il server trasmette messaggi DHCPOFFER e DHCPACK al 0xffffffff. Se il bit trasmissione non è impostata e 'giaddr' è zero e 'ciaddr' è zero, allora il server unicast DHCPOFFER e DHCPACK messaggi all'indirizzo hardware del client e l'indirizzo 'yiaddr'. In tutti i casi, quando 'giaddr' è zero, il server trasmette qualsiasi messaggio DHCPNAK a 0xffffffff.

con ciaddr e giaddr essere:

ciaddr  4 Client IP address; only filled in if client is in BOUND, RENEW or REBINDING state and can respond to ARP requests. 
giaddr  4 Relay agent IP address, used in booting via a relay agent. 

Quindi il server DHCP sceglie di trasmettere o meno di conseguenza per lo stato corrente del client (soprattutto se ha già un indirizzo IP o meno) e di conseguenza per il mittente del messaggio, se si tratta di un agente di inoltro o semplicemente un cliente.

Unicast DHCPOFFER

In questo caso, il mio server DHCP ha scelto di unicast DHCPOFFER perché la mia macchina aveva già un indirizzo IP e io non ho un agente di inoltro nella mia LAN.

EDIT:

E nessuno può utilizzare l'indirizzo IP 0.0.0.0 come indirizzo di destinazione. Come specificato nel IPv4 RFC 5735:

0.0.0.0/8 - Gli indirizzi in questo blocco riferiscono a host di origine su "questa" rete . Indirizzo 0.0.0.0/32 può essere utilizzato come indirizzo di origine per questo ospite su questa rete; altri indirizzi all'interno 0.0.0.0/8 possono essere utilizzati per riferiscono agli host specificati su questa rete ([RFC1122], sezione 3.2.1.3).

+0

La tua domanda non è sufficientemente chiara. Per favore pubblica [una nuova domanda] (http://superuser.com/questions/ask) su Superuser che descrive dettagliatamente il comportamento dei dispositivi coinvolti, il loro ruolo e, possibilmente, gli indirizzi IP e i registri acquisiti. – Avio

+0

Ho un problema simile, ma il fatto è che ho un dispositivo che invia un pacchetto Discover di DHCP destinato a 255.255.255.255, il server riceve questo messaggio (poiché uso un logger di pacchetti per esaminare le attività di tutti i nodi) e risponde, questa risposta che il mio dispositivo ottiene è una cornice di trasmissione dal server DHCP. Ma il dispositivo non accetta la configurazione IP. Qualche genere di spiegazione per questa anomalia? – Abhinav

+0

Buona risposta. Spiega come funzionano le cose e se è possibile avere DHCPOFFER non trasmesso. Ma mi piacerebbe anche conoscere la ragione di avere un DHCPOFFER trasmesso. Qualche idea? – limitcracker

0

Da the RFC 2131, pagina 24:

Normalmente, i server DHCP e agenti di inoltro BOOTP tentare di inviare messaggi DHCPOFFER, DHCPACK e DHCPNAK direttamente al client utilizzando consegna uicast. L'indirizzo di destinazione IP (nell'intestazione IP) è impostato su sull'indirizzo 'yiaddr' DHCP e l'indirizzo di destinazione del livello di collegamento è impostato sull'indirizzo 'chaddr' DHCP. Sfortunatamente, alcune implementazioni del client non sono in grado di ricevere tali datagrammi IP unicast fino al l'implementazione è stata configurata con un indirizzo IP valido (che porta a un deadlock in cui l'indirizzo IP del client non può essere consegnato fino a quando il client non è stato configurato con un Indirizzo IP).

Un client che non può ricevere i pacchetti IP unicast fino al suo software di protocollo è stato configurato con un indirizzo IP deve impostare il bit BROADCAST nel campo 'bandiere' a 1 in qualsiasi DHCPDISCOVER o messaggi DHCPREQUEST che client invia. Il bit BROADCAST fornirà un suggerimento al server DHCP e all'agente di inoltro BOOTP per trasmettere tutti i messaggi al client sulla sottorete del client.

Un client che può ricevere i pacchetti IP unicast prima del suo software di protocollo è stato configurato dovrebbe cancellare il bit BROADCAST a 0. Il documento BOOTP chiarimenti discute le ramificazioni dell'uso del BROADCAST bit.