BOOTP | |
---|---|
namn | Bootstrap-protokoll |
Nivå (enligt OSI-modellen ) | applicerad |
Familj | TCP/IP |
Skapad i | 1985 |
Port/ID |
67/ UDP (server), 68/UDP (klient) [1] |
Syftet med protokollet | få nätverkskonfiguration |
Specifikation | RFC 951 , RFC 1542 |
BOOTP (från det engelska bootstrap-protokollet ) är ett nätverksprotokoll för applikationslager som används för att automatiskt få en IP-adress av klienten . Detta händer vanligtvis medan datorn startar upp . BOOTP definieras i RFC 951 .
BOOTP, som RARP , tillåter en speciell server att bestämma klientens IP-adress från dess MAC- adress (till exempel vid uppstart av en enhet som inte har möjlighet att lagra sin egen IP-adress), och låter även klienter lära sig andra startparametrar (till exempel namnet på programmet, nedladdat via TFTP ) och använder UDP som transportlagerprotokoll. Detta gör att du kan använda routrar (bootp relay) för att skicka förfrågningar och svar från ett LAN-segment till ett annat. DHCP ( Dynamic Host Configuration Protocol ) är ett tillägg för BOOTP (för kompatibilitet med bootp-relä) och låter servern tilldela IP-adresser till klienter dynamiskt under en begränsad period.
Underhållspersonal från dessa (?) år stod inför utmaningarna att ständigt ansluta och flytta nya enheter, samt behovet av att ändra nätverkskonfigurationen för att möta moderna nätverkskrav. Allt detta ledde till behovet av att skapa en mekanism för att automatisera konfigurationen av nätverksnoder, distribuerade operativsystem och nätverksprogramvara. Det mest effektiva sättet att implementera en sådan mekanism kan vara att lagra konfigurationsinställningar och programvarubilder på en eller flera startservrar. Under uppstart interagerar systemet med en sådan server, tar emot initiala konfigurationsparametrar från den och, om nödvändigt, laddar ner nödvändig programvara från den.
BOOTP introducerades i RFC 951 som en ersättning för den föråldrade RARP. BOOTP utvecklades ursprungligen för disklösa arbetsstationer . Moderna förhållanden har lett till behovet av att automatisera uppstarten av system som endast har grundläggande verktyg för IP , UDP och TFTP i ROM. Det ursprungliga startskriptet såg ut så här:
Nedladdningsbegäran och svaret använder samma meddelandeformat. I begäran har vissa fält nollvärden.
BOOTP-paketstruktur [2] :
Segmentoffset _ |
Längd, oktett |
Beskrivning |
---|---|---|
0 | ett | Operationskod _ |
ett | ett | HType Utrustningstyp |
2 | ett | Hlen Hårdvaruadresslängd |
3 | ett | Humle Antal humle |
fyra | fyra | XID Transaktions-ID |
åtta | 2 | Sekunder Sekunder räknare sedan den första begäran skickades av klienten |
tio | 2 | Används inte i RFC 951 Flags - Flags-fält i RFC 1542 |
12 | fyra | CIAddr klientens IP-adress |
16 | fyra | YIAddr IP-adressen som servern tillhandahåller klienten |
tjugo | fyra | SIAddr-serverns IP-adress |
24 | fyra | GIAddr IP-adress för den mellanliggande routern |
28 | 16 | CHAddr Client hårdvaruadress |
44 | 64 | SName Server värdnamn |
108 | 128 | Filnamn på startfilen |
236 | 64 | Vend Developer Area och avancerade alternativ |
Låt oss överväga alla parametrar mer i detalj.
Op-koden anger typen av meddelande:
Anger typen av nätverkshårdvara som används, med värden som liknar fältet Hardware Type ( HType , HRD ) i ARP - protokollspecifikationen [3] [4] .
Några vanliga värden:
h typ | Beskrivning |
---|---|
ett | Ethernet (10 Mb) |
6 | IEEE 802-nätverk |
7 | ARCNET |
femton | ramrelä |
16 | Asynkront överföringsläge (ATM) |
arton | fiberkanal |
tjugo | seriell linje |
Anger längden på hårdvaruadressen i meddelandet. För Ethernet-nätverk och andra som använder IEEE 802 är värdet på denna parameter 6.
Ett liknande fält i ARP-paketet är HLN.
Detta segment används av reläer för att styra vidarebefordran av meddelanden. Fältvärdet sätts till 0 innan det skickas och ökas med 1 när det passerar genom varje relä.
Transaktions-ID:t är ett 32-bitars heltal som ställs in av klienten och returneras av servern. Det låter klienten matcha svaret med begäran. Klienten ställer in detta fält till ett slumptal för varje begäran.
När klienten skickar den första nedladdningsbegäran, sätts sekundräknarfältet till noll. Om förfrågan inte får något svar, efter att timeout löpt ut, skickar klienten förfrågan igen, vilket ändrar värdet i sekundräknarfältet. För timeout använder klienten ett slumpmässigt intervall som ökar upp till ett värde på 60 sekunder.
Detta fält har inget speciellt syfte. Dess innehåll kan kontrolleras av servern eller nätverksmonitorn för att avgöra hur länge klienten väntar på en nätverksnedladdning. Servern KAN använda värdena i sekundräknarfältet för att prioritera förfrågningar, men detta fält ignoreras för närvarande i de flesta implementeringar.
I den ursprungliga RFC 951 lämnades detta tvåbytefält tomt. Enligt RFC 1542 används den för att sätta flaggor [5] .
Flaggans namn | Storlek, lite | Beskrivning |
---|---|---|
B | ett | Broadcast: när det ursprungliga meddelandet skickas känner inte klienten till sin egen IP-adress, och denna flagga är inställd på "1". Detta tillstånd indikerar för BOOTP-servrarna och reläerna som tog emot paketet att begäran från den här klienten ska sändas . |
Reserverad | femton | Reserverad och ej använd, värden satt till 0. |
Om klienten redan känner till sin IP-adress, fyller den i klientens IP-adressfält. Om inte sätter klienten detta värde till 0. I det senare fallet infogar servern din IP-adress i fältet med klientens IP-adress. Serverns IP-adressfält fylls i av servern. Om en auktoritativ server används fyller den i gatewayens IP-adress.
Klienten måste ställa in sin klientmaskinvaruadress. Detta är samma värde som finns i Ethernet-huvudet och i UDP-fältet i datagrammet, vilket gör det tillgängligt för alla användarprocesser (som en BOOTP-server) som har tagit emot datagrammet. Det är vanligtvis svårt eller nästan omöjligt för en process som hanterar UDP-datagram att bestämma värdet i Ethernet-huvudfältet för det datagram i vilket UDP-datagrammet skickas.
Serverns värdnamn är en sträng som fylls i av servern (valfritt).
Servern kan också fylla i fältet för startfilnamn. Detta fält innehåller den fullständiga sökvägen till filen som används vid uppladdning.
Ursprungligen användes det leverantörsspecifika området i meddelanden för att skicka implementeringsspecifik information. Men i början av BOOTP förblev detta område fritt, även om en stor mängd information (till exempel subnätmasken eller standardrouteradressen) inte formellt inkluderades i meddelandena. Utvecklarområdet fungerade som en plats för ytterligare konfigurationsalternativ samt utvecklarspecifik information. Det finns en hel del olika områden definierade inom detta område.
BOOTP har två förkända portar: 67 för servern och 68 för klienten. Det innebär att klienten inte väljer en oanvänd dynamiskt tilldelad port utan använder portnummer 68. Anledningen till att två portnummer valdes istället för att endast använda ett för servern är att servern kan skicka ett svar (även om det vanligtvis inte gör det ) på ett sändningssätt.
Om svaret från servern sändes ut och om klienten behövde välja ett dynamiskt tilldelat portnummer, skulle dessa sändningar också tas emot av andra applikationer på andra värdar som använder samma dynamiskt tilldelade portnummer. Således kan vi dra slutsatsen att det inte är rationellt att skicka en sändningsförfrågan till ett slumpmässigt (dynamiskt tilldelat) portnummer.
Om klienten använder serverns välkända port (67), kommer alla servrar i nätverket att tvingas lyssna på varje sändningssvar. (Om alla servrar "väcktes" skulle de behöva kontrollera op-koden, fastställa att det var ett svar och inte en förfrågan och "sova" igen.) Så valet gjordes på hur det görs nu, d.v.s. klienten har sin egen den enda kända porten som skiljer sig från serverns kända port.
Om flera klienter laddar ner samtidigt och om svar från servern sprids av sändningsförfrågningar, tittar varje klient på de svar som är avsedda för andra klienter. Klienter använder transaktions-ID-fältet i BOOTP-huvudet för att matcha svaret med begäran, eller så tittar servrar på den returnerade klientmaskinvaruadressen.
TCP / IP-protokoll efter lager av OSI-modellen | Grundläggande|
---|---|
Fysisk | |
kanaliserad | |
nätverk | |
Transport | |
session | |
Representation | |
Applicerad | |
Annat ansökt | |
Lista över TCP- och UDP-portar |