DHCP

**DHCP** jeb **Dinamiskais saimniekdatora konfigurācijas protokols**, arī **Dinamiskā resursdatora konfigurācijas protokols** () 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āda 68 portu un uz turieni arī serveri sūta savas atbildes.

## Darbība
Vienā tīklā var būt vairāki klientu un serveri. Klients, pēc ieslēgšanas, parasti nezina savu IP adresi, bet zina tikai savu MAC adresi. Pilnajā variantā caur tīklu šādā secībā tiek pārsūtītas 4 paketes:
# 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.
# 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ē.
# Klients izvēlas vienu no piedāvājumiem un paziņo savu izvēli attiecī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.
# Attiecīgais, izvēlētais serveris apstiprina izsniegto konfigurāciju (*IP lease acknowledgemen*t). 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 noteikti 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 noteiktu 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.

## Vēsture

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  (2003. gada jūlijā).

## DHCP iespējas

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 .

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

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

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.

## Adreses saņemšanas procesa piemērs

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

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

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

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

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

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

## Pārējie DHCP ziņojumi

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

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

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

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

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
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ā (*Active Directory*).

*Internet 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 *Windows* operētājsistēmām pastāv atsevišķu programmu izskatā, kas ļauj datoriem veikt DHCP servera lomu, neizmantojot servera OS versijas.

## Atsauces