Queries (zapytania)

Oceń tę pracę

Zapytania (queries) są wiadomościami wysyłanymi do name server’a, by wymusić na nim odpowiedź. W obrębie Internetu zapytania podróżują poprzez UDP (User Datagram Protocole) lub połączenia TCP. Odpowiedź otrzymana od name server’a może być rozwiązaniem problemu (pytania) postawionego w zapytaniu, odesłaniem do innych name server’ów w celu dalszych poszukiwań, lub też odpowiedzią sygnalizującą wystąpienie błędu.

Generalnie, użytkownik sam nie generuje zapytań, przekazuje je tylko w postaci żądań obsługi do resolver’a, który wysyła dopiero właściwie sformułowane zapytania do name server’a. W przypadku wystąpienia błędów, to również resolver zajmuje się ich obsługą.

Zapytania DNS, jak i odpowiedzi na nie udzielone przez name server’y, są przesyłane w postaci standardowego komunikatu. Komunikat posiada ustalony format zawierający nagłówek i pola zawierające informacje o zapytaniach, odpowiedziach itp. Najważniejszym polem w nagłówku jest 4-bitowe pole opcode. Rozdziela ono różne rodzaje zapytań – z 16 możliwych wartości, jakie może przyjąć, jedna jest częścią oficjalnego protokołu (standard query), dwie są przeznaczone na opcje (inverse query i status query), zaś pozostałe są dowolne.

Rodzaje zapytań

Podstawowe dwa rodzaje zapytań stosowane podczas uzyskiwania informacji:

  • STANDARD QUERIES Standardowy typ zapytania specyfikuje nazwę domeny docelowej (QNAME), rodzaj zapytania oraz klasę (QCLASS) oraz pytanie o rekordy RR, które sięzgadzają.

Używając nazwy domeny odpytywanej, oraz pól QTYPE, QCLASS name server szuka pasujących do siebie rekordów RR. W przypadku rekordów powiązanych name server może jako wynik zwrócić rekord będący wskazaniem na inny name server, posiadający informację o interesujących nas rekordach lub wyjaśniających powiązania rekordów.

Na przykład, name server, który sam nie posiada żądanej informacji, zna inne name server’y, name server zwracający nazwę domeny w postaci powiązanych rekordach może również zwrócić jako efekt rekord przypisujący nazwie domeny jej adres.

INVERSE QUERIES

Możliwe jest wykonywanie przez name server’y zapytań odwróconych, które przypisują (map) pewien konkretny zasób do domeny lub nazw domen, będących w posiadaniu takich zasobów.

Na przykład, jeżeli zwykłe zapytanie może przypisać nazwę domeny do wpisu SOA w RR, to odwrócone zapytanie może z powrotem przypisać temu wpisowi rekordu nazwę domeny.

Implementacja jest opcjonalna dla serwerów DNS, jednak wymagane jest, by każdy name server był w stanie odczytać i zrozumieć komunikat odwróconego zapytania i zwrócić odpowiedź nie będącą błędem.

Tego typu zapytania są wykorzystywane głównie do celów debugging’u jak i zarządzania bazą danych serwera DNS.

Absolutnie nie wolno stosować odwróconych zapytań do przypisywania adresów host’ów ich nazwom. Do tego celu służy specjalna domena .in-addr.arp. W zależności od zaawansowania serwera, może on odpowiadać na dwa różne sposoby – nierekursywny i rekursywny.

  • nierekursywny Najprostszy sposób, w którym name server może odpowiadać używając tylko lokalnych informacji: odpowiedź zawiera komunikat obłędzie, odpowiedź, lub odnośnik do innego serwera bliższego udzielenia odpowiedzi. Wszystkie serwery muszą mieć obowiązkowo zaimplementowany ten sposób.
  • rekursywny Pozwala name server’owi „przejąć” rolę resolver’a, i zwrócić jako rezultat błąd, albo odpowiedź, nigdy natomiast nie może zwrócić dalszego odnośnika. Jest to opcja implementacyjna, nawet name server, który ma ją zaimplementowaną może ograniczyć jej działanie do wybranych klientów a innym odmówić.

Serwis rekursywny bywa pomocny w sytuacji, gdy:

  • klientem jest prymitywny zgłoszeniodawca, którego możliwości sprowadzają się wyłącznie do użycia bezpośredniej odpowiedzi
  • żądanie obsługi musi przekroczyć barierę protokołu, lub inne granice – w takim przypadku zgłoszenie jest wysyłane do serwera, który może pośredniczyć w komunikacji
  • organizuje się sieć w której chcemy zastąpić oddzielne cache’e dla każdego z klientów na rzecz jednego

Przykłady zapytań

Dla przykładu poniżej opisano procedurę postępowania jaką wykonują SLAVE SERVER i FORWARDER by odpowiedzieć na zapytanie. (resolve name server query).

Krok 1. SLAVE SERVER otrzymuje zapytanie o nazwę host’a, na które musi odpowiedzieć.

Krok 2. SLAVE SERVER wysyła pytania do wszystkich FORWARDER’ów, które zapisane są w boot file serwera, dopóki nie dostanie odpowiedzi lub lista FORWARDER’ów zostanie wyczerpana.

Krok 3. Jeżeli FORWARDER nie posiada żądanej informacji w lokalnym cach’upyta ROOT SERVER’y umieszczone w jego plikach konfiguracyjnych. Dzieje się tak aż do uzyskania odpowiedzi lub lista ROOT SERVER’ów zostanie wyczerpana.

Krok 4. ROOT SERVER podaje FORWARDER’owi informację z jakim serwerem w jakiej domenie ten musi się skontaktować dla odpytania o szukany host.

Krok 5. FORWARDER wysyła żądanie do serwera w tej domenie. Adres serwera otrzymuje od ROOT SERVER’a, którego właśnie przepytywał.

Krok 6. Serwer dostarcza informacji o serwerach na niższych piętrach w strukturze domeny i poddomen.

Krok 7. Kroki 5. i 6. są powtarzane dopóki FORWARDER nie otrzyma żądanej informacji lub możliwości uzyskania informacji od innych host’ów zostaną wyczerpane.

Krok 8. FORWARDER zwraca rezultat poszukiwań do SLAVE SERVER’a, nawet jeśli jest niepomyślny.

image_pdf

Dodaj komentarz