Bootstrap Protocol
Wygląd
BOOTP (ang. Bootstrap Protocol) – protokół komunikacyjny typu UDP umożliwiający komputerom w sieci uzyskanie od serwera danych konfiguracyjnych, np. adresu IP. Rozwinięciem i następcą protokołu BOOTP jest DHCP.
BOOTP jest zdefiniowany w RFC 951[1].
Zasada działania (w uproszczeniu)
[edytuj | edytuj kod]- Klient formułuje i wysyła zapytanie BOOTP na adres broadcast (port docelowy 67, port źródłowy 68). Operacje wykonywane przed wysłaniem:
- Klient ustawia „liczbę skoków” na 0. Każdy pośredni router będzie zwiększał tę liczbę o 1. Jeśli wartość ta przekroczy skonfigurowane na serwerze maksimum, pakiet zostanie odrzucony.
- Klient ustawia „liczbę sekund” na 0. Jeśli nie otrzyma odpowiedzi, klient ponawia zapytanie, ustawiając pole, ponownie wpisując liczbę sekund, jaka upłynęła od czasu wysłania pierwszego pakietu BOOTREQUEST.
- Klient ustawia „adres IP bramki” na 0. Serwer BOOTP po odczytaniu tak wypełnionego pola wpisuje w nie swój adres.
- Jeśli klient zna swój adres IP, wypełnia pole „adres IP klienta”.
- Serwer, po odebraniu pakietu, sprawdza, czy posiada konfigurację dla klienta. Jeśli tak jest, wysyła odpowiedni pakiet BOOTREPLY do klienta zawierający wymagane informacje konfiguracyjne lub nazwę pliku, który klient pobiera z serwera, wykorzystując TFTP.
- Jeśli serwer nie posiada konfiguracji dla klienta, sprawdza, czy posiada dla niego informację o przekazaniu zapytania do innego serwera BOOTP. Jeśli tak nie jest, pakiet jest odrzucany. W przeciwnym wypadku serwer sprawdza, czy:
- „liczba skoków” przekroczyła skonfigurowane maksimum
- „liczba sekund” przekroczyła dopuszczalną wartość
- Jeśli którykolwiek z warunków jest spełniony, pakiet zostaje odrzucony. Jeśli żaden nie jest spełniony, serwer przekazuje zapytanie do innego serwera BOOTP zgodnie z konfiguracją.
- Kroki 2, 3 są powtarzane dopóty, dopóki nie znajdzie się serwer gotowy udzielić odpowiedzi klientowi lub nie zostanie spełniony jeden z warunków odrzucenia pakietu.
UWAGA: Z użyciem protokołu BOOTP maszyna może wystartować poprzez bramkę, istotne jednak jest, aby serwer BOOTP zawierający informację o przekazaniu zapytania BOOTREQUEST znajdował się po tej samej stronie bramki co klient.
Nagłówek BOOTP
[edytuj | edytuj kod]00-07 | 08-15 | 16-23 | 24-31 | ||||||||||||||||||||||||||||
operacja | typ sprzętu | długość adresu sprzętowego | liczba skoków | ||||||||||||||||||||||||||||
xid (identyfikator transakcji) | |||||||||||||||||||||||||||||||
liczba sekund | nie używane | ||||||||||||||||||||||||||||||
adres IP klienta | |||||||||||||||||||||||||||||||
przydzielony adres IP klienta | |||||||||||||||||||||||||||||||
adres IP serwera | |||||||||||||||||||||||||||||||
adres IP bramki | |||||||||||||||||||||||||||||||
adres sprzętowy klienta (16 oktetów) | |||||||||||||||||||||||||||||||
nazwa serwera (64 oktety) | |||||||||||||||||||||||||||||||
plik startowy (128 oktetów) | |||||||||||||||||||||||||||||||
opcje producenta (64 oktety) |
- operacja
- kod operacji, możliwe wartości to: BOOTREQUEST [1], BOOTREPLY [2]
- typ sprzętu
- liczba z zakresu 1-28 oznaczająca typ sprzętu (karty sieciowej). Dla sieci ethernetowej przyjmuje wartość 1.
- długość HA
- długość adresu sprzętowego używanego do identyfikacji urządzeń sieciowych
- liczba skoków
- zliczanie pośrednich ruterów biorących udział w transmisji pakietu
- xid
- wybierany losowo przez klienta identyfikator (w sytuacji, gdy serwer nie będzie w stanie 'zrozumieć' adresu sprzętowego klienta (wyśle odpowiedź na broadcast), xid będzie jedynym sposobem rozpoznania odpowiedzi kierowanej do klienta)
- liczba sekund
- mierzony w sekundach czas, jaki upłynął od momentu pierwszego wysłania przez klienta wiadomości typu BOOTREQUEST
- flagi
- zdefiniowane w RFC 1542[2]
- adres IP klienta
- ustawia klient, jeśli zna
- przydzielony adres IP
- ustawia serwer
- adres IP serwera
- ustawia serwer
- adres IP bramki
- ustawia serwer
- adres sprzętowy klienta
- ustawia klient
- nazwa serwera
- ustawia serwer
- plik startowy
- ustawia serwer
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ W.J. Croft , J. Gilmore , Bootstrap Protocol, RFC 951, IETF, wrzesień 1985, DOI: 10.17487/RFC0951, ISSN 2070-1721, OCLC 943595667 (ang.).
- ↑ W. Wimer , Clarifications and Extensions for the Bootstrap Protocol, RFC 1542, IETF, październik 1993, DOI: 10.17487/RFC1542, ISSN 2070-1721, OCLC 943595667 (ang.).