Name server’y są magazynem informacji składających się na bazę danych domeny. Baza danych podzielona jest na sekcje – strefy, które są później dystrybuowane pomiędzy serwerami. Jakkolwiek name server’y mogą spełniać różne funkcje, to głównym ich zadaniem jest odpowiadanie na zapytania, używając do tego informacji zawartych w bazie danych.
Dane o strefach są osiągalne z kilku name server’ów, by zapewnić dostęp do informacji nawet w przypadku awarii komputera lub łączy komunikacyjnych. Absolutnie wymagane jest, by dane o strefach były umieszczone na conajmniej dwóch serwerach.
Ponieważ name server przechowuje tylko niewielki wycinek drzewa domeny (i dla niej jest „autorytetem”), może również trzymać dane z innych części drzewa zawartą w np. cache’u (są one nieautoryzowane). Ponieważ name server zachowuje odpowiedzi udzielone na zapytania, ten któremu udzielono informacji może stwierdzić, czy dana odpowiedź była miarodajna czy nie.
Dla każdej domeny Internetowej potrzebne jest uruchomienie name server’a. Dla domen głównych (top level domains) jest to wymóg konieczny, natomiast jest bardzo zalecane uruchamianie name server’a w każdej poddomenie (subdomain).
W ten sposób struktura name server’ów będzie odpowiadać hierarchicznej strukturze nazw domen. Zatem potrzebne są następujące serwery:
- ROOT SERVER dla trzymania informacji wszystkich domen głównych
- NAME SERVER dla każdej domeny głównej
- NAME SERVER dla wszystkich poddomen
- NAME SERVER dla każdej domeny odwróconej (reverse domain – .in-addr.arpa)
Przykład:
Name Server dla domeny: .pl Name Server dla domeny: .edu.pl Name Server dla domeny: .pk.edu.pl Name Server dla domeny: .usk.pk.edu.pl Name Server dla domeny: .156.149.in-addr.arpa (...)
Rodzaje name serwerów
Rozróżnia się pięć podstawowych typów name server’ów:
- ROOT SERVER
- MASTER SERVER
- CACHING SERVER
- FORWARDING SERVER
- SLAVE SERVER
ROOT SERVER
Zna wszystkie top level domains w sieci Internet. Informacje o host’ach jest zbierana z tych domen. Na przykład ROOT SERVER nie zna w ogóle lokalnej poddomeny usk.pk.edu.pl. Jednak poprzez przeprowadzenie zapytania dla komputera z innej strefy (name server query) ROOT SERVER może stwierdzić miarodajnie o istnieniu danego host’a w tej poddomenie.
Po gruntownej reorganizacji w strukturze ROOT SERVER’ów Internetu obecnie funkcjonują ROOT SERVER’y podane poniżej:
Nazwa ROOT SERER'a Adres IP A.ROOT-SERVERS.NET 198.41.0.4 B.ROOT-SERVERS.NET 128.9.0.107 C.ROOT-SERVERS.NET 192.33.4.12 D.ROOT-SERVERS.NET 128.8.10.90 E.ROOT-SERVERS.NET 192.203.230.10 F.ROOT-SERVERS.NET 192.5.5.241 G.ROOT-SERVERS.NET 192.112.36.4 H.ROOT-SERVERS.NET 128.63.2.53 I.ROOT-SERVERS.NET 192.36.148.17 O tym, który serwer jest ROOT SERVER'em decyduje NIC (Network Information Center).
MASTER SERVER
Jest „miarodajny” dla całego obszaru bieżącej domeny, prowadzi bazy danych dla całej strefy.
Istnieją dwa rodzaje MASTER SERVER’ow:
- PRIMARY MASTER SERVER
- SECONDARY MASTER SERVER
Może się zdarzyć, że serwer jest zarazem MASTER SERVER’em dla kilku domen – dla jednych PRIMARY MASTER SERVER’em, dla innych SECONDARY MASTER SERVER’em.
Ładowanie plików z bazy danych odbywa się za pomocą PRIMARY MASTER SERVERA. PRIMARY MASTER SERVER ładuje bazę danych z pliku znajdującego się na dysku. Natomiast SECONDARY MASTER SERVER otrzymuje pełnomocnictwo (authority) wraz z bazą danych od PRIMARY MASTER SERVER’a.
Podczas inicjalizacji systemu, SECONDARY MASTER SERVER ładuje dane dotyczące strefy z zapasowej kopii danych. Później jej zawartość jest sprawdzana z bazą danych na głównym serwerze i w razie potrzeby modyfikowana.
W czasie pracy serwerów SECONDARY MASTER SERVER co jakiś czas sprawdza zgodność danych u siebie z zawartością serwera głównego. Jeżeli na PRIMARY MASTER SERVERze nastąpiły zmiany, aktualne dane są kopiowane przez sieć.
MASTER SERVER może rozesłać potwierdzenie pełnomocnictw dla poddomen innym MASTER SERVER’om.
Każda domena powinna posiadać przynajmniej dwa MASTER SERVER’y – jeden PRIMARY i jeden (lub więcej) SECONDARY. Serwery zapasowe mogą pracować jako serwery backup’owe, w razie gdy serwer główny jest przeładowany, psuje się lub jest prowadzona konserwacja.
CACHING SERVER
Wszystkie serwery (PRIMARY jak i SECONDARY) prowadzą cache’owanie informacji, które otrzymują, dla poprawienia wydajności i szybkości obsługi. Dzieje się tak aż do zdezaktualizowania danych.
Wygasanie określone jest w polu ttl , które jest zawsze dołączane do danych dostarczanych serwerowi. Ono właśnie określa czas w jakim informacje są aktualne.
CACHING SERVER’y nie mają pełnomocnictw dla żadnej strefy, w związku z tym nie zarządzają żadnymi bazami danych. Mogą natomiast odpowiadać poprzez wysyłanie queries (zapytań) do innych serwerów posiadających takie pełnomocnictwa a dane z zapytań są później przechowywane (aż do wyczerpania daty ważności).
FORWARDING SERVER (FORWARDER)
FORWARDER’em może być każdy serwer w Internecie. Może nim być również MASTER SERVER (główny lub zapasowy) lub CACHING SERVER.
Głównym zadaniem FORWARDER’ów jest przeprowadzanie rekursywnych zapytań, które nie mogły zostać rozwiązane (resolved) lokalnie.
FORWARDER ma pełny dostęp do Internetu, przez co jest w stanie otrzymać każdą informację (nieosiągalną w lokalnych CACHE SERVER’ach) od ROOT SERVER’ów.
Ponieważ FORWARDER’y otrzymują wiele zgłoszeń od SLAVE SERVER’ów tendencją jest posiadanie przez nie większego cache’a lokalnego niż mają SLAVE SERVER’y. Dzięki takiemu rozwiązaniu wszystkie hosty w domenie korzystają z tego większego cache’a, co powoduje zredukowanie liczby całkowitej liczby zgłoszeń i przesyłania ich poza Internet do ROOT SERVER’ów. Oczywiście zmniejsza to stan obciążenia sieci i komputerów (tzw. load).
Konfiguracja zawierająca SLAVE SERVER i FORWARDER jest przydatna w momencie, gdy nie ma potrzeby, aby każdy serwer z domeny komunikował się z wszystkimi innymi serwerami w Internecie.
Jest możliwe prowadzenie DNS’u na lokalnej sieci komputerowej bez potrzeby zakładania FORWARDER’a. (Przykładowo: sieć lokalna nie włączona do Internetu).
Należy jednak pamiętać, iż bez uruchomionego FORWARDER’a nasz system nie ma dostępu do ROOT SERVER’ów w Internecie.
SLAVE SERVER
Ponieważ nie posiada nie posiada bezpośredniego dostępu do Internetu, w związku z tym nie może bezpośrednio kontaktować się z np. ROOT SERVER’ami by uzyskać niedostępną w lokalnym systemie.
Zamiast tego, SLAVE SERVER wysyła zapytania (queries) do wszystkich FORWARD’erów wyszczególnionych w swoim pliku konfiguracyjnym. Wysyłane one są aż do otrzymania informacji, lub wyczerpania listy FORWARDEDR’ów.
W miarę jak SLAVE SERVER’y żądają nowych informacji do FORWARDER’ów, te przechowują je we własnych cache’ach.
Poniższy Rysunek 3. może zilustrować zależności pomiędzy różnymi rodzajami name server’ów.