Warstwa aplikacji

Materiały edukacyjne z informatyki

Warstwa najważniejsza z punktu widzenia użytkownika, ponieważ zapewnia prezentację przekazanych za pomocą protokołów warstw niższych danych w zrozumiałej formie. Zawiera różnorodne procesy (usługi), określane mianem protokołów, gdy stanowią ściśle zdefiniowane standardy wymiany informacji. Większość tych procesów działa w architekturze klient-serwer, tzn. że na odległym hoście musi być uruchomiony serwer danej usługi, z którym łączy się klient z komputera lokalnego.

DNS (Domain Name System)

DNS to system, którego zadaniem jest zamienianie przyjaznej dla człowieka nazwy komputera (w tym nazwy domenowej) na jego adres IP. Wcześniej funkcję taką realizował lokalny i niewystarczający w przypadku wielkiej ilości komputerów w Internecie plik /etc/hosts (obecny też w Windows) zawierający ręcznie wprowadzane wpisy kojarzące adresy IP i nazwy komputerów.

Przestrzeń nazw w Internecie ma strukturę odwróconego drzewa, którego początkiem jest korzeń (root) oznaczany kropką (którą jednak pomija się w zapisie nazw komputerów). Pełną dokładną nazwę domenową (FQDN – Fully Qualified Domain Name) zapisuje się od prawej strony, począwszy od domen najogólniejszych, kończąc na nazwie konkretnej stacji.

Wśród domen ogólnych wyróżnia się domeny geograficzne, tj. dwuliterowe oznaczenia domen przyznanych poszczególnym krajom (.pl, .us, .uk, .ru) oraz domeny organizacyjne przyznawane w zależności od prowadzonej działalności (.com – firmy komercyjne, .edu – instytucje naukowe, .gov – agencje rządowe, .mil – organizacje wojskowe, .org – inne organizacje). W 2000 r. przyjęto kilka nowych nazw, m.in.: .info – do użytku ogólnego; .biz – dla biznesu; .pro – dla profesjonalistów. Organizacją zarządzającą domeną .pl jest NASK (Naukowa i Akademicka Sieć Komputerowa, http://www.dns.pl). W ramach domen geograficznych tworzone są domeny organizacyjne, np. www.firma.com.pl, występują też domeny regionalne (np. warszawa.pl) i inne (np. auto.pl). Komputery wchodzące w skład jakiejś domeny nadrzędnej (np. sklep1.firma.com.pl, skle2.firma.com.pl itd.) nie muszą należeć do tej samej sieci IP.

Serwery DNS

Serwer ma najczęściej pełne informacje o części całej przestrzeni nazw, czyli tzw. strefie. Dane pobiera z lokalnego pliku lub z innego serwera, który ma autoryzację dla strefy (inaczej: jest wiarygodnym serwerem dla danej strefy). Z powodu ilości wpisów w praktyce żaden serwer nie przechowuje wszystkich informacji np. o domenie .pl, stosuje się natomiast tzw. delegację strefy, czyli informacje dotyczące poddomen przechowywane są na wskazanych serwerach (tak więc baza nazw domenowych jest rozproszona).

Istnieją dwa rodzaje serwerów DNS: podstawowy (primary masters) i drugorzędny (zapasowy, secondary masters). Formalnie dla domeny wymagane są dwa serwery podstawowe, z których pierwszy przechowuje dane w pliku lokalnym, a drugi uzyskuje te informacje poprzez tzw. transfer strefy (zone transfer). Ze względu na drzewiastą strukturę przestrzeni nazw istnieje 13 głównych serwerów (root servers) DNS, których zadaniem jest przekazywanie informacji o adresach IP serwerów zarządzających domenami głównego poziomu (np. .edu, .com, .pl). Adresy IP tych serwerów muszą być zawarte w pliku konfiguracyjnym wszystkich pozostałych serwerów.

Proces odwrotny do usługi DNS, czyli tłumaczenia adresów IP na nazwy DNS, realizowany jest dzięki specjalnej domenie in-addr.arpa, w której znajdują się nazwy odpowiadające adresom IP. Przy czym w tzw. zapytaniu odwrotnym do serwera DNS adres IP, o którego nazwę domenową pytamy, podawany jest odwrotnie, np. 2.1.168.192.in-addr.arpa (chodzi o stację 192.168.1.2).

Proces rozwiązywania nazw

Do wyznaczania adresów IP służą specjalne programy zwane resolwerami (resolver). System operacyjny, aby określić adres IP danego hosta, przekazuje jego nazwę, np. www.firma.com.pl, resolwerowi i czeka na odpowiedź. Resolwer przesyła zapytanie wewnątrz pakietu UDP na 53 port SerweraA DNS. Ten z kolei rozpoczyna od pytania skierowanego do jednego z serwerów głównych, który w odpowiedzi podaje listę adresów IP serwerów mających autoryzację dla domeny .pl. Do któregoś z nich wysyłane jest kolejne pytanie, w odpowiedzi SerwerA otrzymuje listę serwerów dla domeny com.pl. Do jednego z nich wysyłane jest kolejne pytanie, w odpowiedzi otrzymujemy adresy (najczęściej dwa) serwerów DNS dla domeny firma.com.pl. Dopiero po ponownym pytaniu do któregoś z nich, SerwerA otrzyma adres IP hosta www.firma.com.pl i odeśle go resolwerowi.

Ponieważ proces rozwiązywania nazw DNS jest czasochłonny i skomplikowany, stosuje się buforowanie (caching) w pamięci podręcznej raz uzyskanych danych. W rzeczywistości więc SerwerA zanim wyśle pytanie do serwera głównego, sprawdza najpierw swoją pamięć podręczną w poszukiwaniu informacji o serwerach domen, kolejno: firma.com.pl, com.pl i pl. Aby buforowane dane były aktualne, oznacza się je wartością czasu życia (TTL – Time to Live), po którym następuje ich odświeżenie.

Zapytania resolvera kierowane do serwera DNS są rekurencyjne, tzn. w odpowiedzi oczekiwany jest adres IP rozwiązanej nazwy, natomiast zapytania między serwerami DNS są iteracyjne, tzn. serwer w odpowiedzi podaje najlepszą dostępną w danej chwili odpowiedź. Tak więc serwer wiarygodny dla domeny pl nie musi znać adresu IP serwera firma.com.pl, w odpowiedzi przekazuje tylko adres IP serwera com.pl.

Konfigurowanie usługi DNS

Możliwa jest konfiguracja ręczna lub automatyczna za pomocą mechanizmu DHCP (lub BOOTP). Podaje się informacje dotyczące: adresów IP serwerów DNS dla danej stacji, domyślnej domeny (dodawanej do samej nazwy stacji) oraz listy przeszukiwania (zawiera inne domeny, dodawane do samej nazwy stacji, jeżeli nie podano pełnej nazwy domenowej i jeżeli nazwa stworzona dzięki domenie domyślnej nie jest poprawna).

Konfiguracje resolwera w Linuksie (tzn. biblioteki systemowej świadczącej takie usługi) zawiera plik /etc/host.conf, w którym występują nast. wpisy:

order hosts, bind – kolejność przeszukiwania, najpierw plik /etc/hosts, później serwer DNS;
multi on – z pliku /etc/hosts zwrócone zostaną wszystkie wpisy dotyczące szukanej nazwy.

Dokładniejsza konfiguracja zawarta jest w pliku /etc/resolv.conf:

nameserver 192.168.1.2
nameserver 192.168.1.3 – definicje serwerów DNS
domain firma.com.pl – definicja domeny lokalnej
search sand.pl com.pl – definicja listy przeszukiwania
options ndots:2 – jeżeli ilość kropek w podanej nazwie będzie mniejsza od zdefiniowanej tu wartości (2), nazwa zostanie uzupełniona o domenę domyślną

Przy takiej konfiguracji polecenie ping komp01 spowoduje sprawdzenie najpierw pliku /etc/hosts, później wysłanie do jednego ze zdefiniowanych serwerów DNS trzech zapytań o host, kolejno: komp01.firma.com.pl, komp01.sand.pl i komp01. com.pl.

Z możliwych do zastosowania serwerów DNS w Linuksie najpopularniejsze są dwa: BIND (Berkeley Internet Name Domain, zobacz dalej) i djbdns (stworzony przez D.J. Bernsteina).

Baza danych DNS zawiera wpisy zwane rekordami zasobów (RR – Resource Record). Rekordy zasobów bazy DNS (resource records) oraz format komunikatu DNS zdefiniowane zostały w RFC 1033. Każdy rekord rezprezentuje jakiś typ określający rodzaj przechowywanych danych i klasę określającą rodzaj sieci (schematów adresowania), której dotyczą wpisy.

Pierwszy rekord bazy danych to tzw. rekord SOA (Start Of Authority) zawierający ogólne informacje o strefie, dla której serwer jest autorytatywny. Rekordy typu A wiążą kanoniczną nazwę hosta z adresem IP, rekordy typu CNAME zawierają alias oficjalnej nazwy hosta. Klasa IN oznacza adresowanie IP.

Znak @ w pliku konfiguracyjnym BINDA /etc/named.conf oznacza domenę początkową (zdefiniowaną we wspomnianym pliku named.conf). Wpisy niekończące się kropką (.) interpretowane są jako podrzędne wobec domeny początkowej, natomiast zakończone kropką (.) jako bezwzględne. Rekordy zasobów przechowywane są w plikach głównych, które mają następujący format: [domena] [ttl] [klasa] typ dane rekordu

  • domena – to nazwa domeny, której dotyczy wpis; jeżeli pole jest puste, wpis dotyczy domeny z poprzedniego rekordu.
  • ttl – liczba dziesiętna, określa czas ważności informacji w sekundach (od momentu uzyskania jej z serwera); jeżeli wartość nie jest określona, przyjmuje się minimalny czas podany w rekordzie SOA.
  • klasa – określa klasę adresu, dla sieci TCP/IP ma postać IN.
  • typ – określa typ rekordu, najczęściej są to: A, SOA, PTR i NS.
  • dane rekordu – pole zawierające dane związane z rekordem, jego format zależy od typu rekordu.

Rekord SOA znajduje się na początku pliku głównego wymienionego po słowie kluczowym primary w pliku konfiguracyjnym BINDA (named.conf), wskazuje, że kolejne wpisy zawierają informacje autorytatywne dla domeny; zawiera pola:

  • origin – kanoniczna nazwa hosta podstawowego serwera nazw dla danej domeny (podawana zwykle bezwzględnie). contact – adres ozosby odpowiedzialnej za utrzymanie domeny, znak @ zastępowany jest kropką (.).
  • serial – zawiera numer wersji pliku strefy wykorzystywany przez serwery zapasowe, zwykle ma postać daty i numeru aktualizacji, np. 2002100202.
  • refresh – wyrażony w sekundach czas, po którym serwery zapasowe powinny sprawdzić rekord SOA.
  • retry – wyrażony w sekundach czas, po którym serwer zapasowy ma ponawiać kontakt z serwerem podstawowym, jeżeli nie odświeży danych o strefie, np godzina.
  • expire – określa w sekundach czas, po którym serwer zapasowy powinien usunąć informacje o strefie, jeśli nie może skontaktować się z serwerem podstawowym, np. tydzień (604 800).
  • minimum – zawiera domyślny czas ttl w sekundach dla rekordów nie definiujących go jawnie, np. tydzień.

Rekord A wiąże adres IP z kanoniczną nazwą hosta. Adres podany jest w notacji kropkowej. Rekordy NS określają w polu danych rekordu podstawowe i zapasowe serwery stref. Rekordy CNAME definiują aliasy dla kanonicznych nazw hostów określonych w rekordach A. Rekordy PTR służą do odwrotnego odwzorowywania adresów IP na kanoniczne nazwy hostów w domenie in-addr.arp. Rekordy MX określają hosty wymieniające pocztę dla domeny (Mail Exchanger) i mają postać: [domena] [ttl] [klasa] MX priorytet nazwa_hosta.

Polecenia związane z serwerem nazw

nslookup nazwa_hosta – zwraca informacje o hoście;

nslookup – wyświetla używany serwer nazw i znak monitu >;

Po monicie można wpisać nazwę domeny – wyświetlane są rekordy A; lub: > set type=typ [SOA,MX,NS, CNAME, PTR,ANY] – wyświetlane będą rekordy określonego typu.

Inne narzędzia to: host i dig, a także pakiety dnswalk i nslint.

Na skróty
Kontakt