Katedra Informatyki Stosowanej
Politechnika Łódzka
Al. Politechniki 11, 90-925 Łódź
Tel. (0-42) 631-26-89
Sieci komputerowe I
Wykład 5: Protokoły BOOTP oraz DHCP.
Opracowanie:
mgr Łukasz Sturgulewski (lsturgu@kis.p.lodz.pl)
BOOTstrap Protocol - BOOTP
Ogólna charakterystyka.
Protokół BOOTP (model klient-serwer) służy do określenia przy starcie jednostki wszystkich informacji potrzebnych do jej działania w sieci TCP/IP np. adresu IP.
Protokół BOOTP używa UDP oraz IP.
Do wysyłania pakietów wykorzystywany jest adres ograniczonego rozgłaszania (255.255.255.255) gdyż początkowo oprogramowanie IP nie zna adresu sieci ani adresu IP swojej jednostki.
Ponieważ BOOTP używa protokołu UDP należało:
Wprowadzić wymóg używania w UDP sumy kontrolnej;
Nie fragmentować datagramów IP (ponieważ nie wszystkie jednostki mają odpowiednią ilość pamięci aby przechowywać części datagramów);
Umożliwić wysłanie wielu odpowiedzi (przetwarzana jest oczywiście tylko jedna!);
Zaimplementować obsługę metody przekraczania terminu i retransmisji.
Aby unikną równoczesnych transmisji losuje się czas oczekiwania (0 - 4s).
Aby dodatkowo nie obciążać przeciążonej sieci podwaja się czas oczekiwania po każdej nie udanej retransmisji (po osiągnięciu 60s wracamy do przedziału 0 - 4s).
Komunikat BOOTP.
Wszystkie pola mają ustalony rozmiar, a prośby i odpowiedzi mają ten sam format (aby zapewnić prostotę).
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
39 |
31 |
OPERACJA |
TYP SPRZĘTU |
DŁ. ADRESU SPRZ. |
ETAPY |
||||||||||||||||||||||||||||
IDENTYFIKATOR TRANSAKCJI |
|||||||||||||||||||||||||||||||
SEKUNDY |
NIE UŻYWANE |
||||||||||||||||||||||||||||||
ADRES IP KLIENTA |
|||||||||||||||||||||||||||||||
TWÓJ ADRES IP |
|||||||||||||||||||||||||||||||
ADRES IP SERWERA |
|||||||||||||||||||||||||||||||
ADRES IP ROUTERA |
|||||||||||||||||||||||||||||||
ADRES SPRZĘTOWY KLIENTA (16 oktetów) ... |
|||||||||||||||||||||||||||||||
NAZWA WĘZŁA SERWERA (64 oktety) ... |
|||||||||||||||||||||||||||||||
NAZWA PLIKU STARTOWEGO (128 oktetów) ... |
|||||||||||||||||||||||||||||||
DANE SPECYFICZNE DLA FIRMY (64 oktetów) ... |
Opis pól:
OPERACJA: Określa czy komunikat jest prośbą startową - 1
czy odpowiedzią startową - 2;
TYP SPRZĘTU: Typ sprzętu sieciowego (Ethernet - 1);
DŁUGOŚĆ ADRESU SPRZĘTOWEGO: Długość adresu sprzętowego (Ethernet - 6);
ETAPY: Klient wpisuje zero. Każde przekazanie tej prośby do innego serwera powoduje zwiększenie licznika o jeden.
IDENTYFIKATOR TRANSAKCJI: Liczba całkowita służąca do związania odpowiedzi z pytaniem;
SEKUNDY: Liczba sekund od startu klienta;
Od ADRES IP KLIENTA do NAZWA PLIKU STARTOWEGO: Pola, których wartości klient nie jest w stanie podać wypełnia zerami. Serwer wypełnia pola informacjami przeznaczonymi dla klienta (jeśli ADRES IP KLIENTA = 0 wtedy serwer wypełnia pole TWÓJ ADRES IP);
DANE SPECYFICZNE DLA FIRMY:
Pierwsze 4 oktety definiują format pozostałej części (tzw. Magiczne ciasteczko). Opisany poniżej format używa ciasteczka o wartości 99.130.83.99.
Dalej znajduję się lista w skład, której wchodzi następujące pola:
jeden oktet typu;
jeden oktet długości;
wiele oktetów wartości.
Najważniejsze typy:
Typ pozycji |
Kod pozycji |
Długość wartości |
Zawartość wartości |
Uzupełnienie |
0 |
- |
Zero (używane do dopełnienia |
Maska podsieci |
1 |
4 |
Maska podsieci dla sieci lokalnej |
Godzina |
2 |
4 |
Godzina czasu uniwersalnego |
Routery |
3 |
4n |
Adresy IP n routerów |
Serwer czasu |
4 |
4n |
Adresy IP n serwerów czasu |
Serwer dziedzinowy |
6 |
4n |
Adresy IP n serwerów dziedzinowych |
Nazwa węzła |
12 |
N |
n bajtów nazwy węzła dla klienta |
Plik Startowy |
13 |
2 |
2 oktety - rozmiar pliku startowego |
Zarezerwowane |
128-254 |
- |
Zarezerwowane do własnego użytku w ramach jednostek. |
Wady.
Brak dynamicznej konfiguracji węzła (plik konfiguracyjny serwera BOOTP zawiera wszystkie potrzebne informacje dla każdego węzła w sieci).
W przypadku, gdy następują częste zmiany sieci oraz gdy liczba jednostek przekracza dostępną pulę adresów IP statyczny system stosowany w BOOTP po prostu się nie sprawdza.
Dynamic Host Configuration Protocol - DHCP (Dynamiczna konfiguracja węzłów)
Ogólna charakterystyka DHCP.
Jest kompatybilny z BOOTP (serwer DHCP może odpowiadać na komunikaty BOOTP);
Umożliwia przekazanie wszystkich informacji potrzebnych do funkcjonowania w sieci w jednym komunikacie;
Umożliwia szybkie dostarczenie przyznanego adresu;
Do poprawnego działania wymagany jest poprawnie skonfigurowany serwer DHCP.
DHCP obsługuje trzy metody przyznawania adresów:
Ręczne wyznaczanie adresu (statyczne);
Automatyczne przyznawanie stałego adresu dla jednostki włączającej się po raz pierwszy do sieci (dynamiczne bez ograniczeń).
Automatyczne przyznawanie adresu dla na określony czas (dynamiczne na czas).
Jednostki są identyfikowane przez serwer po identyfikatorze, którym przeważnie jest ich adres sprzętowy.
Sposób obsługi jednostki zależy od konfiguracji serwera.
Dynamiczne przyznawanie adresów, a więc możliwość obsługi dowolnego węzła, daje możliwość budowania samokonfigurujących się sieci.
Rola administratora przy konfiguracji serwera DHCP:
Wyznaczanie puli adresów, z której może korzystać serwer DHCP;
Określenie reguł, którymi posługuje się serwer przy przyznawaniu adresów.
Czas, na który serwer przyznaje adres zależy od życzenia klienta oraz konfiguracji serwera. Dla szybko zmieniających się warunków sieci - krótki, dla innych - długi.
Pośrednik (relayagent) - Umożliwia kontakt z serwerem DHCP znajdującym się w sieci nielokalnej.
Procedura uzyskania adresu.
Klient startuje (stan INICJALIZUJ);
Klient wysyła komunikat DHCPDISCOVER (port 67, UDP);
Klient przechodzi w stan WYBIERZ;
Serwer wysyła DHCPOFFER;
Klient zbiera komunikaty DHCPOFFER;
Klient wybiera jedną z odebranych ofert (przeważnie pierwszą, jaką otrzymał);
Klient negocjuje w sprawie wynajęcia - komunikat DHCPPREQUEIT;
Klient przechodzi w tan PROŚBA;
Serwer potwierdza rozpoczęcie wynajmu adresu - wysyła DHCPACK;
Klient po odebraniu tego potwierdzenia przechodzi w stan POWIĄZANIE.
Zakończenie wynajmu.
Klient wysyła komunikat DHCPPRELEASE;
Przejście w stan INICJALIZUJ.
Odnowienie wynajmu.
Będąc w stanie POWIĄZANIE klient ustawia trzy zegary:
Czas odnowienia;
Koniec czasu odnowienia:
Klient wysyła do serwera komunikat DHCPREQUEST;
Klient przechodzi w stan ODNÓW;
Jeśli serwer zaakceptuje prośbę klienta wysyła komunikat DHCPACK, a klient po jego odebraniu przechodzi w stan POWIĄZANIE;
Jeśli serwer odrzuci prośbę klienta wysyła komunikat DHCPNACK, a klient po jego odebraniu przechodzi w stan INICJALIZUJ;
Czas przewiązania;
Koniec czasu przewiązania np. serwer nie odpowiada na komunikat wysłany po zakończeniu czasu na pierwszym zegarze.
Klient przechodzi ze stanu ODNÓW do stanu PRZEWIĄŻ;
Klient wysyła komunikat DHCPREQUEST do serwerów DHCP;
Jeśli serwer zaakceptuje prośbę klienta wysyła komunikat DHCPACK, a klient po jego odebraniu przechodzi w stan POWIĄZANIE;
Jeśli serwer odrzuci prośbę klienta wysyła komunikat DHCPNACK, a klient po jego odebraniu przechodzi w stan INICJALIZUJ;
Czas zakończenia.
Klient wysyła komunikat DHCPPRELEASE;
Przejście w stan INICJALIZUJ.
Czasy te określa serwer DHCP. Jeśli tego nie zrobi zajmuje się tym klient ustalając dla powyższych czasów domyślne wartości.
Format komunikatu DHCP.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
39 |
31 |
OPERACJA |
TYP SPRZĘTU |
DŁ. ADRESU SPRZ. |
ETAPY |
||||||||||||||||||||||||||||
IDENTYFIKATOR TRANSAKCJI |
|||||||||||||||||||||||||||||||
SEKUNDY |
ZNACZNIKI |
||||||||||||||||||||||||||||||
ADRES IP KLIENTA |
|||||||||||||||||||||||||||||||
TWÓJ ADRES IP |
|||||||||||||||||||||||||||||||
ADRES IP SERWERA |
|||||||||||||||||||||||||||||||
ADRES IP ROUTERA |
|||||||||||||||||||||||||||||||
ADRES SPRZĘTOWY KLIENTA (16 oktetów) ... |
|||||||||||||||||||||||||||||||
NAZWA WĘZŁA SERWERA (64 oktety) ... |
|||||||||||||||||||||||||||||||
NAZWA PLIKU STARTOWEGO (128 oktetów) ... |
|||||||||||||||||||||||||||||||
OPCJE (zmienna długość) ... |
Format komunikatu DHCP jest zbliżony do BOOTP. Zmianie uległo tylko znaczenie dwóch pól.
ZNACZNIK (w BOOTP - NIEUŻYWANE): Wykorzystywany jest tylko najstarszy bit, pozostałe muszą być zerami. Gdy najstarszy bit jest ustawiony oznacza to prośbę rozgłaszania. Dzięki odpowiedzi rozgłaszanej mamy pewność, że IP nie odrzuci takiego datagramu. Jest to istotne w momencie, gdy klient nie ma jeszcze ustalonego adresu IP.
OPCJE: Format pola jest taki sam jak pola DANE SPECYFICZNE DLA FIRMY w BOOTP.
Każda opcja składa się z trzech pól:
jeden oktet typu;
jeden oktet długości;
wiele oktetów wartości.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
KOD |
DŁUGOŚĆ |
WARTOŚĆ |
Rysunek dla DŁUGOŚĆ = 1
Aby określić, który z komunikatów DHCP jest wysyłany należy następująco ustalić opcje:
KOD = 53;
DŁUGOŚĆ = 1;
WARTOŚĆ = 1 - 7;
1 - DHCPDISCOVER
2 - DHCPOFFER
3 - DHCPREQUEST
4 - DHCPDECLINE
5 - DHCPACK
6 - DHCPNACK
7 - DHCPRELEASE
Uwagi.
Ponieważ pola NAZWA WĘZŁA SERWERA oraz NAZWA PLIKU STARTOWEGO są rzadko używane, DHCP udostępnia opcję przeładowania, dzięki której można te pola wykorzystać na opcje.
DHCP nie współpracuje z systemem nazw dziedzin - brak protokołu dynamicznego uaktualniania DNS.
Protokoły BOOTP oraz DHCP
- 6 -