2012-05-17 8 views
12

Warum kann der Server nicht die Ziel-IP-Adresse 0.0.0.0 verwenden, wie sie in der Quell-IP von DHCP Discover und Request verwendet wird? Er kann die MAC-Adresse des Clients verwenden, die er von DHCP Discover und Request gelernt hat, um den Frame an den entsprechenden Client-Rechner weiterzuleiten.Warum werden DHCP-Angebot und Ack gesendet?

+0

Ich habe den Verdacht, dass dies erforderlich ist, um in Umgebungen zu arbeiten, in denen mehrere kooperierende DHCP-Server vorhanden sind. Es kann erforderlich sein, dass Relay-Agents auch ordnungsgemäß funktionieren. – Flexo

Antwort

14

Die Unicast oder Broadcast-Wahl RFC 2131 im DHCP angegeben wird:

Wenn das Feld von einem Client in einer DHCP-Nachricht 'giaddr' nicht Null ist, der Server, um alle Rückmeldungen sendet der 'DHCP-Server' -Port auf dem BOOTP-Relay-Agent , dessen Adresse in 'giaddr' erscheint. Wenn das Feld "giaddr" Null ist und das Feld "ciaddr" ungleich Null ist, dann werden die DHCP_OFFER- und DHCPACK-Nachrichten vom Server an die Adresse in "ciaddr" gesendet. Wenn 'giaddr' Null ist und 'ciaddr' gleich Null ist und das Broadcast-Bit gesetzt ist, sendet der Server DHCPOFFER- und DHCPACK-Nachrichten an 0xffffffff. Wenn das Broadcast-Bit nicht gesetzt ist und 'giadrdr' null ist und 'ciaddr' gleich Null ist, dann werden vom Server DHCP_OFFER und DHCPACK Nachrichten an die Hardwareadresse des Clients und 'yiaddr' adressiert. In alle Fälle, wenn "Giaddr" Null ist, sendet der Server alle DHCPNAK Nachrichten an 0xffffffff.

mit ciaddr und giaddr Wesen:

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. 

So ist der DHCP-Server wählen, um den aktuellen Zustand des Kunden oder nicht entsprechend zu übertragen (vor allem, wenn es bereits eine IP-Adresse oder nicht) und entsprechend dem Absender der Nachricht, wenn es sich um einen Relay-Agent oder nur einen Client handelt.

Unicast DHCPOFFER

In diesem Fall entschied ich mein DCHP-Server die DHCPOFFER, weil meine Maschine bereits eine IP-Adresse hatte und ich habe nicht einen Relay-Agenten in meinem LAN Unicast.

EDIT:

Und niemand die IP-Adresse 0.0.0.0 als Zieladresse verwenden können. Wie in den IPv4 RFC 5735 angegeben:

0.0.0.0/8 - Adressen in diesem Block zu Quelle Hosts auf "dieses" Netzwerk verweisen. Die Adresse 0.0.0.0/32 kann als Quelladresse für diesen Host in diesem Netzwerk verwendet werden; andere Adressen innerhalb von 0.0.0.0/8 können verwendet werden, um auf angegebene Hosts in diesem Netzwerk zu verweisen ([RFC1122], Abschnitt 3.2.1.3).

+0

Ihre Frage ist nicht klar genug. Bitte posten Sie [eine neue Frage] (http://superuser.com/questions/ask) auf Superuser, in der das Verhalten der beteiligten Geräte, ihre Rolle und möglicherweise IP-Adressen und erfasste Protokolle beschrieben werden. – Avio

+0

Ich habe ein ähnliches Problem, aber die Sache ist, ich habe ein Gerät, das ein DHCP-Discover-Paket für 255.255.255.255 sendet, erhält der Server diese Nachricht (da ich einen Paket-Logger verwenden, um die Aktivitäten aller Knoten zu betrachten) und antwortet, diese Antwort, die mein Gerät erhält, ist ein Broadcast-Frame vom DHCP-Server. Das Gerät akzeptiert die IP-Konfiguration jedoch nicht. Irgendeine Erklärung für diese Anomalie? – Abhinav

+0

Gute Antwort. Erklärt, wie die Dinge funktionieren und ob nicht-broadcast DHCPOFFER möglich ist. Ich möchte aber auch wissen, warum ein DHCP-OFFER gesendet wurde. Irgendwelche Ideen? – limitcracker

0

Von the RFC 2131, Seite 24:

Normalerweise DHCP-Servern und BOOTP-Relay-Agenten versuchen DHCPOFFER, DHCPACK und DHCPNAK Nachrichten direkt an den Client mit uicast Lieferung zu liefern. Die IP-Zieladresse (im IP-Header) ist für die DHCP-Adresse "yiaddr" und die Zieladresse für die Verbindungsschicht ist , die auf die DHCP- "chaddr" -Adresse eingestellt ist. Leider können einige Client Implementierungen solche Unicast-IP-Datagramme nicht empfangen, bis die Implementierung mit einer gültigen IP-Adresse konfiguriert wurde (was zu einem Deadlock führt, in dem die IP-Adresse des Clients nicht geliefert werden kann, bis der Client mit konfiguriert wurde IP Adresse).

Ein Client, sollte so eingestellt empfangen kann nicht unicast IP-Datagramme, bis seine Protokollsoftware konfiguriert wurde, mit einer IP-Adresse des Broadcasts Bit in dem Feld ‚Flags‘ bis 1 in jedem DHCPDISCOVER oder DHCPREQUEST Nachrichten dass Client sendet. Das BROADCAST-Bit gibt einen Hinweis an den DHCP-Server und BOOTP-Relay-Agent, um alle Nachrichten an den Client im Subnetz des Clients zu senden.

Ein Client, dass Unicast-IP-Datagramme, bevor seine Protokollsoftware empfangen hat konfiguriert, sollten die BROADCAST Bit auf 0. Das Dokument BOOTP Erläuterungen klar diskutiert die Auswirkungen der Verwendung des BROADCAST Bit.

Verwandte Themen