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 wiarygodne nie gwarantowane Funkcjonalność (transmisja bez uszkodzeń i strat) Porządkowanie Potwierdzanie Ponawianie transmisji Wykrywanie powieleń Sterowanie przepływem Kontrola przeciążeń
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 (ISN A ) + 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 = ISN A +1 + Bit SYN =1 + nr sekwencji serwera (ISN B ) + rozmiar okna po stronie serwera Odbiór potwierdzenia serwera ustawienie odpowiednich buforów przez klienta + biy SYN=0 + SYNACK = ISN B +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