Sr-5-wyk-1.0-Slajd17
Rekurencyjne tłumaczenie nazw
Rekurencyjne tłumaczenie nazw polega na zleceniu translacji nazwy pojedynczemu serwerowi. Serwer domeny głównej nie znając odpowiedzi na pytanie przekazuje je dalej, nie odsyłając odpowiedzi od razu klientowi. Zapytanie przekazywane jest do serwera, który powinien znać odpowiedź lub takiego, który będzie w stanie przeprowadzić dalszy proces tłumaczenia nazwy. W przedstawionym przykładzie serwer domeny głównej przekazuje zapytanie do serwera domeny pl , ten do serwera domeny poznan.pl , a ten w końcu do serwera domeny put.poznan.pl , gdzie następuje ostateczne przetłumaczenie nazwy na adres. Odpowiedź wraca tą samą drogą, ale w przeciwnym kierunku.
Z punktu widzenia klienta, odpowiedź zawsze nadchodzi z serwera, który został odpytany, co jest wygodne, gdyż upraszcza oprogramowanie klienta. Wadą tego podejścia jest większe zaangażowanie poszczególnych serwerów w proces tłumaczenia nazw, co pociąga za sobą ich większe obciążenie. W praktyce więc serwery domeny głównej nie realizują zapytań rekurencyjnych. Inną zaletą odpytywania rekurencyjnego jest oszczędność komunikacji. Odpytywanie odległych (w sensie geograficznym) serwerów nazw w trybie iteracyjnym pociąga za sobą konieczność przesyłania komunikatów na duże odległości (przez wiele routerów). W trybie rekurencyjnym informacja przekazywana jest na mniejsze odległości.
Przesyłanie odpowiedzi wykorzystywane jest do wypełniania pamięci podręcznych poszczególnych serwerów. Przykładowo serwer domeny pl po wykonaniu powyższego zapytania uzyskuje informację o adresie serwera nazw dla domeny put.poznan.pl , którą to informację może wykorzystać w przyszłości dla zoptymalizowania następnego pytania o inny komputer z tej domeny. W ten sposób postępuje proces uczenia się serwerów, w którym dzięki przechowywaniu podręcznemu serwery są w stanie bezpośrednio odpowiedzieć na najczęściej zadawane pytania.
W praktyce zapytania zgłaszane przez klientów nie są wysyłane bezpośrednio do serwera domeny głównej, ale do lokalnego serwera nazw, którego głównym zadaniem jest pośredniczenie w tłumaczeniu nazw. Serwer taki ma za zadanie odpytywanie innych serwerów w celu uzyskania odpowiedzi i następnie przechowuje podręcznie uzyskane wyniki. Ponieważ serwer taki znajduje się blisko klienta, dostęp do niego jest bardzo szybki. Po pewnym czasie serwer taki zna również odpowiedzi na dużą część pytań klientów lub przynajmniej zna serwery nazw głównych domen, co pozwoli w przyszłości szybko uzyskać właściwą odpowiedź. Z drugiej strony uruchomienie lokalnego serwera zwalnia analizator nazw klienta z konieczności przechowywania listy adresów serwerów nazw domeny głównej. Wystarczy w celu odwzorowania nazwy posłużyć się adresem lokalnego serwera nazw.