Protokoły

Transkrypt

Protokoły
Protokoły
Protokół IP
•
•
•
•
III warstwa modelu OSI (sieciowa)
Pakowanie i adresowanie przesyłanych danych
RFC 791
Pakiet składa się z:
– Adresu źródłowego
– Adresu docelowego
• W sieciach opartych o Ethernet protokół IP
wykorzystuje protokół ARP do odwzorowania
adresów IP w odpowiednie MAC adresy.
Podstawy – sposób działania
• Sprawdzenie czy podany adres jest lokalny czy zdalny
(odległy)
• Jeśli adres jest lokalny za pomocą ARP odnajdywany
jest (sieci Ethernet) adres MAC komputera docelowego i
tam dane są wysyłane
• Jeśli adres jest zdalny wówczas sprawdzana jest tablica
routingu i dane wstępnie przesyłane są do
odpowiedniego węzła, skąd przesyłane są dalej. Z
tablicy routingu odczytywany jest adres IP węzła oraz za
pomocą ARP adres MAC węzła.
• Po dotarciu do węzła następuje trasowanie znajdywanie optymalnej (w pewnym sensie) trasy jaką
pakiet będzie podróżował do komputera docelowego.
Adresy IP
• Adres IP składa się z 4 oktetów (czterech liczb 8 bitowych)
rozdzielonych kropkami:
192.168.0.2
• Liczby mogą przyjmować wartości od 0 do 255 ponieważ liczby są 8
bitowe (1 bajt)
192.263.201.1 – błędny adres!!!
• Sieć Internet – zbiór różnych podsieci porozrzucanych po całym
świecie, każda sieć składa się z komputerów (hostów)
• Każdy adres IP składa się z dwóch składników „ID sieci” oraz „ID
hosta”
– „ID sieci” – unikatowy na skalę światową identyfikator wskazujący
określoną sieć
– „ID hosta” – unikatowy w ramach danej sieci adres pojedynczego
komputera
Przykład – książki w bibliotece odnajdywane są wg. Szafa -> Półka ->
Tytuł książki, identycznie jest z Internetem Szafa i półka to konkretny
adres ID sieci, natomiast ID host odpowiada tytułowi książki
Adres IP cd.
W każdej sieci dwa unikatowe adresy:
1. Adres rozgłoszeniowy – adres hosta
składający się z samych 1 (w zapisie
binarnym) – służy wysyłaniu informacji
do wszystkich komputerów znajdujących
się w danej sieci
2. Adres sieci lokalnej – adres hosta
składający się z samych 0 – identyfikuje
on lokalną podsieć
Adres IP uwagi
• ID sieci musi być unikatowe na skalę światową
• ID sieci nie może wynosić 127 (%01111111) –
adres zarezerwowany do lokalnego adresu
zwrotnego
• ID sieci i ID hosta nie może składać się z
samych %1 – to adres zarezerwowany do
rozgłaszania
• ID sieci i ID hosta nie mogą zawierać samych
%0 – adres zarezerwowany do pakietów tylko
lokalnych nie przesyłanych przez router
• ID hostów nie mogą się duplikować w ramach
jednej sieci
Klasy adresów IP
Klas adresów IP do 5 różnych sposobów podziału
na część definiującą „ID sieci” / ”ID hosta”
• 5 klas adresów od A do E
• Klasy A, B i C – dostępne do użytku
powszechnego
• Klasa D – zarezerwowana dla specjalnych
aplikacji bazujących na adresowaniu grupowym
• Klasa E – klasa eksperymentalna
Klasy adresów
Klasa adresów
Zakres 1
Liczba sieci
Liczba hostów
A
1-126
126
16 777 214
B
128-191
16 384
65 534
C
192-223
2 097 152
254
D
224-239
Nie dotyczy
Nie dotyczy
E
240-254
Nie dotyczy
Nie dotyczy
Klasa
Oktet 1
Oktet 2
Oktet 3
Oktet 4
A
SSSSSSSS
HHHHHHHH
HHHHHHHH
HHHHHHHH
B
SSSSSSSS
SSSSSSSS
HHHHHHHH
HHHHHHHH
C
SSSSSSSS
SSSSSSSS
SSSSSSSS
HHHHHHHH
Maska podsieci
Wskazuje które bity adresu IP opisują adres sieci.
Typowe wartości dla adresów:
• Klasy A:
255.0.0.0 = 11111111.00000000.00000000.00000000
• Klasy B:
255.255.0.0 = 11111111.11111111.00000000.00000000
• Klasy C:
255.255.255.0=11111111.11111111.11111111.00000000
• Można też definiować własne podsieci w ramach
istniejących sieci. Wówczas wykorzystuje się
fragment adresu „ID hosta” do stworzenia takich
podsieci
Maska podsieci
• W celu umożliwienia dodatkowego podziału sieci na
podsieci wprowadza się maskę sieci.
• Maska sieci jest ciągiem binarnych jedynek
identyfikujących która część adresu IP odpowiada za
sieć, a która za komputery.
• Maska 11111111.11111111.11111111.11111100
w zapisie dziesiętnym 255.255.255.252, w zapisie
skróconym /30 informuje że dla np.. adresu IP
192.168.2.13 klasy C 192.168.2.0 to adres sieci,
pozostałe 6 najstarszych bitów najmłodszego słowa
adresu 13=%00001101 to adres podsieci czyli %11 = 3,
zaś %01=1 to adres komputera.
Budowa datagramu IP
• 0-3 - zawiera numer wersji protokołu IP (dla IPv4 jest to 4).
• 4-7 - długość samego nagłówka protokołu (bez danych).
• 8-15 - "typ usługi" (ang. Type of Service). Może służyć do określenia priorytetu
routowania
• 16 – 23 - całkowita długość pakietu (razem z danymi). Wartość minimalna to 576
oktetów, maksymalna to 65535
• 24-31 – 8 bitowy identyfikator pakietu, potrzebny między innymi do fragmentacji i
defragmentacji pakietów.
• 32-34 - 3-bitowe pole flagi, informacja czy pakiet może być fragmentowany czy nie
• 35 – 47 -13-bitowe pole służy do odpowiedniego "poukładania"
pofragmentowanych pakietów. Określa pozycję w oryginalnym
niepofragmentowanym pakiecie liczoną w 64-bitowych jednostkach
• 48 – 55 - TTL (8 bitów) życia pakietów (ang. time to live). Liczba z zakresu 0-255.
Przy przechodzeniu pakietu przez router jest ona zmniejszana o jeden. W
momencie osiągnięcia przez TTL zera, router odrzuca pakiet.
• 56 - 61, numer (identyfikator) protokołu warstwy wyższej, np.. ICMP (1), TCP (6)
czy UDP (17).
• 62 – 86 - Suma kontrolna nagłówka pakietu. Służy do kontroli, poprawności
transmisji nagłówka
• Dalsze pola to
– adres IP źródła
– Adres IP docelowy.
• Ostatnim, 32-bitowym polem są opcje, które w normalnej transmisji zwykle nie są
używane.
• Pole Padding (wypełnienie) jest opcjonalne i jego zawartością są zera dopełniające
długość nagłówka do wielokrotności 32 bitów
Protokoły warstwy
transportowej
Podstawy
•
•
Warstwa transportowa – łącznik pomiędzy
warstwą internetową i warstwą sieci
Odpowiada za dane!
(w.3 za dotarcie danych do aresata, w.2 za poprawną transmisję w sieciach
lokalnych)
•
•
Dane przesyłane w postaci segmentów –
odbiór strumienia danych od procesu, podział
na segmenty i ich transport
Dwa rodzaje protokołów:
–
–
Połączeniowy TCP
Bezpołączeniowy UDP
Zadanie warstwy transportowej
• Adresowanie (konkretnej usługi)
• Rozwiązywanie problemu z restartem lub zerowaniem
(możliwe są przerwy w działaniu sieci – połączenia
wówczas niezbędne jest zestawienie nowego połączenia
lub retransmisja utraconych danych)
• Multipleksowanie i demultipleksowanie – zbieranie danych z
różnych procesów (aplikacji) i umieszczanie ich w jednym
strumieniu danych przesyłanych przez sieć, oraz proces
odwrotny rozdział odbieranego strumienia na dane dla
konkretnych aplikacji
• Porządkowanie – ustalanie odpowiedniej kolejności
odebranych posegmentowanych danych, tak by stanowiły
spójną całość (problem występuje gdy duży zbiór danych
dzielony jest na mniejsze segmenty)
• Sterowanie przepływem i buforowanie danych (gdy jest ich
więcej niż możliwości transmisji sieci)
• Powielanie i radzenie sobie z powielonymi danymi
Definicje
• Protokół połączeniowy – zanim rozpocznie się transmisja
nawiązywane jest połączenie (dialog) pomiędzy dwoma
komputerami, dopiero po akceptacji połączenia przez obie strony
następuje transmisja danych
• Protokół bezpołączeniowy – dane wysyłane są bez uprzedniego
nawiązania połączenia pomiędzy komputerami
• Dostawy wiarygodne i nie gwarantowane:
– Wiarygodne – dostarczanie danych do adresata we właściwej kolejności
i bez uszkodzeń (TCP)
– Nie gwarantowane – brak powyższych założeń – w przypadku nie
działania lub błędnego działania sieci transmisja może być niepoprawna
UDP (ale mniejszy narzut danych sterujących)
(wiarygodność można osiągnąć przez transport danych w sposób
nie gwarantowany jeśli inne protokoły modelu zapewnią
wiarygodność)
• Dostawy stanowe i bezstanowe
– Stanowe – opierają się na sesji gdzie transmisja porcji danych musi być
odpowiednio potwierdzona
– Bezstanowe – każde żądanie jest niezależne – nie zawiera informacji
połączonych z innymi żądaniami
Porównanie
Możliwości \ Dostawy
Funkcjonalność
wiarygodne
nie gwarantowane


Porządkowanie


Potwierdzanie


Ponawianie transmisji


Wykrywanie powieleń


Sterowanie przepływem


Kontrola przeciążeń


(transmisja bez uszkodzeń i strat)
UDP
• Bezpołączeniowa, bezstanowa, nie gwarantowana
transmisja danych
• Identyfikacja procesu przez odpowiednie ID – problemy:
– Dynamiczne tworzenie i usuwanie procesów
– Możliwość zmiany procesu odbierającego dane, bez
informowania o tym procesu nadawczego
• Porty protokołu – identyfikuje usługę. Przy transmisji
konieczna jest więc znajomość portu adresata i na tej
podstawie realizowane jest transmisja
• Umożliwia wyszukanie błędów (brak korekcji błędów!!!)
Datagram UDP
•
•
•
•
Port nadawcy – nr portu nadającego wiadomość
Port odbiorcy – numer portu u odbiorcy
Długość – całkowita długość datagramu
Suma kontrola – uzupełniona o 1 suma 16-bitowych słów
w segmencie
Połączeniowe przesyłanie danych
Protokół TCP
• Obsługuje kontrolę przeciążeń, kontrolowanie i
sterowanie przepływu, porządkowanie danych.
• Nawiązanie połączenia -> Konieczna znajomość
numeru portu hosta i jego IP (socket) - gniazdo
czyli identyfikacja połączenia
• Nawiązane połączenie jest automatycznie
dwukierunkowe – przesył danych jest od A do B
i B do A. TCP to protokół point to point
Nawiązanie połączenia
• Są dwa komputery:
– klient – komputer inicjujący połączenie
– Server – komputer z którym chcemy nawiązać
połączenie
• Aplikacja (proces) informuje protokół TCP
że chce nawiązać połączenie z aplikacją
serwera
• Ustanawiane jest połączenie pomiędzy
TCP klienta a TCP serwera
Nawiązanie połączenia cd.
• Klient wysyła specjalny segement – nr
sekwencji klienta (ISNA) + ustawiony
bit SYN + rozmiar okna (wielkość
bufora do składowania danych)
• Odbiór przez serwer – wydzielenie
części TCP SYN + przydzielenie
odpowiedniego bufora + umieszczenie
wartości SYNACK = ISNA+1 + Bit SYN
=1 + nr sekwencji serwera (ISNB) +
rozmiar okna po stronie serwera
• Odbiór potwierdzenia serwera –
ustawienie odpowiednich buforów
przez klienta + biy SYN=0 + SYNACK
= ISNB+1
Inicjacja sesji
• Uzgodnienie parametrów jakości połączenia – QoS
(negocjacja opcji):
– Opóźnienie nawiązania połączenia
– Prawdopodobieństwo niepowodzenia nawiązania połączenia
– Przepustowość
(liczba bajtów transmitowanych przez sekundę)
–
–
–
–
–
–
–
–
Opóźnienie przejścia
Stopa błędu
Prawdopodobieństwo niepowodzenia przesyłu
Opóźnienie zwolnienia połączenia
Prawdopodobieństwo niepowodzenia zwolnienia połączenia
Ochrona
Priorytet
Odporność
Maksymalny rozmiar segmentu
• MMS (maximum segment size)
• Parametr określa maksymalną porcję danych
jako może zostać jednorazowo przesłana – w
postaci datagramu
• Wartość MMS zależna jest od rozmiaru bufora
odbiorcy
• MMS przesyłany jest od odbiorcy do nadawcy
aby poinformować komputer nadający o
rozmiarze bufora po stronie odbiornika.
Wówczas nadawca może przesłać segemnt
danych o rozmiarze <=MMS
Okna nadawania i odbioru TCP
• Klient i serwer implementują ideą okien
mieszczących kilka segmentów danych aby
rozwiązać problem szybkości transmisji
wiarygodnej (z potwierdzeniami)
• Jak to działa:
– Serwer może wysłać tyle segmentów danych bez
potwierdzenia jaki jest rozmiar okna nadawania.
– Jeśli zostanie odebrane przez serwer potwierdzenie
odebrania okno jest przesuwane o potwierdzone
segmenty
– Jeśli nie zostanie odebrane potwierdzenie przez
określony czas to taki segment traktowany jest jako
utracony i retransmitowany
Okno przeciążenia
• Stosowane by uniknąć problemu przy słabej
jakości łączach gdzie konieczna jest
retransmisja danych które nie dotarły do
adresata
• Okno przesuwne implementowane jest w
nadajniku i polega na zmniejszeniu rozmiaru
okna nadawania jeśli któryś segment nie został
potwierdzony
• Jeśli kolejne pakiety nie zostaną potwierdzone
okno nadawania wykładniczo jest zmniejszane.
Nagłówek TCP
Opis pól
•
•
•
•
•
•
•
•
•
•
Port nadawcy/odbiorcy - 16-bitowe numery oznaczające port źródłowy i docelowy
połączenia bazującego na TCP
Numer sekwencyjny - 32-bitowy identyfikator określający położenie danego segmentu w
większym zbiorze danych
Numer potwierdzenia - 32-bitowy numer będący potwierdzeniem otrzymania danego
segmentu przez odbiorcę,
Długość nagłówka - 4-bitowa liczba, która oznacza liczbę 32-bitowych wierszy nagłówka
Zarezerwowane - 6-bitowy ciąg zer, zarezerwowany dla ewentualnego przyszłego użytku.
Flagi 6-bitowa informacja/polecenie dotyczące bieżacego pakietu. Poszczególne flagi
oznaczają:
URG - informuje o istotności pola "Priorytet„; ACK - informuje o istotności pola "Numer
potwierdzenia„; PSH - wymusza przesłanie pakietu; RST - resetuje połączenie; SYN synchronizuje kolejne numery; FIN - oznacza zakończenie przekazu danych
Szerokość okna - 16-bitowa informacja o tym, ile danych może aktualnie przyjąć nadawca.
Suma kontrolna - 16-bitowa liczba, będąca wynikiem działań na bitach całego pakietu,
przez co pozwala na sprawdzenie tego pakietu pod względem poprawnoći danych.
Wskaźnik priorytetu - jeżeli flaga URG jest włączona, informuje o ważnośći pakietu.
Opcje - czyli ewentualne dodatkowe informacje i polecenia:
–
–
–
•
0 - koniec listy opcji
1 - brak działania
2 - ustawia maksymalna długość segmentu
W przypadku opcji 2 to tzw. Uzupełnienie, które dopełnia zerami długość segmentu do
wielokrotności 32 bitów (patrz: informacja o polu "Długość nagłówka")
Porównanie TCP i UDP
• Kiedy stosować TCP – prawie zawsze  (nie musimy się o nic
martwić)
• Kiedy stosować UDP – kiedy nie zależy nam na jakości połączenia
(coś może się zgubić), ale zależy nam na szybkości
– (mniejszy rozmiar nagłówka – mniejszy pakiet = szybsza łączność,
– mniejszy ruch w sieci związany z transmisją potwierdzeń = szybsza
łączność)
– Brak stanu połączenia – brak kontroli różnych parametrów połączenia =
większa wydajność serwera bo mniej rzeczy do zrobienia i większe
możliwości obsługi większej liczby klientów
• UDP stosujemy tam gdzie istotna jest szybkość połączenia –
–
–
–
–
transmisja dźwięku/wideo (najwyżej nie usłyszymy fragmentu informacji
Odwzorowywanie nazw sieciowych – serwery DNS
Protokoły routingu RIP
Protokoły zarządzania sesią SNMP