2012-05-17 14 views
12

Dlaczego serwer nie może używać docelowego adresu IP 0.0.0.0, jaki jest używany w źródłowym adresie IP usługi DHCP Discover and Request? Może wykorzystywać adres MAC klienta wyuczonego z DHCP Discover i Request, aby skierować ramkę na odpowiedni komputer klienta.Dlaczego emitowane są oferty DHCP i Ack?

+0

Podejrzewam, że jest to potrzebne do pracy w środowiskach, w których istnieje wiele współpracujących serwerów DHCP. Może być potrzebne, aby agenci przekaźnikowi również działali poprawnie. – Flexo

Odpowiedz

14

Wybór unicast lub nadawany jest określony w DHCP RFC 2131:

Jeśli „giaddr” pole w komunikacie DHCP od klienta jest niezerowe, serwer wysyła żadnych wiadomości powrotne do port "serwera DHCP" w agencie przekazującym BOOTP, którego adres pojawia się w 'giaddr'. Jeśli pole "giaddr" wynosi zero, a pole "ciaddr" jest niezerowe, to serwer unicastuje komunikaty DHCPOFFER i DHCPACK na adres w "ciaddr". Jeśli "giaddr" ma wartość zero, a "ciaddr" wynosi zero, a bit rozgłoszeniowy jest ustawiony na , wówczas serwer nadaje komunikaty DHCPOFFER i DHCPACK do 0xffffffff. Jeśli bit transmisji nie jest ustawiony, a "giaddr" wynosi zero, a "ciaddr" wynosi zero, to serwer unicastuje komunikaty DHCPOFFER i DHCPACK na adres sprzętowy klienta i adres "yiaddr". W przypadku wszystkich przypadków, gdy "giaddr" wynosi zero, serwer rozgłasza wszystkie komunikaty DHCPNAK do 0xffffffff.

z ciaddr i giaddr istota:

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. 

więc serwer DHCP zdecyduje się nadaje lub nie odpowiednio do aktualnego stanu klienta (głównie jeśli już adres IP lub nie) i odpowiednio do nadawcy wiadomości, jeśli jest to agent przekazujący lub tylko klient.

Unicast DHCPOFFER

W tym przypadku, mój serwer DCHP wybrał emisji pojedynczej DHCPOffer bo moja maszyna już adres IP i nie mam agenta przekaźnika w mojej sieci LAN.

EDIT:

I nikt nie może używać adresu IP 0.0.0.0 jako adres docelowy. Jak określono w IPv4 RFC 5735:

0.0.0.0/8 - Adresy w tym bloku odnoszą się do hostów źródłowych na "to" sieci. Adres 0.0.0.0/32 może być używany jako adres źródłowy dla tego hosta w tej sieci; inne adresy w zakresie 0.0.0.0/8 mogą być użyte do odnoszą się do określonych hostów w tej sieci ([RFC1122], sekcja 3.2.1.3).

+0

Twoje pytanie nie jest wystarczająco jasne. Opublikuj [nowe pytanie] (http://superuser.com/questions/ask) na Superuser szczegółowo opisujące zachowanie zaangażowanych urządzeń, ich rolę i, być może, adresy IP i przechwycone dzienniki. – Avio

+0

Mam podobny problem, ale chodzi o to, że mam urządzenie, które wysyła pakiet DHCP Discover, przeznaczony do 255.255.255.255, serwer otrzymuje ten komunikat (ponieważ używam rejestratora pakietów do przeglądania działań wszystkich węzłów) i odpowiedzi, ta odpowiedź, którą otrzymuje moje urządzenie, jest ramką rozgłoszeniową z serwera DHCP. Ale urządzenie nie akceptuje konfiguracji IP. Jakieś wyjaśnienie tej anomalii? – Abhinav

+0

Dobra odpowiedź. Wyjaśnia, jak działają i czy możliwe jest posiadanie niezaprogramowanego DHCPOFFER. Ale chciałbym również poznać powód posiadania nadawanego DHCPOFFER. Jakieś pomysły? – limitcracker

0

Od the RFC 2131, strona 24:

Normalnie, serwery DHCP i BOOTP środki przekaźnikowe próbować dostarczyć wiadomości DHCPOffer, DHCPAck i DHCPNack bezpośrednio do klienta przy użyciu dostawę uicast. Adres docelowy IP (w nagłówku IP) jest ustawiony na na adres DHCP "yiaddr", a docelowy adres warstwy łącza to ustawiony na adres "chaddr" DHCP. Niestety, niektóre implementacje klienta nie mogą odbierać takich jednostkowych datagramów IP do momentu, aż implementacja została skonfigurowana z poprawnym adresem IP (prowadząc do zakleszczenia, w którym adres IP klienta nie może być dostarczony, dopóki klient nie zostanie skonfigurowany Adres IP).

Klient, który nie może odbierać unicast datagramy IP, aż jego oprogramowanie protokół został skonfigurowany z adresem IP powinien ustawić bitu nadawane w zakresie do 1 „Flags” w każdym DHCPDiscover lub DHCPRequest wiadomości, które klient wysyła. Bit BROADCAST dostarczy wskazówkę dla serwera DHCP i agenta przekaźnika BOOTP do transmisji wiadomości do klienta w podsieci klienta.

Klient, który może odbierać datagramów IP unicast przed jego oprogramowania protokół został skonfigurowany POWINIEN skasować bit transmisji na 0. BOOTP wyjaśnienia dokument omawia konsekwencje używania TRANSMISJA bit.