Keširanje kod DNS-a
U primeru rekurzivnog DNS razrešavanja datog u delu „Teorija rada DNS-a“ prikazan je skup koraka koji je teoretski neophodno proći da bi klijent dobio informaciju od servera. U praksi bi, međutim, ovakav način rada kod svakog DNS upita za svaki Internet domen stvorio ogromno opterećenje svih DNS servera koji učestvuju u razrešavanju određenog domena. Ovo se pre svega odnosi na korene DNS servere i DNS servere kojima klijent direktno pristupa. Da bi se izbeglo pomenuto opterećenje uvedeno je keširanje rezultata.
Keširanje kod DNS-a ima za cilj da omogući svakom od DNS servera smanjenje broja upita koje on postavlja ostalim DNS serverima pri razrešavanju upita vezanog za domene iz zone za on nije nadležan. Ukoliko je keširanje uključeno na DNS serveru, on u svojoj internoj bazi čuva rezultate svih uspešno obavljenih razrešavanja tako da, ukoliko se isti upit ponovi, server ne mora da traži ponovo sve informacije od ostalih DNS servera već koristi potojeću informaciju iz baze.
Ovakav način rada štedi procesorske resurse i komunikacione kanale DNS servera ali otvara i novo pitanje - ukoliko se informacija o domenu na za njega nadležnom DNS serveru izmeni, kako će se to odraziti na klijente koji vrše upit za taj domen posredstvom drugih servera koji u svojoj bazi imaju zabeleženu prethodnu informaciju? Odgovor na ovo pitanje leži u ograničenju perioda važenja (engl. Time To Live, TTL) informacija koje je nadležni server dao. Ovaj parametar određuje nakon kog vremena će posrednički DNS serveri obnoviti informaciju u svojoj bazi vezanu za taj domen. Period važenja se izražava u sekundama i najčešće je postavljen na 86.400 sekundi, odnosno jedan dan. To u praksi znači da je maksimalno vreme (nakon izmene domena na nadležnom DNS serveru) tokom koga će klijenti dobijati zastarelu informaciju od posredničkih DNS servera jedan dan. Ostali sistemski parametri svake informacije o imenu domena su:
-
Serial: serijski broj zone koji se uvećava pri svakoj izmeni podataka, a služi ostalim serverima za utvrđivanje da li se informacija izmenila na glavnom serveru.
-
Refresh: broj sekundi nakon koga će slave i secondary serveri osvežiti svoje podatke za zonu.
-
Retry: broj sekundi nakon koga će slave i secondary serveri ponovo pokušati osvežavanje podataka sa master servera ukoliko prethodni pokušaj ne uspe.
-
Expire: broj sekundi nakon koga će slave i i secondary serveri odustati od pokušaja da osveže svoju bazu sa master servera ukoliko prethodni pokušaji ne uspeju.