DNS - WPROWADZENIE
Transkrypt
DNS - WPROWADZENIE
DNS - WPROWADZENIE DNS pochodzi z angielskiego Domain Name Service DNS - jest "klejem" łączącym adresy sieciowe z obiektami (komputerami / host'ami) z nazwami jakimi się posługują wszyscy użytkownicy. Nazwy domen zaczynają się od najbardziej szczegółowej czyli hosta i przesuwają się do najbardziej ogólnej, czyli nazwy root. Nazwa domenowa, która zaczyna się od hosta i przechodzi całą drogę do korzenia jest zwana w pełni kwalifikowana nazwą domeny (ang. fully gualified domain name FQDN). Cel stosowanie DNS to zapewnienia odpowiedzi na następujące pytania: W jaki sposób można się z tym host'em skontaktować i gdzie powinna być przechowywana informacja o tym, z jakim adresem sieciowym należy nawiązać połączenie? Jeżeli host zmieni adres (np. z przyczyn technicznych), jak w takim razie inni użytkownicy Internetu będą się mogli o tym dowiedzieć? SYSTEM NAZW DNS hostname.(subdomain).topleveldomain gdzie odpowiednio: - hostname - nazwa host'a (komputera, któremu jest przypisywana nazwa) - subdomain - poddomena (może ich być kilka) - topleveldomain - główna domena Przykład: riad.usk.pk.edu.pl gdzie odpowiednio: - riad - nazwa konkretnego komputera - usk - domena Uczelniana Sieć Komp. - pk - domena Politechnika Krakowska - edu - strefa edukacyjna w Polsce - pl - domena Polska (topleveldomain) ZAPYTANIA DNS - CZ.I Serwer główny nie odpowiada bezpośrednio na zapytanie o adres, natomiast wskazuje lokalnemu serwerowi serwer, który może odpowiedzieć na zapytanie dotyczące domeny gumiak.com. Serwer główny przesyła serwerowi lokalnemu rekord zawierający nazwę odpowiedniego serwera dla domeny gumiak.com oraz rekord adresowy określający adres tego serwera. Następnie lokalny serwer wysyła do serwera domeny gumiak.com zapytanie o adres www. gumiak.com i otrzymuje odpowiedź. ZAPYTANIA DNS - CZ.II Jeżeli ma dojść do komunikacji między dwoma komputerami, program pobiera nazwę host'a i wysyła pytanie do specjalnego serwera (name server) o powiązany z tą nazwą adres sieciowy. Name server zna adresy wszystkich lokalnych komputerów w zdefiniowanej strefie, jaką obsługuje (sieci lokalnej). Name server zna adresy innych name server'ów w Internecie. Jeżeli więc skądś nadchodzi zapytanie (query) o adres komputera po podaniu nazwy tego komputera, name server może: odczytać (resolve) adres lokalnie spytać inne name server'y czy one nie znają adresu komputera, o który pyta komputer-klient. KOMUNIKAT DNS - CZ.I Komunikat DNS ma 12 bajtowy nagłówek stałej długości i cztery pola zmiennej długości. KOMUNIKAT DNS - CZ.II Poszczególne pola komunikatu DNS mają następujące znaczenie: identyfikacja - pole wypełniane przez klienta, tak aby mógł zidentyfikować odpowiedź serwera DNS; parametr - klasyfikuje komunikat QR - typ operacji 0 dla pytania, l dla odpowiedzi Oc - O pytanie standardowe, l pytanie odwrotne, 2 pytanie o status serwera, TC - komunikat skrócony (Prawda/Fałsz), AA - odpowiedź autorytatywna (Prawda/Fałsz), RD - żądana jest rekursja (Prawda/Fałsz), RA - rekursja jest dostępna (Prawda/Fałsz), Zero - zarezerwowane, ma wartość 0, Rc - typ odpowiedzi, 0 bez błędów, 3 błąd nazwy; KOMUNIKAT DNS - CZ.III liczba pytań - 1 lub więcej dla pytania, 0 dla odpowiedzi; liczba odpowiedzi - 0 dla pytania, l lub więcej dla odpowiedzi; liczba autorytetów - 0 dla pytania, l lub więcej dla odpowiedzi; liczba dodatkowych informacji - 0 dla pytania, l lub więcej dla odpowiedzi; pytania - każde pytanie składa się z napisu zawierającego adres internetowy, którego dotyczy pytanie, typu pytania i klasy pytania. KOMUNIKAT DNS - CZ.IV 1 A Adres IP, 2 NS Serwer nazw dla domeny (ang. Name setrer), 5 CNAME Nazwa kanoniczna (ang. canonical name), 12 PTR Rekord wskaźnikowy (ang. pointer record), 13 HINFO Informacja o hoście 15 MX Rekord wymiennika poczty (ang. mail exchange), 252 AXFR Żądanie przesłania strefy (ang. Request for zone transfer), 255 ANY Żądanie wszystkich rekordów (ang. reąuestfor all record); Odpowiedź, Autorytety, Dodatkowe informacje - wszystkie działają na tym samym formacie rekordu zasobów KOMUNIKAT DNS - CZ.V Rekord zasobów RR (ang resource record) zawiera następujące składowe: Pole nazwa domeny jest nazwą, do której odnoszą się zawarte w odpowiedzi informacje o zasobach. Pole typ określa jeden z kodów typu stosowanych w RR. Kody te są takie same, jak wartości typów zapytań, Pole klasa jest zwykle wartością 1 dla danych dotyczących sieci Internet. Pole czas życia jest liczbą sekund, określającą czas przechowywania informacji w pamięci podręcznej przez klienta. Zwykle TTL ustawiony jest na 2 dni. Pole długość danych zasobu określa ilość danych w polu dane zasobu. Format tych danych zależy od pola: typ. Jeśli typ jest określony jako 1 (rekord A), to dane zasobów są zapisane w postaci 4-bajtowego adresu IP . DOMENA ODWROTNA DNS Programy komunikacyjne przesyłają dane w postaci pakietów TCP/IP, które mogą zawierać jedynie adresy adres TCP/IP nadawcy. Jednak host odbiorca chciałby znać także nazwę a nie tylko adres host'a - nadawcy. Potrzebny jest więc mechanizm ponownej translacji z adresu na pełną nazwę komputera (full domain name). Oczywiście można do tego użyć name server'a. Do tego celu stworzono specjalną domenę w sieci Internet, nazwaną .inadress.arpa, która spełnia wyżej wymienione założenie. Wszystkie sieci TCP/IP są ulokowane w tej domenie. Przykład: Adres: Reverse Name: Nazwa komputera: 149.156.96.9 9.96.156.149.in-addr.arpa galaxy.uci.agh.edu.pl Dzięki tej domenie możliwy jest mechanizm bezbłędnego mapowania (mapping) adresu Internetowego na nazwę host'a, jak również lokalizacji wszystkich gateways w danej sieci lokalnej podłączonej do Internetu. SERWERY DNS ROOT SERVER Zna wszystkie top level domains w sieci Internet. Informacje o host'ach jest zbierana z tych domen 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. 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 oraz SECONDARY MASTER SERVER Może się zdarzyć, że serwer jest zarazem MASTER SERVER'em dla kilku domen – dla jednych PRIMARY, dla innych SECONDARY CACHING SERVER Wszystkie serwery (PRIMARY jak i SECONDARY) prowadzą cache'owanie informacji, które otrzymują. Wygasanie określone jest w polu ttl. 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. GNIAZDA WARSTWY IV - CZ.I Użytkownik połączenia TCP/UDP jest identyfikowany za pośrednictwem numeru, zwanego adresem portu (ang port address) Adres portu jest łączony z adresem internetowym IP hostu, tworząc gniazdo (ang. Socket) Para socketów identyfikuje oba końce każdego połączenia TCP/UDP SOCKET NADAJĄCY=ADRES IP NADFAWCY + ADRES PORTU ŹRÓDŁOWEGO SOCKET ODBIERAJĄCY=ADRES IP ODBIORCY + ADRES PORTU DOCELOWEGO Konkretne usługi sieciowe są przypisane na stałe do pewnych numerów portów. UWAGA: Możliwe jest teoretycznie przypisanie dla TCP numeru portu do jednej usługi, a dla UDP przypisanie tego samego numeru do zupełnie innej usługi, jednak w celu uniknięcia nieporozumień, nigdy się tego nie robi. GNIAZDA WARSTWY IV - CZ.II ftp-data ftp telnet Smtp time time rlp name whois domain domain mtp bootps bootpc tftp gopher rje finger http 20/tcp 21/tcp 23/tcp 25/tcp 37/tcp 37/udp 39/udp 42/udp 43/tcp 53/tcp 53/udp 57/tcp 67/udp 68/udp 69/udp 70/tcp 77/tcp 79/tcp 80/tcp # mail # timserver # timserver # resource # nameserver # nickname # deprecated # bootp server # bootp cl ient # gopher server Fragment plik /etc/services w systemie LINUX ROLA GNIAZD PRZY POŁACZENIU UWAGA: identyczne adresy portów źródłowych mogą być rozróżniane poprzez sprawdzenie dołączonych do nich adresów IP => wielu użytkowników może korzystać usług i sieciowej oferowanej za pośrednictwem tego samego portu TCP ( np. SMTP ) PROTOKÓŁ UDP W zestawie protokołów TCP/IP protokół datagramów użytkownika UDP (ang. User Datagram Protocol), zapewnia porty protokołów używane do rozróżniania programów wykonywanych na pojedynczej maszynie. Do przesyłania komunikatów między maszynami UDP używa podstawowego protokołu IP i ma tę samą niepewną, bezpołączeniową semantykę dostarczania datagramów co IP - nie używa potwierdzeń w celu upewnienia się, o dotarciu komunikatów i nie zapewnia kontroli szybkości przesyłania danych między maszynami. Program użytkowy korzystający z UDP musi na odpowiedzialność za rozwiązanie problemów niezawodności. siebie wziąć KOMUNIKAT UDP Pola port nadawcy i port odbiorcy (ang Source & Destination Port) zawierają 16bitowe numery portów UDP używane do odnajdywania procesów oczekujących na dany datagram. Pole port nadawcy jest opcjonalne. Pole długość (ang. Length) zawiera wartość odpowiadającą liczbie bajtów datagramu UDP wliczając nagłówek i dane. Minimalna więc wartość tego pola wynosi więc 8, czyli jest długością samego nagłówka. Pole suma kontrolna jest opcjonalne. Ponieważ jednak IP nie wylicza sum kontrolnych dla danych, suma kontrolna UDP jest jedyną gwarancją, że dane nie zostały uszkodzone. PROTOKÓŁ TCP - CZ.I Podstawowe usługi oferowane przez TCP (ang. Transmision Control Protocol) to : Zarządzanie danymi przesyłanymi za pośrednictwem sieci w oparciu o wcześniej zestawione połączenia (ang. Connection-oriented data managment). Podczas każdej transmisji TCP obsługuje transmisje danych w obie strony i kontroluje, czy całość przesyłanej informacji dotarła do punktów docelowych. Gwarantowanie poprawności przesyłanych informacji (ang. Reliable data transfer) Moduł TCP otrzymujący nadchodzące dane wykorzystuje mechanizm sum kontrolnych do sprawdzenia poprawności tych danych. Dodatkowo TCP używa liczników czasu do określenia, czy nie został przekroczony czas przewidziany na nadesłanie danych lub nadejścia potwierdzenia odbioru. Jednocześnie, podczas odbierania przychodzących danych moduł TCP sprawdza występowanie tzw. duplikatów. Przesyłanie danych w oparciu o koncepcję strumieni (ang. Steamoriented data transfer). TCP otrzymuje dane z warstw wyższych w postaci strumienia bajtów, a nie jakichkolwiek pakietów, ramek czy segmentów. Dopiero wewnątrz modułu TCP dane są grupowane w tzw. segmenty TCP PROTOKÓŁ TCP – CZ. II Sprawdzenie poprawności działania mechanizmu ponownego łączenia segmentów w strumień (ang. Resequencing) Celem zapewnienia prawidłowego odtworzenia strumienia danych z nadchodzących segmentów, TCP nadaje numery poszczególnym segmentom. Kontrola przepływu danych (ang. Flow control - sliding windows) Moduł otrzymujący dane może wpływać na ilość danych wysyłanych przez moduł nadsyłający. Wykorzystywane jest w tym celu pojęcie tzw. rozmiaru „okna”, który jest przesyłany od odbiorcę do nadawcy. Nadawca jest uprawniony do wysłania określonej ilości bajtów w ramach danego okna. Jednoczesna obsługa wielu sesji transmisyjnych (ang. Multiplexing) Pełna transmisja dwukanałowa (ang. Full duplex transmission) Zamykanie połączeń logicznych po sprawdzeniu, czy całość transmitowanych danych została przesłana prawidłowo (Graceful close). Obsługa poziomów bezpieczeństwa oraz priorytetów danych (ang. Precedence and security) SEGMENT TCP – CZ. I Numer portu źródłowego (ang. Source port), przeznaczenia (ang. Destination port) – identyfikują aplikacje wysyłającą odbierającą dane, te dwie wielkości wraz adresami IP źródła i przeznaczenia umieszczonymi w nagłówku IP, jednoznacznie identyfikują każde połączenie Numer sekwencyjny (ang. Sequence number) – identyfikuje bajt w strumieniu danych, przesyłanych między nadawcą a odbiorcą, który jest pierwszym bajtem w przesyłanym segmencie. Numer ten po osiągnięciu 2^32 - 1 rozpoczyna się znowu od zera Numer potwierdzenia – zawiera kolejny numer sekwencyjny, którego nadejścia spodziewa się wysyłający potwierdzenie. Pole to jest ważne przy ustawieniu bitu ACK. SEGMENT TCP – CZ. II Długość nagłówka (ang. Data offset) - pole podaje długość nagłówka w postaci słów 32 bitowych, typowy rozmiar bez opcji wynosi 20 bajtów. Bity znaczników (ang. Flags): URG - wskaźnik ważności pola wskaźnika przynaglającego ACK - wskaźnik ważności pola numer potwierdzenia PSH - odbiorca powinien jak najszybciej przesłać dane do aplikacji RST - restart połączenia SYN - synchronizacja numerów sekwencyjnych w celu inicjalizacji połączenia FIN zakończenie wysyłania danych SEGMENT TCP – CZ. III Rozmiar okna (ang. Window) – liczba bajtów, liczba bajtów poczynając od tego, który określony został przez pole numeru potwierdzenia, które odbiorca będzie w stanie zaakceptować Wskaźnik ważności (ang. Urgent pointer) - brane pod uwagę przy ustawieniu bitu URG, jest on dodatnim przesunięciem, które musi być dodane do pola numeru sekwencyjnego segmentu, aby uzyskać numer sekwencyjny ostatniego bajtu ważnych danych SEGMENT TCP – CZ. IV Opcje (ang. Options) – może określać np. maksymalną długość segmentu MSS (ustalana przy nawiązaniu połączenia, maksymalny rozmiar segmentu jaki nadawca chce otrzymać), często określa również współczynnik rozmiaru okna (zwykle w bajtach, przy ustawieniu skala okna jest ustawiona na F wówczas rozmiar okna jest mnożony przez 2^F, przy czym maksymalnie F=14) oraz znaczniki czasu wykorzystywane przy pomiarze czasu dostarczania pakietu. Suma kontrolna (ang. Checksum) – liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej POŁĄCZENIA TCP NAWIĄZYWANIE POŁĄCZENIA TCP Proces nawiązania połączenia składa się z 3 kroków („three way handshake”) : Strona, która wysyła zapytania (zwykle zwana klientem) nadaje segment SYN, określający numer portu serwera, z którym klient chce się połączyć, a także początkowy numer sekwencyjny klienta Serwer odpowiada, wysyłając segment SYN zawierający początkowy numer sekwencyjny . Ponadto serwer potwierdza odebranie segmentu SYN klienta, wysyłając (ACK) z nadesłanym przez klienta INS plus jeden. Klient potwierdza nadesłany przez serwer segment SYN – wysyłając ACK z INS serwera powiększony o jeden Strona, która wysyła pierwszy SYN wykonuje tak zwane aktywne otwarcie. Druga strona, która odbiera SYN i wysyła w odpowiedzi segment SYN, wykonuje tak zwane pasywne otwarcie. ZAKOŃCZENIE POŁĄCZENIA TCP Ponieważ połączenie TCP jest połączeniem full-duplex, to każdy z kierunków musi zostać zamknięty niezależnie. Odebranie FIN oznacza jedynie, że w tym kierunku połączenia nie będą płynęły już dane. TCP może nadal wysyłać dane po odebraniu FIN (połączenie półzamknięte). W celu pełnego zamknięcia połączenia druga strona musi wykonać podobną sekwencję operacji (FIN, oraz potwierdzenie ACK FIN). DANE INTERAKTYWNE Przy wydaniu polecenia interaktywnego typu Rlogin i wpisywaniu kolejnych znaków (każde wciśnięcie klawisza) powoduje wysyłanie od klienta do serwera pakietów danych. Ponadto Rlogin ma funkcję wysyłania przez system odległy (serwer) echa tych znaków, które wpisujemy (jako klienci). W połączeniu typu Rlogin pomiędzy klientem, a serwerem zwykle jest przesyłany 1 bajt w segmencie. Takie rozwiązanie generuje pakiety o długości 41 bajtów: 20 bajtów nagłówek IP, 20 bajtów nagłówek TCP i 1 bajt danych. W usłudze Telnet/SSH jest już opcja pozwalająca na przesyłanie od klienta do serwera całych linii tekstu, co znacznie redukuje obciążenie sieci. MECHANIZM PRZUWNEGO OKNA W sterowaniu przepływem danych masowych jest wykorzystywany mechanizm przesuwnego okna (sliding window). Na rysunku liczby od 1 do 11 są numerami kolejnych bajtów. Okno, o którym informacje podaje odbiorca, nazywane jest oknem oferowanym (offered window) Rozmiar okna jest uzależniony od potwierdzonego numeru sekwencyjnego. Nadawca liczy wielkość okna użytecznego (usable window), które określa, ile danych może być przesłanych natychmiast. SZEROKOŚĆ OKNA A WYDAJNOŚĆ Mechanizm ślizgającego okna pozwala na określenie maksymalnej przepustowości w połączeniu TCP, która zależy od szerokości okna (W), czasu propagacji (D) i prędkości transmisji (R). Dla zasad doboru szerokości okna wprowadzono współczynnik znormalizowanej przepustowości (S). D – jest to czas propagacji pomiędzy źródłem a odbiorcą w połączeniu TCP (czas przesłania i czas potwierdzenia wynosi 2D) W – rozmiar okna (w oktetach) R – szybkość transmisji (bps) 1 S = 4W RD W > RD / 4 W < RD / 4 Gdyby źródło nie było ograniczone szerokością okna to całkowita możliwa transmisja wynosiłaby 2RD bitów (2RD bitów = 2RD/8 bajtów = RD/4 bajtów). W rzeczywistości jednak transmisja źródła jest limitowana do szerokości okna. Zatem jeżeli jest spełniony warunek W>RD/4 to osiągamy maksymalną przepustowość połączenia TCP. STEROWANIE OKNEM ODBIORCA NADAWCA S N = 1 0 0 1 1000 1001 2400 2401 1000 S N = 1 2 0 1 1001 2400 2401 S N = 1 4 0 1 1000 1601 2401 A = 1000 1001 2001 1 2401 , 601 = 1 W SN SN 1600 1601 2001 = = 000 16 18 1600 1601 2600 2601 01 01 S N = 2 0 0 1 2601 S N = 2 2 0 1 1600 1601 2001 2601 S N = 2 4 0 1 1600 1601 2600 2601 A = 2 6 0 1 , 1600 1601 4000 4001 W = 1 4 0 0 2600 2601 4000 4001