DHCP jeb Dinamiskais saimniekdatora konfigurācijas protokols, arī Dinamiskā resursdatora konfigurācijas protokols (angļu: Dynamic Host Configuration Protocol)[1] ir lietojuma slāņa protokols, kuru lieto lai automātiski iedalītu IP adreses un citus TCP/IP uzstādījumus tīkla datoriem. Šis ir uz klienta-servera arhitektūras bāzēts protokols. Serveri ir pieejami visām populārākajām operētājsistēmām un bieži ir iebūvēti jau no sākuma. Klienti ir vēl izplatītāki. Windows operētājsistēmās DHCP klients ir iebūvēts jau sākot ar Windows 95.

DHCP par transporta slāņa protokolu lieto UDP. Serveri vienmēr darbojas uz 67 porta. DHCP pieprasījums satur datora MAC adresi. Atbilde (veiksmīga) vienmēr satur IP adresi, bet var arī saturēt tīkla masku, default gateway, DNS un WINS serverus (to adreses). DHCP serveris ir arī PXE boot servera sastāvdaļa, PXE DHCP servera atbilde satur arī TFTP servera adresi, no kura uzsākt operētājsistēmas ielādi. Klienti izjejošajām UDP paketēm kā source port vienmēr norādā 68 portu un uz turieni arī serveri sūta savas atbildes.

Vienā tīklā var būt vairāki klientu un serveri. Klients, pēc ieslēgšanas, parasti nezin savu IP adresi, bet zin tikai savu MAC adresi. Pilnajā variantā caur tīklu šādā secībā tiek pārsūtītas 4 paketes:

  1. Klients nosūta tīklā broadcast paketi, kurā prasa, lai atsaucas DHCP serveri (IP lease request). Šeit klients nosūta tīklā paketi ar destination adresi 255.255.255.255. Rūteri parasti šādas paketes nelaiž cauri, bet ja vajag, tās ir iespējams pārsūtīt uz citus subnetu. Ja klients zin savu iepriekšējo adresi, tas var pieprasīt apstiprināt veco adresi. Ja tā attiecīgajā tīklā ir derīga, serveris to var apstiprināt.
  2. Visi serveri nosūta tam klientam savus piedāvājumus (IP lease offer). Šeit serveris rezervē klientam IP adresi un nosūta to kopā ar pārējo konfigurāciju (tā parasti ir nemainīga visam tīklam) unicast (sūtot tikai uz attiecīgo MAC adresi) paketē.
  3. Klients izvēlas vienu no piedāvājumiem un paziņo savu izvēli atiecīgajam serverim (IP lease selection). Šeit klients nosūta broadcast paketi visam tīklam, kas satur paņemto IP adresi un izvēlētā DHCP servera adresi, lai pārējie serveri varētu nomest iepriekšējā stadijā rezervēto IP adresi.
  4. Attiecīgais, izvēlētais serveris apstiprina izsniegto konfigurāciju (IP lease acknowledgement). Parasti šī pakete neatšķiras no 2. stadijā lietotās. Šī pakete vienmēr satur informāciju par lietoto lease time un pilnu konfigurāciju. 2. stadijā lietotajai paketei pilnīgi notiekti ir jāsatur tikai IP adrese.

DHCP adrešu piešķiršana ir iespējama 3 veidos:

  • Dinamiskā metode (dynamic allocation). Serverī norāda noteiktu tīklā lietojamo IP adrešu apgabalu un klientiem izsniedz IP adreses no tā apgabala uz notektu laiku. Šī ir visplašāk lietotā metode un vienkāršākajām DHCP serveru implementācijām tā bieži vien ir vienīgā metode.
  • Statiskā metode (static allocation). Serveris permanenti piešķir IP adresi no norādīta IP adrešu apgabala. Šeit atšķirībā no dinamiskās metodes, IP adreses piešķir uz neierobežoti ilgu laiku.
  • Manuālā metode (manual allocation). Serveris piešķir IP adresi no tabulas, kurā sarakstītas visas nodefinētās MAC adreses un tām atbilstošās IP adreses. Klientiem, kuru MAC adrese nav tajā tabulā, IP adresi nedod.

DHCP protokola standarts tika pieņemts 1993. gada oktobrī. Strādājoša pašreizējā protokola versija (pieņemta 1997. gada martā) ir aprakstīta 2131 RFC. Jaunā DHCP protokola versija ir paredzēta izmantošanai Ipv6 vidē, tās nosaukums ir DHCPv6 un tā ir noteikta RFC 3315 (2003. gada jūlijā).

DHCP iespējas

labot šo sadaļu

Bez IP adreses DHCP var arī sniegt klientam papildus parametrus, kas nepieciešami darbībai tīklā. Šos parametrus sauc par DHCP iespējām. Standarta iespēju saraksts atrodams RFC 2132.

Dažas no visbiežāk izmantojamajām iespējām:

  • Maršrutētāja IP adrese pēc noklusējuma;
  • Apakštīkla maska;
  • Servera DNS adrese;
  • Domēna DNS vārds.

Daži programmatūras pārdevēji var noteikt savas papildu DHCP iespējas.

Protokola uzbūve

labot šo sadaļu

DHCP protokols ir klienta-servera protokols, tas ir, viņa darbībā piedalās DHCP klients un DHCP serveris. Datu pārraide tiek veikta izmantojot UDP protokolu, serveris pieņem ziņojumus no klientiem uz 67. portu un sūta ziņojumus klientiem uz 68.portu.

DHCP ziņojumu struktūra

labot šo sadaļu

Visi DHCP ziņojumi tiek sadalīti laukos, kur katrs no tiem satur noteiktu informāciju. Visiem laukiem, izņemot pēdējo (lauku DHCP iespējas), ir fiksēts to garums.

Lauks Apraksts Garums (baitos)
op Ziņojuma tips. Var pieņemt divas vērtības: BOOTREQUEST (1, pieprasījums no klienta uz serveri) un BOOTREPLY (2, atbilde no servera klientam). 1
htype Aparatūras adreses tips. Šī lauka pieļaujamās vērtības ir definētas RFC «Assigned Numbers». Piemēram priekš Ethernet MAC-adreses 10 Mbit/s, šis lauks pieņem vērtību 1. 1
hlen Aparatūras adreses garums baitos. Priekš Ethernet MAC adreses - 6. 1
hops Starpposmu maršrutētāju skaits (tā saucamie DHCP retranslācijas aģenti) caur kuriem ziņojums ir izgājis cauri. Klients šī lauka vērtību iestata - 0. 1
xid Unikālais transakciju identifikators, ko ģenerē klients adreses saņemšanas posma sākumā. 4
secs Laiks sekundēs no adreses saņemšanas posma sākuma. Var tikt neizmantots (šajā gadījumā tas tiek iestatīts uz 0). 2
flags Karodziņu lauks – priekš īpašiem DHCP protokola parametriem. 2
ciaddr Klienta IP adrese. Tiek aizpildīts tikai tad, ja klientam jau ir sava IP adrese un tas spēj atbildēt uz ARP pieprasījumiem (tas ir iespējams, ja klients veic IP adreses atjaunināšanu pēc adreses derīguma termiņa beigām). 4
yiaddr Jaunā klienta IP adrese, kuru piedāvā serveris. 4
siaddr Servera IP adrese, tiek atgriezta ziņojumā no DHCP (skat. zemāk). 4
giaddr Retranslācijas aģenta IP adrese, ja tas ir piedalījies DHCP ziņojuma piegādes procesā uz serveri. 4
chaddr Klienta aparatūras adrese (parasti MAC adrese). 16
sname Neobligātais servera vārds (nosaukums), kas izpaužas kā null terminētā rinda. 64
file Neobligātais servera faila nosaukums, ko izmanto darbstacijas bez diska pie attālinātas ielādes. Tāpat kā sname, tiek attēlots kā null terminēta rinda. 128
options Lauks DHCP iespējas. Šeit tiek norādīti dažādi konfigurācijas parametri. Šī lauka sākumā tiek norādīti četri īpaši baiti ar vērtībām 99, 130, 83, 99 ("maģiskie skaitļi"), kas ļauj serverim noteikt šī lauka esamību. Šim laukam ir mainīgs garums, bet DHCP klientam ir jābūt gatavam pieņemt DHCP ziņojumu ar 576 baitu garumu (šajā ziņojumā lauka iespējas garums ir 340 baiti.) Mainīgs

Adreses saņemšanas procesa piemērs

labot šo sadaļu

Aplūkosim IP adreses iegūšanas piemēru, kad klients to iegūst no DHCP servera. Pieņemsim, ka klientam vēl nav savas IP adreses, bet tam ir zināma iepriekšējā IP adrese – 192.168.1.100. Process sastāv no četrām fāzēm.

DHCP noteikšana

labot šo sadaļu

Sākotnēji klients veic plašu pieprasījumu visā fiziskajā tīklā ar mērķi atrast pieejamos DHCP serverus. Tas nosūta DHCPDISCOVER tipa ziņojumu, un kā avota IP adrese tiek norādīta 0.0.0.0 (jo datoram vēl nav savas IP adreses), bet kā galamērķa adrese tiek norādīta 255.255.255.255.

Klients aizpilda dažus ziņojuma laukus ar sākotnējām vērtībām:

  • Laukā xid tiek ielikts unikāls transakcijas identifikators, kas ļauj atšķirt IP adreses iegūšanas procesu no citiem procesiem, kuri norit tajā pašā laikā.
  • Laukā chaddr tiek ielikta klienta aparatūras adrese (MAC adrese).
  • Laukā iespējas tiek norādīta pēdējā zināmā klienta IP adrese. Šajā piemērā tā ir 192.168.1.100. Tas nav obligāti norādāms lauks, un var tikt ignorēts serverī.

DHCPDISCOVER ziņojums var tikt izplatīta ārpus lokālā fiziskā tīkla, izmantojot īpaši konfigurētus DHCP aģentus, kas novirza no klienta ienākošos ziņojumus citu apakštīklu DHCP serveriem.

DHCP piedāvājums

labot šo sadaļu

Saņemot ziņojumu no klienta, serveris nosaka vēlamo klienta konfigurāciju saskaņā ar tīkla administratora iestatījumiem. Šajā gadījumā DHCP serveris piekrīt klienta pieprasītajai IP adresei 192.168.1.100. Serveris nosūta klientam atbildi (DHCPOFFER), kurā piedāvā tam konfigurāciju. Klientam piedāvātā IP adrese tiek norādīta laukā yiaddr. Pārējie parametri ( maršrutētāja un DNS servera adreses) ir norādīti kā iespējas attiecīgajā laukā.

Šo ziņojumu DHCP serveris sūta resursdatoram (kurš sūtīja DHCPDISCOVER) uz tā MAC adresi. Klients var saņemt vairākus dažādus DHCP piedāvājumus no dažādiem serveriem, no kuriem tam ir jāizvēlas viens kurš to "apmierinās."

DHCP pieprasījums

labot šo sadaļu

Izvēloties vienu no DHCP servera piedāvātajām konfigurācijām, klients nosūta DHCP (DHCPREQUEST) pieprasījumu, pievienojot laukā iespējās īpaša iezīme – servera identifikators – kas norāda DHCP servera adresi, kuru izvēlējies klients (šajā gadījumā – 192.168.1.1).

DHCP apstiprināšana

labot šo sadaļu

Visbeidzot, serveris apstiprina pieprasījumu un nosūta apstiprinājumu (DHCPACK) klientam. Pēc tā klientam jānokonfigurē savu tīkla saskarni izmantojot piedāvātās iespējas.

Ziņojumu izskats

labot šo sadaļu

Šeit ir apskatāmi katra lauka vērtības, katram procesa laikā nosūtītajam DHCP ziņojumam.

DHCP noteikšana
DHCPDISCOVER
UDP src = 0.0.0.0 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(tukšs lauks)
FILE
(tukšs lauks)
OPTIONS
DHCP iespēja 53: DHCP noteikšana
DHCP iespēja 50: Adreses 192.168.1.100 pieprasījums
DHCP Piedāvājums
DHCPOFFER
UDP src = 192.168.1.1 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0xC0A80101
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(tukšs lauks)
FILE
(tukšs lauks)
OPTIONS
DHCP iespēja 53: DHCP piedāvājums
DHCP iespēja 1: apakštīkla maska 255.255.255.0
DHCP iespēja 3: maršrutētājs 192.168.1.1
DHCP iespēja 51: IP adreses derīguma laiks - 1 diena
DHCP iespēja 54: DHCP serveris 192.168.1.1
DHCP pieprasījums
DHCPREQUEST
UDP Src = 0.0.0.0 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(tukšs lauks)
FILE
(tukšs lauks)
OPTIONS
DHCP iespēja 53: DHCP pieprasījums
DHCP iespēja 50: Adreses 192.168.1.100 pieprasījums
DHCP iespēja 54: DHCP serveris 192.168.1.1
DHCP apstiprinājums
DHCPACK
UDP Src = 192.168.1.1 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(tukšs lauks)
FILE
(tukšs lauks)
OPTIONS
DHCP iespēja 53: DHCP apstiprināšana
DHCP iespēja 1: apakštīkla maska 255.255.255.0
DHCP iespēja 3: maršrutētājs 192.168.1.1
DHCP iespēja 51: IP adreses derīguma laiks - 1 diena
DHCP iespēja 54: DHCP serveris 192.168.1.1

Pārējie DHCP ziņojumi

labot šo sadaļu

Papildus ziņojumiem, kas nepieciešami sākotnējai klienta IP adreses saņemšanai DHCP paredz dažus papildus ziņojumus izpildāmajiem uzdevumiem.

DHCP noraidījums

labot šo sadaļu

Ja pēc apstiprinājuma saņemšanas (DHCPACK) no servera, klients atklāj, ka servera norādītā IP adrese jau tiek lietota tīklā, tas izsūta DHCP atteikuma ziņojumu (DHCPDECLINE) pēc kura atkārtojas IP adrese iegūšanas procedūra. Lai noteiktu vai IP adresi jau lieto cits klients, tiek veikts ARP pieprasījums.

DHCP atteikums

labot šo sadaļu

Ja kāda iemesla dēļ serveris nevar sniegt klientam viņa pieprasīto IP adresi, serveris sūta apraides ziņojumu par DHCP atteikumu (DHCPNAK) pēc kura atkārtojas IP adrese iegūšanas procedūra.. Saņemot šādu ziņojumu klientam jāveic atkārtotu IP adreses pieprasīšanas procedūru.

DHCP atbrīvošana

labot šo sadaļu

Klients var izbeigt IP adreses izmantošanu. Lai to izdarītu, tas nosūta uz serveri ziņojumu atbrīvot DHCP (DHCPRELEASE) tam serverim, kurš viņam piešķīra IP adresi.

DHCP informācija

labot šo sadaļu

DHCP informācijas ziņojumi (DHCPINFORM) ir paredzēta, lai noteiktu papildus parametrus TCP / IP (piemēram, noklusētā maršrutētāja IP adrese, DNS serveri utt) tiem klientiem, kuriem nav nepieciešama dinamiskā IP adrese. Serveri uz šādu ziņojumu atbild ar pieprasījuma apstiprinājumu (DHCPACK) bez IP adreses izdalīšanas.

Ieviešanas vēsture

labot šo sadaļu

Microsoft pirmo reizi DHCP serveri iekļāva „Windows NT 3.5” servera versijā, kuru izlaida 1994. gadā. Sākot ar „Windows 2000 Server” versiju DHCP serveris spēja dinamiski atjaunināt DNS ierakstus, kas tiek izmantots aktīvajā direktorijā (Angliski - Active Directory).

Interneta Systems Consortium 1997. gada 6. decembrī izlaida ISC DHCP Server pirmo versiju (Unix veidīgajām sistēmām). 1999. gada 22. jūnijā tika izlaista 2.0 versija, kura daudz precīzāk atbilda standartam.

Cisco DHCP serveri iekļāva savā produktā - „Cisco IOS 12.0” 1999. gada februārī. Sun iekļāva DHCP serveri „Solaris 8” produktā 2001. gada jūlijā.

Pašlaik DHCP servera risinājumi, priekš Windows operētājsistēmām, pastāv atsevišķu programmu izskatā, kas ļauj datoriem veikt DHCP servera lomu neizmantojot servera OS versijas.