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