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